What would you use this for?
Replacements are variables for your commands, that replaces values in the annotation at runtime.
Examples of where command replacements will be useful:
- Permission nodes
Define common permission nodes to a descriptive 'role'. Abstract out the perm name and if the perm ever changes, you change it in 1 place. Or for those long permission nodes, so you don't have to look it up each time.
- Dynamic
@Values that are shared with @CommandCompletion
Say you have a server switcher, and you don't want to include the current server in the list. Build the list of static strings of allowed values as a replacement string, instead of it being a fixed value in the compiled jar.
- Common
@Flags
Define repeated complicated flag setup as a replacement to avoid repetition and maintenance burden to update it.
- Common
@Syntax appendages
For example: " See more at help.mysite.com or type /help"
How to register them
First have your plugin setup for a Command Manager, by seeing: Using ACF
Then on your manager, do CommandReplacements replacements = manager.getCommandReplacements();
Then you may do stuff like:
Do this at plugin startup / manager creation. Preferably before registering commands.
Using Replacements
Simply use %ID in an annotations value, such as the above examples would be @CommandAlias("%test") would result in @CommandAlias("foobar")