Swap lets you change the class name of an instance and copy, cut. and paste attributes, properties, and tags.
Swap’s class converter leverages superclass, property, and pre-defined conversion data in tandem with your conversion history to dynamically predict what classes you are searching for with extreme accuracy. To increase your typing speed, Swap lets you tap the SPACE or TAB key on your keyboard to fill entire words within class names; See it in action below.
You can even control whether deprecated classes show up in suggestions by changing the “Deprecated Objects Shown” setting in Studio settings, making Swap feel it’s part of Studio.
When you’re ready to convert a class, you can do it any way you’d like. The helpful guide below shows you what each option does.
Insert and Include Descendants: Clones selected objects and their descendants and converts the clones of the selected objects to their target class.
Insert and Exclude Descendants: Clones selected objects and converts them to the target class.
Replace and Include Descendants: Converts selected objects to the target class and keeps their descendants.
Replace and Exclude Descendants: Converts selected objects to the target class and removes their descendants.
Once you’re done converting a class, you’ll notice that attributes and tags all carry over to the new class. You’ll even see property values that you set as the class you’re converting change to the new class; This is especially helpful when dealing with welds and other constraints.
When you just need to move some attributes or tags around, there’s a way to do that too. Every action (copy, cut, and paste) has a shortcut so you can do even faster with just the press of a few keys.
Script Injection: Is required if the class you are converting to is a script or has a descendant that is a script. This is also required if you want to change a script’s source when pasting properties.
HTTP Requests: are required for initial setup. After, you do not need to keep them enabled but doing so may result in more errors over time.
Descendants of converted classes don’t disappear when undoing the action
There is more than one way of converting classes
You can find classes faster
Suggestions (based off of conversion history, analysis of properties, superclass heritage, and a handpicked list of most compatible classes) appear when selecting multiple classes of different types
This update improves search, helps make the transition over to a new class easier, greatly expands on the copy/paste attributes feature, and includes a few changes and bug fixes.
A few changes have been made to improve class suggestions in Swap.
More recommendations have been added for WedgeParts, Humanoids, Sounds, and Configurations when nothing is being searched for.
Same-class results have been deprioritized in searches to allow more relevant classes to appear. If you convert to the same class, the class will be re-prioritized since conversion history has a large influence on results.
Just want to comment since there are basically none but your own, this plugin is fantastic; it is significantly better than Reclass and better looking as well.
The fact that it is free is absolutely astounding and is well appreciated. I was a Reclass user prior - and, as soon as I saw this - I switched. Haven’t regretted doing so, thanks for making this!
This update contains a few bug fixes to address problems created by some classes, includes changes to class data sourcing, and greatly improves class recommendations once again.
Changes:
Swap acquires the latest class data from a different source (s3.amazonaws.com → raw.githubusercontent.com). If you’ve been using Swap for a few months now, you may not see an HTTP request permission prompt from Roblox Studio.
Bug Fixes:
DynamicMesh now appears as EditableMesh in search and when converted to
Some classes like “Player” and “PluginAction” are no longer convertible because they have special Parent property or creation restrictions. These classes will not appear in searches and dont’t count as a selectable class anymore.
Full Excluded Classes List
AdvancedDragger
Breakpoint
DebuggerWatch
Dragger
GetTextBoundsParams
Noise
ParabolaAdornment
Player
PluginAction
RobloxEditableImage
StudioAttachment
StudioCallout
TrackerStreamAnimation
Improvements:
Contextual suggestions now consider superclass relatability and built-in recommendations when suggesting classes as you type
The library of built-in suggestions, that recommend classes when you haven’t typed anything, has been expanded from 38 to over 200.
This update and updates to all linked items fixes a major bug with TextBoxes. When TextBoxes were automatically made traversable in a recent update, it, combined with the existing system, caused text to be improperly positioned.
An update that reimplements the original text traversing system is coming soon to all affected items.
An error appeared in the output if anything was pasted without something being copied first
Improvements:
Update On Text Traversing
The system used to automatically move text so the cursor always stays in view (scrollable text) has been added back to Swap, CS Studio, and Performance. It will be added to CFS later.
The cut tool works like you’d normally expect: data from a chosen type is copied and removed from the object it was copied from. Using the cut tool on properties is functionally the same as using copy tool.
For classes that start with the same letters like “ImageLabel” and “ImageButton” or “TextLabel”, “TextButton”, and “TextBox” and often require a lot of typing to select, pressing the tab key or the space bar instantly fills words within class names.
Here’s what selecting one of these classes looked like before:
Now this is what it looks like:
Full release notes:
Bug fixes:
Class converter dropdown menu appeared after pressing enter to exit the search field while no class is selected
Class converter animation broke when instantly selecting no or invalid classes and then selecting valid classes
Some copied properties did not paste to objects
Changes:
Copying no attributes or tags will no longer empty the clipboard
When no class has been selected, instead of clearing the text field when focusing, text now clears when leaving
Improvements:
Better error reporting in the output
Resolved unnecessary checks while replacing classes and during Studio theme changes
Changed default recommendation Shirt --> Accessory to Shirt --> ShirtGraphic
Excluded the following classes from appearing in search and qualifying as a valid class in Swap’s class converter: (If you are affected by this, please reply below)
UserNotificationPayload
UserNotificationPayloadAnalyticsData
UserNotificationPayloadJoinExperience
UserNotificationPayloadParameterValue
ReflectionMetadataClass
ReflectionMetadataEnum
ReflectionMetadataEnums
ReflectionMetadataEvents
ReflectionMetadataClasses
ReflectionMetadataMember
ReflectionMetadataCallbacks
ReflectionMetadataFunctions
ReflectionMetadataEnumItem
ReflectionMetadataProperties
ReflectionMetadataYieldFunctions
HiddenSurfaceRemovalAsset
UI changes for a smaller overall horizontal size
Features:
Cut tool for attributes and tags (properties is available but is functionally the same as the copy tool)
Tab and space to fill words within class names like “t” → “text” in the class: “TextButton”
And in addition to that, Swap also automatically changes instance-type property values. This means that welded parts converted to MeshParts, SpawnPoints, etc, do not need to be re-welded.
In the latest update of Swap, warnings in the output have been replaced without pop-up widgets to more clearly display problems and how to resolve them.
There’s also now a distinction between when you haven’t selected a valid class and when there is nothing recommended.
And objects that can only be parented to a limited number of other objects will no longer causes errors to appear in the output. Instead, they will silently be deleted.
In Eltobb’s reclass, reclassifying an instance to an ImageButton or other instances can result in issues where events connections from the parent instance, such as an ImageButton MouseHover event inside a local script, fail to function correctly, does your plugin by chance not have this problem?
(It’s quite possible that any sort of scripts fail to properly connect to events of any kind of instance when reclassed, but i’ve only personally encountered this with textbuttons and image buttons since i dont really reclass anything else)
Are you trying to change the class of an object during runtime: while events are connected to that instance? Could you also elaborate on how your LocalScript is getting the instance value of that ImageButton/Object?
Not during runtime no, what I did was i took a frame, and then reclassed it to an imagebutton, then whenever i put a local script inside of the image button and connect to the imagebutton via any connections like MouseEnter, it simply doesn’t work, i could try to even do a simple print and it wouldn’t work.
local button = script.Parent
button.MouseEnter:Connect(function()
This is how i connect to the events.
end)
there isnt any problems with my code considering i copy and paste from other already working local scripts and it just doesn’t seem to actually work