Войти или зарегистрироваться

Помогите Не выполняется команда, когда условия if выполнены

KoT_B_MaMe

Участник
Пользователь
Баллы
31
Имя в Minecraft
KoT_B_MaMKe
Код:
@EventHandler
    public void onChat(AsyncChatEvent e) {
        List<String> list = config.getStringList("settings.offensivewords");
        Player player = e.getPlayer();
        int listsize = list.size();

        if(e.message() instanceof TextComponent){
            TextComponent text = (TextComponent) e.message();
            for (int i = 0; i < listsize; i++){
                if (text.content().toLowerCase().contains(list.get(i))){
                    e.getPlayer().sendMessage(ChatColor.RED + "Отправка сообщения предотвращенна системой ПДиР");
                    e.setCancelled(true);
                    player.sendMessage(String.valueOf(test));
                    test+=1;
                    if(test == 3){
                        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "kick" + player);
                                //Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute " + player + " 2h");
                        e.setCancelled(true);
                        test=0;
                    }
                }
            }
        }
    }
как видно по коду (
Код:
             if(test == 3){
                        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "kick" + player);
                                //Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mute " + player + " 2h");
                        e.setCancelled(true);
                        test=0;
) то я пытаюсь выполнить команду kick + player,когда test становится 3, чтоб кикнуть себя. но это не получается и я не могу понять почему. ошибка в консоли -
Could not pass event AsyncChatEvent to ChatFilter v0.1
java.lang.IllegalStateException: Asynchronous command dispatch!​
 
Команды нельзя в асинхронном потоке, используй шедулер.
 
это на умном что-то, можно разъяснение что за шедулер?:3
Тебе нужно выполнять все в синхронном потоке, что тебе может предоставить шедулер (класс в апи баккита). Пример использования:
Bukkit.getScheduler().runTask(() -> {
// Тут твой код на ввод команды
}
Данный метод позволяет выполнить твой код синхронно относительно игрового мира.
 
Назад
Верх