This is a discussion topic for the Ore project, CmdBuilder. View the full project on Ore for downloads and more information.
Description
CmdBuilder allows administrators to create basic command scripts and integrate them with registered commands. As one of the most advanced plugins of it’s type, CmdBuilder can:
Create custom commands through scripts
Define scripts with multiple commands
Verify arguments with correct typing
Set the source and delay of a command
Apply cooldowns and costs to scripts
Create new aliases or overwrite existing ones
Store and retrieve customized user metadata
Important Notes
CmdBuilder requires CmdControl to be installed as a dependency. Additionally, CmdBuilder must be placed in the /mods folder of your server, not a plugins folder. This is because CmdBuilder makes use of Mixins to handle tab completing scripts.
/Cmd Series
CmdBuilder is one of the plugins in the /Cmd series. If there’s something you’re looking for with commands that CmdBuilder doesn’t offer, there’s a good chance it’ll be found in one of the plugins below:
CmdControl: Advanced operations for working with commands
For the meantime, the documentation is stored on the CmdBuilder Wiki where you can find information about how to set up scripts and the available features you can use.
If you need additional help, you can post a message in the #cmdbuilder channel of my Support Discord. It’s also a great place to keep updated with new developments for CmdBuilder or any one of my plugins, so feel free to come join in the development fun!
Developer API
CmdBuilder employs a very basic API that may be used to define custom ValueTypes, which are used for argument parsing. This is still in development and not yet stable, so if you have a interest in working with this please send me a message.
Support Me
There’s a lot of time and effort that goes into making plugins like CmdBuilder, so if you’ve benefited from one of my plugins and appreciate the work I do please take some time and add a donation through PayPal. Thanks for your support!t!
The first public release of CmdBuilder went under the name CmdControl, but it went by CmdBuilder during the ‘proof of concept’ betas all the way back in April of last year. With the expansion of the /Cmd series, I thought it was best to return it to it’s original name and give CmdControl over to, well, what is now CmdControl xD
If that wasn’t confusing enough, the wiki for CmdBuilder does display CmdControl. I didn’t have the time to migrate the wiki to Ore when it was first released there, and I’ve been too caught up with academics and other projects to be able to update the documentation properly. However, the information there is largely correct - just ignore the misnamed title page and you’ll be good to go!
I will be updating the documentation with the next release of the /Cmd series, which will mainly update CmdControl to use TeslaLibs v1.1.0 (as if things weren’t complicated enough!). On the bright side, I’m looking at the end of the next week for this release - so it’s not too far away!
In the meantime, if you have any suggestions or questions about the plugin you know were to find me on Discord. See you!
Hiya all! Version 1.3.0 is now released and contains the fix for the Forge loading problem with mixins as well as updates for types and user meta. I’ve separated out the previous type system into two pieces - a ParserType that is used to define arguments in commands and a ValueType that stores the actual value. This will become much more beneficial moving forward with future updates.
One of those projects is user metadata, which allows you to store persistent data on the user under your own identifiers. This should be considered in beta stages, so while it’s functional please keep in mind that breaking changes could be made until it’s stabilized.
I’d also like to note a couple differences between user metadata and permission options (or meta) that you can set with something like LuckPerms:
User meta is typed, meaning that it can differentiate between strings, integers, users, etc. Permission meta is only string based.
User meta can be grouped into categories, such as homes.main and homes.farm, which helps with tab completion.
User meta does not support contexts in the way that permission meta does.
User meta is less performant that permission meta. This shouldn’t be an issue as long as you restrict it’s usage to commands.
User meta is integrated into CmdBuilder (this could also be done to a lesser extent with permission meta, but it wouldn’t be able to make use of the type system).
I’m looking for people to provide some feedback on this and see what the use cases are so I know what things I should focus on supporting. If you have any questions, comments, or concerns about this, feel free to post something here or get in contact with me through Discord in the #cmdbuilder channel.