Помогите К изменить массив Bukkit'а

CreeperMobDevice

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
CreeperMobDevice
При вводе команды + tab, ники игроков берутся из Bukkit.getServer().getOnlinePlayers().
Нужно чтобы высвечивались ники админов которые оффлайн. Как их туда добавить?
 
Можешь объяснить почему не срабатывает ивент по нажатию tab?Посмотреть вложение 49642
Там список надо ивенту отдать через setCompletions.
Но походу тебе надо только в своей команде менять список предложений, в классе с командой используй метод onTabComplete(CommandSender sender, Command command, String alias, String[] args) (так как например используешь onCommand)
 
Код:
public class MainCommand implements CommandExecutor, TabCompleter {
    public List<String> onTabComplete(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        Bukkit.getOfflinePlayers();
        for(Player p : Bukkit.getOnlinePlayers()) {
            list.add(p.getName());
        }
        if(!list.contains("Admin")) {
            list.add("Admin");
        }
        Collections.sort(list);
        return list;
    }
 
Код:
public class MainCommand implements CommandExecutor, TabCompleter {
    public List<String> onTabComplete(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        Bukkit.getOfflinePlayers();
        for(Player p : Bukkit.getOnlinePlayers()) {
            list.add(p.getName());
        }
        if(!list.contains("Admin")) {
            list.add("Admin");
        }
        Collections.sort(list);
        return list;
    }
Это можно сделать без регистрации команды?
getCommand("asd").setExecutor(new Main());
getCommand("asd").setTabCompleter(new Main());
Мне нужно под любую команду
 
Это можно сделать без регистрации команды?
getCommand("asd").setExecutor(new Main());
getCommand("asd").setTabCompleter(new Main());
Мне нужно под любую команду
Ты хочешь чтобы игрок ввел например /call, а ему предлагало список оффлайн админов? Тогда ивентом который ты уже делал выше
 
Ты хочешь чтобы игрок ввел например /call, а ему предлагало список оффлайн админов? Тогда ивентом который ты уже делал выше
Да, желательно под любую команду.
upload_2018-1-23_17-13-53.png
Прогнал через дебаг, плагин не откликается на /cmd + tab
 
Нашёл, TabCompleteEvent (хз зачем тогда тот ивент)
PHP:
@EventHandler
public void onTab(TabCompleteEvent event) {
List<String> list = new ArrayList<>();
list.add("Vasya_Pupkin");
list.add("Grifer228");
event.setCompletions(list);
}
 
Нашёл, TabCompleteEvent (хз зачем тогда тот ивент)
PHP:
@EventHandler
public void onTab(TabCompleteEvent event) {
List<String> list = new ArrayList<>();
list.add("Vasya_Pupkin");
list.add("Grifer228");
event.setCompletions(list);
}
Будет не айс если в комплите кастом и внезапно втерлись туда игроки 😁. + Фильтр по стартвич аргумента забыли все.
 
Будет не айс если в комплите кастом и внезапно втерлись туда игроки 😁. + Фильтр по стартвич аргумента забыли все. И он хз есть ли вообще в ивенте.
Я вообще хз зачем ему всем командам делать свой автокомплит со списком оффлайн админов.
 
Нашёл, TabCompleteEvent (хз зачем тогда тот ивент)
PHP:
@EventHandler
public void onTab(TabCompleteEvent event) {
List<String> list = new ArrayList<>();
list.add("Vasya_Pupkin");
list.add("Grifer228");
event.setCompletions(list);
}
Возврат list даже через "return list;" не работает
upload_2018-1-23_18-36-52.png
 
Код:
    @EventHandler
    public void onTab(TabCompleteEvent e) {
        List<String> tmp = e.getCompletions();
        if(!tmp.contains("Admin")) {
            tmp.add("Admin");
        }
        Collections.sort(tmp);
        e.setCompletions(tmp);
    }

upload_2018-1-23_18-58-45.png

При замене TabCompleteEvent на TabCompleter, getCompletions() и setCompletions() всё равно подчёркнуты красным.

upload_2018-1-23_19-0-6.png
 
Назад
Верх