Perintah Anak

The CommandSpec builder pendukung struktur perintah hierarki seperti ini:

  • ''/Mail'' (perintah induk)

    • /mail send (perintah kecil)

    • /mail read (perintah kecil)

Setiap perintah kecil yang memisahkan ''CommandSpec'' dan dapat dibuat dalam cara yang sama seperti perintah reguler.

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

Alih-alih mendaftarkan mereka untuk perintah service, perintah kecil yang telah terdaftar pada perintah induk yang mereka gunakan :javadoc:'CommandSpec.Builder#child(CommandCallable String,...) metode'. Mereka telah terdaftar dengan daftar alias. Alias yang pertama yang disediakan adalah salah satu yang utama dan akan muncul dalam pesan penggunaan.

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

Catatan

If a CommandExecutor was set for the parent command, it is used as a fallback if the arguments do not match one of the child command aliases. Setting an executor is not required.