Untergeordnete Befehle

Der CommandSpec-Builder unterstützt folgende hierarchische Befehlsstrukturen:

  • /mail (übergeordneter Befehl)

    • /mail send (untergeordneter Befehl)

    • /mail read (untergeordneter Befehl)

Jeder untergeordneter Befehl ist ein separater CommandSpec und kann auf die gleiche Weise, wie ein regulärer Befehl, erstellt werden.

import org.spongepowered.api.text.Text;
import org.spongepowered.api.command.spec.CommandSpec;

// /mail read
CommandSpec readCmd = CommandSpec.builder()
    .permission("myplugin.mail.read")
    .description(Text.of("Read your inbox"))
    .executor(...)
    .build();

// /mail send
CommandSpec sendCmd = CommandSpec.builder()
    .permission("myplugin.mail.send")
    .description(Text.of("Send a mail"))
    .arguments(...)
    .executor(...)
    .build();

Anstatt untergeordneten Befehle direkt beim Command-Service zu registrieren, wird dies bei ihrem jeweils übergeordnetem Befehl mit der CommandSpec.Builder#child(CommandCallable, String…) Methode getan. Sie werden mit einer Liste von Aliasen registriert. Der zuerst angegebene ist der primäre und wird in der Hilfenachricht zum Befehl angezeigt.

import org.spongepowered.api.Sponge;

CommandSpec mailCommandSpec = CommandSpec.builder()
    .permission("myplugin.mail")
    .description(Text.of("Send and receive mails"))
    .child(readCmd, "read", "r", "inbox")
    .child(sendCmd, "send", "s", "write")
    .build();

Sponge.getCommandManager().register(plugin, mailCommandSpec, "mail", "email");

Bemerkung

Wenn ein CommandExecutor für den übergeordneten Befehl festgelegt wurde, wird dieser verwendet, wenn die Argumente nicht mit einem der Aliase der untergeordneten Befehle übereinstimmen. Das Festlegen eines Executors ist nicht erforderlich.