Commands

The basic structure of a command, and its sub commands.


#Creating a simple command

Every command must extend BaseCommand.
You can use the @Command annotation to declare the command name and alias.

@Command("foo")
class MyCommand extends BaseCommand {}

A command can also have aliases.

@Command(value = "foo", alias = {"bar", "baz"})
class MyCommand extends BaseCommand {}

Alternatively you can also declare the command name and alias through the BaseCommand's constructor.

class MyCommand extends BaseCommand {
    
    public MyCommand() {
        super("foo", Arrays.asList("bar", "baz"));
    }
}

The usage of the keyword Sender in the following examples are not the correct name, it just represents a sender.
As the real sender name can change based on platform or the provided custom sender.

#Sub commands

Each sub commands are declared by methods, currently there is no other way to declare its name and alias other than through annotations.

#Default

A @Default method is a "sub command without a name", implying it is the main executor of a command that has no sub commands.
For example the command /foo would be declared in the following way:

@Command("foo")
class MyCommand extends BaseCommand {

    @Default
    public void executor(Sender sender) {
        // Code to be executed
    }
}

#SubCommand

A @SubCommand is a sub command that has a specific name. For example /foo bar

@Command("foo")
class MyCommand extends BaseCommand {

    @SubCommand("bar")
    public void executor(Sender sender) {
        // Code to be executed
    }
}

#Alias

Both annotations also support an alias to be passed:
@Default(alias = {"bar"}) would be executed as either /foo or /foo bar.
@SubCommand(value = "bar", alias = {"baz"}) would be executed as either /foo bar or /foo baz.

#Registering

Registering the command is very simple, you simply do:

commandManager.registerCommand(new MyCommand());
Edit this page on GitHub

On this page

Code copied to clipboard!