Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите HandlerList - отменить регистрацию слушателя

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

Статус темы:
Закрыта.
  1. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Здравствуйте, не могу отменить регистрацию слушателя в плагине. Вот, как я ее произвожу:
    Главный класс:
    Код:
    private Waiting waiting;
    public void startGame()
    {
    waiting.unregister();
    }
    Слушатель:
    Код:
    public void unregister()
    {
    HandlerList.unregisterAll(this);
    }
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Up. Очень нужна помощь
     
  4. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Зачем?
     
  5. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Пишу мини-игру, работает хорошо. Сейчас я снимаю регистрацию со всего плагина, и потом регистрирую нужные евенты. Но помимо них, у меня есть слушатели не относящиеся к игре. Слушатель чата и т.д. Но мне нужно снять регистрацию только со слушателя Waiting, ибо мне потом приходится заново регистрировать основные слушатели, которые, как я уже говорил, не имеют отношения к мини-игре
     
  6. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    К чему такие сложности?
    @EventHandler
    on(Некий ивент e) {
    if(!isActive) return;
    ...
    }
     
  7. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Проверка через boolean будет грузить сервер. Нужно снять с евентов регистрацию
     
  8. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    чем она грузить будет?
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    [​IMG]
     
  10. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Наверное, кому-то стоит по секрету рассказать ТС-у, что +1 слушатель где-то в коллекции внутри сервера всё равно прибавит одну операцию сравнения к времянке при итерировании слушателей.
     
  11. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    :D. И все-же, почему я не могу снять регистрацию слушателя?
     
  12. GoodCoder

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

    Баллы:
    76
    В HandlerList.unregisterAll() передаётся плагин (тогда ВСЕ слушатели плагина снимаются с регистрации), либо объект Listender, чтобы отменить регистрацию всех его @EventHandler'ов.
     
  13. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Это я знаю, поэтому и пишу - HandlerList.unregisterAll(слушатель);, но в консоль выдает ошибку. Никаких Caused by и т.д. нет, простая ошибка. Слушатель не снимается. Кстати, HandlerList.unregisterAll() снимает регистрацию не с плагина, а со всех слушателей, даже в сторонних плагинах.
     
  14. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ошибку хоть напиши то тогда.
     
  15. Автор темы
    DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Уже пробовал по-разному. Пришел к выводу, что буду отменять регистрацию со всего плагина, а потом снова регистрировать нужные слушатели. Закрыто
     
Статус темы:
Закрыта.

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