diff --git a/src/main/java/net/coreprotect/listener/player/CraftItemListener.java b/src/main/java/net/coreprotect/listener/player/CraftItemListener.java index 756e3fa3..b93ccf14 100644 --- a/src/main/java/net/coreprotect/listener/player/CraftItemListener.java +++ b/src/main/java/net/coreprotect/listener/player/CraftItemListener.java @@ -80,7 +80,7 @@ protected static void playerCraftItem(InventoryClickEvent event, boolean isTrade return; } - Inventory bottomInventory = event.getView().getBottomInventory(); + Inventory bottomInventory = player.getInventory(); if (bottomInventory.getType() != InventoryType.PLAYER) { return; } diff --git a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java index 9beeb565..01082e04 100644 --- a/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java +++ b/src/main/java/net/coreprotect/listener/player/InventoryChangeListener.java @@ -22,7 +22,6 @@ import org.bukkit.inventory.BlockInventoryHolder; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.ItemStack; import net.coreprotect.CoreProtect; @@ -251,7 +250,12 @@ protected void onInventoryClick(InventoryClickEvent event) { // Perform this check to prevent triggering onInventoryInteractAsync when a user is just clicking items in their own inventory Inventory inventory = null; try { - inventory = event.getView().getInventory(event.getRawSlot()); + try { + inventory = event.getView().getInventory(event.getRawSlot()); + } + catch (IncompatibleClassChangeError e) { + inventory = event.getClickedInventory(); + } } catch (Exception e) { return; @@ -288,19 +292,16 @@ protected void onInventoryClick(InventoryClickEvent event) { protected void onInventoryDragEvent(InventoryDragEvent event) { boolean movedItem = false; boolean enderChest = false; - InventoryView inventoryView = event.getView(); - for (Integer slot : event.getRawSlots()) { - Inventory inventory = inventoryView.getInventory(slot); - if (inventory == null) { - continue; - } - InventoryHolder inventoryHolder = inventory.getHolder(); - enderChest = inventory.equals(event.getWhoClicked().getEnderChest()); - if ((inventoryHolder != null && (inventoryHolder instanceof BlockInventoryHolder || inventoryHolder instanceof DoubleChest)) || enderChest) { - movedItem = true; - break; - } + Inventory inventory = event.getInventory(); + if (inventory == null || inventory.equals(event.getWhoClicked().getInventory())) { + return; + } + + InventoryHolder inventoryHolder = inventory.getHolder(); + enderChest = inventory.equals(event.getWhoClicked().getEnderChest()); + if ((inventoryHolder != null && (inventoryHolder instanceof BlockInventoryHolder || inventoryHolder instanceof DoubleChest)) || enderChest) { + movedItem = true; } if (!movedItem) {