Dropper - The external RBXM inserter

This post needs to be remade, Dropper v2 is considerably more advanced than this post lets on, also it costs money now so uh…

Do you ever wish you could just insert an RBXM from GitHub directly instead of downloading it and dragging it in? Well now you can, I’ve been working on this for a few days

Dropper


Get Dropper

Dropper allows you to insert an RBXM from anywhere, either with a URI or rbxasset ID. Simply type your URL into the box, press Insert and there’s your new model inserted.

image
image

Limitations

As with any RBXM implementation, there will be a few limitations, namely a few prop mappings and properties that cant be scripted. Right now, the RBXM inserter cannot insert parts or unions.

This inserter also does not support the zstd compression scheme, however no user-created models seem to compress using this right now, so shouldn’t be an issue unless you’re trying to insert Roblox created models

36 Likes

Very nice! I’m sure this will be very helpful for groups and such, and compiling ROBLOX plugins! Thanks for the great plugin @metatablecatmaid!

I was looking for rbxm inserter for years. I hope you are ok if I will use your code in some of my plugins?

LXM, the RBXM implementation used is available here, I assume thats what you want :slight_smile:

1 Like

The irony! I’ve been working on my own implementation of a RBXM inserter to better understand the format, but I’ve come across quite a few setbacks. Thanks for linking LXM, I’ll look into it to see what I’ve been doing wrong.

Sorry for the bump, but here’s an suggestion: if an instance is selected, it should insert the instance there, instead of only putting it in workspace unless there’s no selection

Im planning to rewrite this ontop of Tabby (and also improve the lxm inserter somewhat).

On your question, what would you expect to happen if multiple instances are selected?

1 Like

Nothing. Should just be inserted in workspace regardless just like any other model you’ve ever used. Getting into selection is too complex for something as simple as this imo.

Glad to hear about it :slight_smile:

Just index the first value in the list of selected items and then put it in the selected instance

Then what if you insert something that is supposed to be in a very complex storage? and you don’t remember the exact name of the item

then you drag it there. you would still have to drag it there or select it regardless

What if you don’t remember the exact name of it? and what if it’s 10 instances deep? like ReplicatedStorage.Modules.ModuleA.Libraries.ThirdParty.i.dont.even.know.what.else.to.put

you’re saying that you want to select the parent instance, you can just drag it to there and it does the same exact thing in roughly the same amount of time

I will modify the plugin to make sure it inserts the first selected item, It will be instant

ok done

image

I made a compromise for the best of both worlds, it just inserts into the first item in the selection tree
image

I also added the ability to insert from local files, dont know how I forgot to do this when I first made it. Most of the sourcecode is unchanged, just migrated to Tabby.


Please dont edit my plugins without my permission :slight_smile:

2 Likes

ok, but Anyone can do that, but just because you can doesn’t mean you should

also thanks for updating this

Love this plugin 100%. But some people need this in different ways, I think you should let people edit this, without giving it out. Because I need this in bulk, something that can insert 100 in a few seconds, but I can’t do that with one link entry.

Just a heads up that I’ll be charging $5 (this is the lowest i can set it, i want to sell it slightly cheaper) for this when the plugin marketplace releases :slight_smile:

Dont worry though, I’ve been working on something for this that hopefully I can get out the door before then

Capture

Changelog for Version 2.1

Extra File Support

Added support for json, txt and lua, in regards to Lua, it should correctly pass server.lua and client.lua to their associated script types.

Recoded (for real this time)

You may have noticed a few changes to the UI, this is because I’ve completely rewritten the plugin to properly run ontop of Catwork (instead of just proxying it)

Since I’ve migrated the codebase in full, please report bugs if you find them.

Light Theme

burn your eyes out! Light theme is here!

Capture

Bug Fixes

  • Content IDs were fussy about their handling, they should now be more obvious
  • URLs were not trimmed

Future Plans

  • Supporting JSON aliases such as model.json, rbx.json and roblox.json
  • ZIP archive support (this requires a lot of stuff so not for a while)
  • (maybe) Loading roblox mesh files into editable meshes

Here’s a list of planned extensions (or already implemented and their status)

Key:

  • :white_check_mark: Full support
  • :ballot_box_with_check: Partial support (usually either unimplemented or unhandled edge case)
  • :memo: Planned for future support
  • :x: Never
Extension Status Instance Notes
RBXM :ballot_box_with_check: depends on rbxm Partial Support, object importing is difficult because RBXM is a 10/10 spec
RBXMX :memo: depends on file Need pure Lua xml parser
RBXL(X) :x: Dropper is not intended for this, and even if I wanted to, lxm doesn’t support ServiceMarkers
txt :white_check_mark: StringValue
lua :white_check_mark: Has special cases for server.lua and client.lua, but builds to a ModuleScript
luau :white_check_mark: Alias for Lua
csv :memo: LocalizationTable Need a pure Lua csv parser that isn’t too expensive
json :ballot_box_with_check: ModuleScript (currently) currently always parses to a lua table, planned to support model.json and Roblox’s JSON model spec
zip :ballot_box_with_check: Has a special parser because it actually needs to build child files. Data with a descriptor wont insert, only DEFLATE is supported.

Known issues:

  • ZIPs with a descriptor wont insert - Found issue, fix deferred for now

If you want anything added to this list of supported files, let me know!

can we talk privately about zip?