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

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

Discussion in 'Разработка плагинов для новичков' started by Dexel, May 16, 2017.

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

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

    Trophy Points:
    76
    Skype:
    the_osirius
    Добрый день. Spigot 1.11.2

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

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

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

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

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

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

Share This Page