Помогите Не работают ивенты

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

Dexel

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
SiRiuS_OSiRiuS
Добрый день. Spigot 1.11.2

Вот главный класс:
Java:
public void onEnable() {
        createFiles();
        plugin = this;
        registerHandlers();
        try {
            IO.load();
        } catch (InvalidConfigurationException e) {
            e.printStackTrace();
        }
    }

Вот метод registerHandlers():
Java:
private void registerHandlers() {
        getCommand("case").setExecutor(new Executor());
        getServer().getPluginManager().registerEvents(new Listener1(this), this);
        getServer().getPluginManager().registerEvents(new Listener2(this), this);
    }

И вот, например, код из класса Listener2:
Java:
public class Listener2 implements Listener {

    Main instance;

    public Listener2(Main plugin) {
        instance = plugin;
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent e) {
        if (Data.isOk((Player) e.getWhoClicked()))
            e.setCancelled(true);
    }

    @EventHandler
    public void onMove(PlayerMoveEvent e) {
        if (Data.isOk(e.getPlayer()))
            e.setCancelled(true);
    }
}

Вот метод isOk():
Java:
public static boolean isOk(Player p) {
        return tasks.containsKey(p) || invs.containsKey(p);
    }

Я твёрдо знаю, что и в tasks, и в invs есть ключ p, но этот метод не может их найти, поэтому всегда возвращает false. Событие PlayerMoveEvent "отлавливается", но оно не срабатывает только из-за этого. Почему? Ведь событие InventoryClickEvent прекрасно работает.

P.S. tasks и invs:
Java:
    public static HashMap<Player, Integer> tasks = new HashMap<>();
    public static HashMap<Player, Inventory> invs = new HashMap<>();
 
А игрока ты где кладёшь в HashMap ?
 
Помогла установка приоритета:
Java:
@EventHandler(priority = EventPriority.HIGHEST)
Тема закрыта.
 
Назад
Верх