Я пытаюсь создать плагин, который обеспечивает выбор команды элемента (значит, игрок может забрать указанный элемент 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.