[Туториал] Отмена регистрации обработчиков

  • Автор темы Автор темы BeYkeR
  • Дата начала Дата начала

BeYkeR

Старожил
Девелопер
Пользователь
Баллы
173
Бывают такие ситуации, где надо, допустим, отключить обработчик во время игры, и в этой ситуации нам поможет HandlerList.

Что такое HandlerList, и с чем его едят ?

Через HandlerList

Вот наши методы в самом классе:
Код:
public static void unregisterAll(Plugin plugin) // Убирает всех обработчиков какого-либо плагина.
public static void unregisterAll(Listener listener) // Убирает всех обработчиков с слушателя


Пример из моей "кодерской" жизни:

Код:
public void restart(){
for(Player players: Bukkit.getOnlinePlayers()){
players.getWorld().createExplosion(players.getLocation(), 10);
}
HandlerList.unregisterAll(this);
this.onEnable();
}



Через события (Event)

Вот методы, которых можно найти в эвентах через getHandlerList():
Код:
public void unregister(Plugin plugin) // Удаляет эвент-обработчик плагина.
public void unregister(Listener listener) //Удаляет эвент-обработчик с слушателя
Пример:
Код:
    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent event){
        Player player = event.getPlayer();

        if(event.getMessage() != null){
            player.sendMessage("[TEST_PLUGIN]" + "ЧУВАК! ДАЙ ДЕНЬГИ НА ВОДКУ!");
        }

        if(event.getMessage().equals("STOP")){
            player.sendMessage("[TEST_PLUGIN]" + "окай хозяин :((");
            event.getHandlerList().unregister(this);

            //Теперь эта часть обработчика не обрабатывается, и наконец, он мне не будет писать глупые слова :D
        }
    }

И всё на этом, с вами был Бейкер и надеюсь этот тутор вам поможет в будущем :3


P.S. Не пишите ,что я очень плохо веду туториалы, сам знаю.
P.S.S. Кто это все знал и хочет высказать типо : "ЙА ИТА ВСЯ ЗНАЮ" прошу не писать. Если это захотели наши девелоперы, то простите, просто есть такие люди, которые прям так и пишут.
 
Как отменить регистрацию обработчиков через определённое время?
Снимок303.PNG.png
Если что, я пишу плагин на версии майнкрафт 1.7.10
P.S Уже понял как, this нужно было поменять на свой объект плагина
 
Последнее редактирование:
Назад
Верх