Помогите Как пофиксить баг с setCancelled

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

Energy warrior

Активный участник
Пользователь
Баллы
76
Думаю понятно в чём вопрос. Когда кликаю на слоты или просто зажимаю ПКМ у меня не срабатывает setCancelled и преметы кладутся в инвентарь но обратно не возвращаются.
Код:
public void inventoryAction(InventoryClickEvent event){
        System.out.println(event.getRawSlot());
        event.setCancelled(true);
        if(freespace.contains(event.getRawSlot())) {
            event.setCancelled(false);
            return;
        }
        if (event.getRawSlot() > event.getInventory().getSize()) {
            event.setCancelled(false);
            return;
        }
        if (event.getSlotType() == InventoryType.SlotType.OUTSIDE) {
            return;
        }
        if (event.getSlot() >= buttons.size()) {
            return;
        }
        if(buttons.get(event.getRawSlot()) == null)return;

        GuiButton button = buttons.get(event.getSlot());
        button.action(event);
    }
 
Так это InventoryDragEvent же не?
С dragevent я пофиксил. Осталось только с точечным кликом. Я когда кликаю с некоторым шансом у меня предмет застревает и не возвращается назад.
 
С dragevent я пофиксил. Осталось только с точечным кликом. Я когда кликаю с некоторым шансом у меня предмет застревает и не возвращается назад.
Если с некоторым шансом - то точно замешан InventoryDragEvent. Показывай код, если хочешь разобраться.
Суть в том, что это событие может срабатывать даже для одного слота, если не очень аккуратно клинуть- чуть протащить зажатой мышкой внутри слота.
Как не странно, но всё само пофиксилось.
Как пофиксилось - так и сломается... Нет? Смотри, как знаешь...
 
Код:
public void inventoryAction(InventoryClickEvent event){
        System.out.println(event.getRawSlot());
        event.setCancelled(true);
        if(freespace.contains(event.getRawSlot())) {
            event.setCancelled(false);
            return;
        }
        if (event.getRawSlot() > event.getInventory().getSize()) {
            event.setCancelled(false);
            return;
        }
        if (event.getSlotType() == InventoryType.SlotType.OUTSIDE) {
            return;
        }
        if (event.getSlot() >= buttons.size()) {
            return;
        }
        if(buttons.get(event.getRawSlot()) == null)return;

        GuiButton button = buttons.get(event.getSlot());
        button.action(event);
    }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх