Отмена евента работает частично

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

BestraX

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
BestraX
Вообщем, я отменяю инвентори клик, когда clickedInventory=topInventory.
Вроде все работает, но работает ****о, первый раз я кликнул все ок, второй раз я кликнул и предмет поставился в топ инвентори
Можно ли это как-то исправить?
 
Так если ты отменяешь эвент когда игрок кликает на верхний инвентарь, то логично, что если клик будет по нижнему инвентарю, эвент не отменится (если ты про то что предмет переместился из нижнего в верхний инвентарь)
 
Так если ты отменяешь эвент когда игрок кликает на верхний инвентарь, то логично, что если клик будет по нижнему инвентарю, эвент не отменится (если ты про то что предмет переместился из нижнего в верхний инвентарь)
Я тебя не очень понял, мне плевать на нижний инвентарь, пусть игрок делает с ним все что хочет. Просто получается так, что игрок может с нижнего инвентаря переместить предмет в верхний инвентарь. Не с первого раза, допустим в первый раз эвент отменится, а второй раз кликнет и предмет уже в топ инвентори
 
Код в студию
 
Код:
    @EventHandler
    public void onClick(InventoryClickEvent e) {
        Player player = (Player) e.getWhoClicked();
        if (!isAvaibleSlot(e.getRawSlot()) && e.getClickedInventory().equals(e.getView().getTopInventory())) {
            e.setCancelled(true);
            return;
        }
    }

    boolean isAvaibleSlot(int rawSlot) {
        return rawSlot == getInt("menu.firstItem.slot") || rawSlot == getInt("menu.secondItem.slot") || rawSlot == getInt("menu.thirdItem.slot") || rawSlot == getInt("menu.fourthItem.slot");
    }
 
Код:
    @EventHandler
    public void onClick(InventoryClickEvent e) {
        Player player = (Player) e.getWhoClicked();
        if (!isAvaibleSlot(e.getRawSlot()) && e.getClickedInventory().equals(e.getView().getTopInventory())) {
            e.setCancelled(true);
            return;
        }
    }

    boolean isAvaibleSlot(int rawSlot) {
        return rawSlot == getInt("menu.firstItem.slot") || rawSlot == getInt("menu.secondItem.slot") || rawSlot == getInt("menu.thirdItem.slot") || rawSlot == getInt("menu.fourthItem.slot");
    }
Ты проверяешь методом isAvailableSlot(). Если он вернет true, то твой ивент не отменится
 
Ты проверяешь методом isAvailableSlot(). Если он вернет true, то твой ивент не отменится
Я это прекрасно понимаю, друг, всего должно быть 4 слота и туда надо положить предметы.
 
Выведи результат двух условий в твоей проверке, когда все работает нормально и когда - нет.
 
Вообщем, я отменяю инвентори клик, когда clickedInventory=topInventory.
Вроде все работает, но работает ****о, первый раз я кликнул все ок, второй раз я кликнул и предмет поставился в топ инвентори
Можно ли это как-то исправить?
Потому что на клики два ивента, есть еще InventoryDragEvent
 
Назад
Верх