Получение tabComlite не подключаемых команд с помощью SpigotAPI 1.15.2 - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать плагин, который обеспечивает выбор команды элемента (значит, игрок может забрать указанный элемент c в основную руку, щелкнув его по блоку / объекту / воздуху / пустоте с результатом отправки указанной команды) , Я сделал eventListner, commandListner и другие вещи, которые обрабатывают эту функцию. Но я не могу найти способ дать игроку tabComplite, который содержит список команд сервера (именно сервер, а не только плагин) и его аргументы. Мой кусок кода обрабатывает TabCompletter для команды плагина:

    public List<String> onTabComplete(CommandSender sender, Command command,
            String string, String[] args) {

        List<String> tabCompleteList = new ArrayList<String>();

        switch (args[0].toLowerCase(Locale.ENGLISH)) {
        ...
        case "getmagicstick":
            if (args.length <= 2) {tabCompleteList.add("[nameOfStick]");break;}
            String[] args1 = new String[args.length - 3];
            String string1 = args[2];
            for (int i = 3; i < args.length; i++) {
                args1[i - 3] = args[i];
                string = string+args[i];
            }
            tabCompleteList = onTabComplete(sender, 
                    (new CommandMap()).getCommand(args[2]), string1, args1);
            break;
        ...
        }

        return tabCompleteList;
    }

Как видите, метод вызывает себя, чтобы получить tabCompleteList. Это означает, что игрок в tabComlite может видеть аргументы только моего плагина.
Есть способ получить tabCompleteList или вызвать какое-то событие, которое возвращает игроку аргументы команды? Я знаю, что игрок может сначала написать команду, которую он хочет, а затем в начале команды набрать "/ AB C getMagicStick [nameOfStick]". Но если что-то может быть лучше, я стараюсь сделать это лучше.

P / S И, простите за мою кровать Engle sh.

...