CmdBuilder - Create, combine, and register new commands

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:

Documentation

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!

3 Likes

The wiki link goes to CmdBuilder on Github but the actual page is about CmdControl?

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!

A simple release post for a simple release: Version 1.2.0 updates CmdBuilder to support CmdControl v1.1.0 and fixes a minor bug - 'nuff said.


Changelog:

  • Updated to CmdControl v1.1.0
  • Fixed an error when an argument type is undefined
1 Like

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.


Changelog:

  • Updated to CmdControl v1.2.0
  • Removed legacy conversion from v1.1.0
  • Separated ValueTypes and ParserTypes
  • Added registries for ValueTypes and ParserTypes
  • Added user meta and getmeta/setmeta commands
1 Like