Arguments
Command argument declaration and options.
#Complex arguments
By default, other more complex arguments are also allowed, for example Collections, like List or Set.
#Collections
Collections are also type safe, meaning if you do List<Integer> that means any argument that is not a number will be null, for example:
/foo bar 1 2 3 hello 4 5 -> [1, 2, 3, null, 4, 5].
Collections by default are only allowed as the last argument, for example:
void execute(Sender sender, int number, List<String> args);
With one exception being a split argument.
#Split argument
A split argument is a collection that is annotated by @Split, example:
Given the command /foo bar diamond,iron_ingot,stone,grass_block 5, can be declared as:
void execute(Sender sender, @Split(",") List<Material> materials, int amount) {
println(materials); // Would print [DIAMOND, IRON_INGOT, STONE, GRASS_BLOCK]
}
#Join argument
The same way you can split a string into a collection, you can also join a list of arguments into a single string.
This however can only be used as the last argument of the command.
Command example: /foo bar 5 hello there people.
void excecute(Sender sender, int number, @Join(", ") String message) {
println(message); // Would print "hello, there, people"
}