As a small piece of API cleanup, we’ll soon be changing the base class of BackpackItem from Instance to Model. Sounds scary but this effectively just means that Tools will start acting like Models:
- Tools will remain Tools as they always have been, but…
- They’ll have a Pivot / PrimaryPart (so PivotTo / MoveTo etc can be called on them)
- The Roblox Studio draggers will start treating them exactly like any other Model
- They’ll still have the same pick up / equip / drop etc behaviors you expect from them
We plan to release this change on January 31.
Originally Tools were simple objects: Just containers with a single Handle part and a couple of scripts under them. Over time they’ve become more complicated, frequently containing many parts.
Over time Models have gained significant functionality such as pivots, and parts of the engine such as the package system and the Studio draggers have grown to depend on this extra functionality.
That means that Tools have been left as an awkward edge case, often requiring extra code in Studio tooling and other parts of the engine. The package system doesn’t even handle Tools gracefully: Tools that are packages count as modified if you drag them!
Changing the base class to Model eliminates all the odd edge case behaviors around Tools, having them take advantage of well-tested Model behaviors instead.
We don’t believe that there should be any backwards compatibility issues related to this change. To be extra safe, you can double check any cases in your code where you call
:IsA("Model") in a context where Tools may be present, and make sure that nothing will go wrong when
tool:IsA("Model") starts returning true.
Thanks for bringing up your concerns about existing code that uses this method to check for characters. We’ll do some analysis on this case and get back to you with our plans from there (work with devs to update that code, re-evaluate the change, or have some shim for that case, or some other options… there’s a lot of ways we could handle it).
Let us know if you have any concerns about the change.