1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем BeYkeR, 27 мар 2014.

  1. Автор темы
    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. Кто это все знал и хочет высказать типо : "ЙА ИТА ВСЯ ЗНАЮ" прошу не писать. Если это захотели наши девелоперы, то простите, просто есть такие люди, которые прям так и пишут.
     
    saharin94, konfyciu98, Hephest и 2 другим нравится это.
  2. ensirius

    ensirius Старожил Пользователь

    Баллы:
    123
    not bad.
     
  3. ermaksochi

    ermaksochi Активный участник Пользователь

    Баллы:
    66
    Как отменить регистрацию обработчиков через определённое время?
    Снимок303.PNG.png
    Если что, я пишу плагин на версии майнкрафт 1.7.10
    P.S Уже понял как, this нужно было поменять на свой объект плагина
     
    Последнее редактирование: 25 авг 2018
  4. Slavkaa

    Slavkaa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    4 года, 4, мать его, года прошло.
     

Поделиться этой страницей