Помогите Register и Unregister ивентов

Статус
Закрыто для дальнейших ответов.

sweettie

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
_Sweettie_
Есть у меня значит класс с ивентами (пока там только PlayerOnMoveEvent) *Класс - PlayerListener* который отменяет любые действия если игрок есть в HashMap<UUID, Listener>. Когда игрок заходить на сервер, я создаю PlayerListener listener = new PlayerListener(uuid); и добавляю его в это шехмап. Вопрос состоит в том, как можно убирать слежку за ивентами для игрока (В данном случае PlayerListener для этого игрока)

Если быть точнее
PlayerListener:
Код:
UUID uuid;

    public PlayerListener(UUID uuid) {
        this.uuid = uuid;
    }

    @EventHandler
    public void move(PlayerMoveEvent event) {
        UUID id = event.getPlayer().getUniqueId();
        if (id.equals(uuid)) event.setCancelled(true);
    }

GlobalListener:
Код:
    Main main;

    public Listeners(Main main) {
        this.main = main;
    }


    @EventHandler
    public void join(PlayerJoinEvent event) {
        Player player = event.getPlayer();
        if (!main.isNewUser(player.getUniqueId())) {
            event.getPlayer().sendMessage("reg");
        } else {
            event.getPlayer().sendMessage("login");
        }
        GlobalListener listener = new GlobalListener(player.getUniqueId())
        pluginManager.registerEvents(listener, main);
        event.setJoinMessage("");
        event.getPlayer().setWalkSpeed(0F);
        event.getPlayer().setFlySpeed(0F);

    }
 
Код:
    @EventHandler
    public void move(PlayerMoveEvent event) {
        if(userMap.containsKey(event.getPlayer().getUniqueId())) {
            игрок есть, что то делаем
        } else {
            игрока нет, ничего не делаем
        }
    }
 
Код:
    @EventHandler
    public void move(PlayerMoveEvent event) {
        if(userMap.containsKey(event.getPlayer().getUniqueId())) {
            игрок есть
        } else {
            игрока нет
        }
    }
а теперь представь что у меня таких ещё 20 евентов на все случаи жизни и 200+ игроков, и ты хочешь чтоб я для каждых 200 проверял каждый евент??? нет, спасибо
 
а теперь представь что у меня таких ещё 20 евентов на все случаи жизни и 200+ игроков, и ты хочешь чтоб я для каждых 200 проверял каждый евент??? нет, спасибо
Зачем 20? Один ивент проверяет любое число игроков.
 
Зачем 20? Один ивент проверяет любое число игроков.
ивент на ломание блока, получение урона, когда чел ударил сам кого-то, выкинул предмет, получил предмет,когда поставил блок, использовал предмет, зашёл в инвентарь и тп.
 
ивент на ломание блока, получение урона, когда чел ударил сам кого-то, выкинул предмет, получил предмет,когда поставил блок, использовал предмет, зашёл в инвентарь и тп.
Ну тем же if работаешь.
 
ну он же сдохнет для каждого евента, для каждого игрока проверять условие. Мне нужно узнать как можно офать слушатель
Слушатель и так срабатывает на всех игроков, а ты хочешь что бы по 2 одинаковых слушателя срабатывало вместо одного? Зачем?
 
Слушатель и так срабатывает на всех игроков.
Но его можно же регистрировать, значит и есть способ un-регистрировать. Вот мне и нужно узнать как это делать, а не как ещё можно по другому это сделать!
 
Но его можно же регистрировать, значит и есть способ un-регистрировать. Вот мне и нужно узнать как это делать, а не как ещё можно по другому это сделать!
Ну тогда все игроки перестанут отслеживаться. Если тебе надо конкретных игроков проверять, то используй if.
 
У него сервер еще не лагает :D
кроме как сте баться над новичками вы и умеете, нет чтобы всё понятно и ясно разложить по полочкам чтоб с первого раза всё стало понятно для другого человека
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх