Sous-Commandes

Le constructeur CommandSpec supporte les commandes à structures hiérarchiques tel que:

  • /mail (commande principale)

    • /mail send (sous-commande)

    • /mail read (sous-commande)

Chaque sous-commande est un CommandSpec différent et peut être créé de la même façon que les autres commandes.

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();

Au lieu de les enregistrer dans le service de commande, les sous-commandes sont enregistrées dans la commande principale par le biais de la méthode CommandSpec.Builder#child(CommandCallable, String…). Elles sont enregistrées avec la liste de leurs alias. Le premier alias fourni est le principal et apparaîtra dans la message d’aide d’utilisation.

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");

Note

Si un CommandExecutor a été définit pour la commande principale, il va être utilisé comme recours si aucun des argument ne correspond à un alias des sous-commandes. Mettre en place un exécuteur n’est pas obligatoire.