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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Dexel, 16 май 2017.

  1. Автор темы
    Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Добрый день. Spigot 1.11.2

    Вот главный класс:
    Код:
    public void onEnable() {
            createFiles();
            plugin = this;
            registerHandlers();
            try {
                IO.load();
            } catch (InvalidConfigurationException e) {
                e.printStackTrace();
            }
        }
    Вот метод registerHandlers():
    Код:
    private void registerHandlers() {
            getCommand("case").setExecutor(new Executor());
            getServer().getPluginManager().registerEvents(new Listener1(this), this);
            getServer().getPluginManager().registerEvents(new Listener2(this), this);
        }
    И вот, например, код из класса Listener2:
    Код:
    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():
    Код:
    public static boolean isOk(Player p) {
            return tasks.containsKey(p) || invs.containsKey(p);
        }
    Я твёрдо знаю, что и в tasks, и в invs есть ключ p, но этот метод не может их найти, поэтому всегда возвращает false. Событие PlayerMoveEvent "отлавливается", но оно не срабатывает только из-за этого. Почему? Ведь событие InventoryClickEvent прекрасно работает.

    P.S. tasks и invs:
    Код:
        public static HashMap<Player, Integer> tasks = new HashMap<>();
        public static HashMap<Player, Inventory> invs = new HashMap<>();
     
  2. Хостинг MineCraft
    <
  3. Dan_Ender

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

    Баллы:
    78
    Имя в Minecraft:
    Dan_Ender
    А игрока ты где кладёшь в HashMap ?
     
  4. Автор темы
    Dexel

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

    Баллы:
    76
    Skype:
    the_osirius
    Помогла установка приоритета:
    Код:
    @EventHandler(priority = EventPriority.HIGHEST)
    Тема закрыта.
     

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