Tingkat rendah Perintah API

:Javadoc:'CommandCallable' dan :javadoc:'Dispatcher' antarmuka yang dapat digunakan untuk menentukan perintah. Antarmuka yang dapat digunakan sebagai dasar untuk perintah khusus APIs.

Dianjurkan untuk menggunakan :doc:'Pembangun Perintah API <creating>' untuk definisi perintah sederhana.

Menulis perintah

Langkah pertama adalah membuat class untuk perintah. Kelas telah menerapkan antarmuka CommandCallable:

import org.spongepowered.api.Sponge;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.command.CommandCallable;
import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.CommandSource;

import java.util.Collections;
import java.util.List;
import java.util.Optional;

public class MyBroadcastCommand implements CommandCallable {

    private final Optional<Text> desc = Optional.of(Text.of("Displays a message to all players"));
    private final Optional<Text> help = Optional.of(Text.of("Displays a message to all players. It has no color support!"));
    private final Text usage = Text.of("<message>");

    public CommandResult process(CommandSource source, String arguments) throws CommandException {
        Sponge.getServer().getBroadcastChannel().send(Text.of(arguments));
        return CommandResult.success();
    }

    public boolean testPermission(CommandSource source) {
        return source.hasPermission("myplugin.broadcast");
    }

    public Optional<Text> getShortDescription(CommandSource source) {
        return desc;
    }

    public Optional<Text> getHelp(CommandSource source) {
        return help;
    }

    public Text getUsage(CommandSource source) {
        return usage;
    }

    public List<String> getSuggestions(CommandSource source, String arguments) throws CommandException {
        return Collections.emptyList();
    }
}

Tip

Lihat JavaDoc untuk :javadoc:'CommandCallable' untuk tujuan masing-masing metode dalam contoh ini.

Mendaftar perintah

Sekarang kita dapat mendaftarkan kelas dalam :javadoc:'CommandManager'. ''CommandManager'' berdiri sebagai manager untuk melihat perintah apa yang dapat diketikkan ke obrolan, dan mengalihkan mereka ke pengendali perintah yang benar. Untuk mendaftarkan perintah anda, gunakan metode :javadoc:'CommandManager#mendaftarkan(Object, CommandCallable String,...)', melewati plugin anda, turunan dari perintah, dan alias yang dibutuhkan sebagai parameter.

import org.spongepowered.api.command.CommandManager;

CommandManager cmdService = Sponge.getCommandManager();
cmdService.register(plugin, new MyBroadcastCommand(), "message", "broadcast");

Catatan

Argumen setelah instance baru dari perintah anda adalah alias untuk mendaftar untuk perintah. Anda dapat menambahkan banyak String yang anda inginkan. Pertama alias yang tidak digunakan oleh perintah lain menjadi primer alias. Ini berarti alias yang digunakan oleh perintah lain diabaikan.

Perintah Dispatcher

Perintah operator dapat digunakan untuk membuat hierarki struktur komando (subperintah).

Implementasi dasar dari ''Dispatcher'' interface adalah :javadoc:'SimpleDispatcher kelas".

Sebuah ''Dispatcher'' juga merupakan ''CommandCallable'', sehingga dapat didaftarkan seperti perintah lain.

import org.spongepowered.api.command.dispatcher.SimpleDispatcher;

CommandCallable subCommand1 = ...;
CommandCallable subCommand2 = ...;

SimpleDispatcher rootCommand = new SimpleDispatcher();

rootCommand.register(subCommand1, "subcommand1", "sub1");
rootCommand.register(subCommand2, "subcommand2", "sub2");

Sponge.getCommandManager().register(this, rootCommand, "root");