diff --git a/src/main/java/de/iani/treasurechest/listener/ChestInventoryListener.java b/src/main/java/de/iani/treasurechest/listener/ChestInventoryListener.java index eaf6856..b7c3845 100644 --- a/src/main/java/de/iani/treasurechest/listener/ChestInventoryListener.java +++ b/src/main/java/de/iani/treasurechest/listener/ChestInventoryListener.java @@ -157,9 +157,14 @@ for (int i = 0; i < priceCount; i++) { temp[i] = payoutEvent.getItems().get(i).clone(); } - if (addItemsToInventory(clonedPlayerInventory, temp) == null) { + + FilledInventory copyInventoryStatus = addItemsToInventory(clonedPlayerInventory, temp); + if (copyInventoryStatus == null) { plugin.sendMessage(player, "Du hast nicht genügend Platz in deinem Inventar!", true); return; + } else if (copyInventoryStatus == FilledInventory.ShulkerInShulkerError) { + plugin.sendMessage(player, "Du hast nicht genügend Platz in deinem Inventar! Shulker-Kisten können nicht in Shulker-Kisten gelagert werden.", true); + return; } } plugin.getServer().getPluginManager().callEvent(payoutEvent); @@ -274,6 +279,15 @@ return FilledInventory.PlayerInventory; } + for (ItemStack itemStack : items) { + if (itemStack.getItemMeta() instanceof BlockStateMeta blockStateMeta) { + BlockState blockState = blockStateMeta.getBlockState(); + if (blockState instanceof ShulkerBox) { + return FilledInventory.ShulkerInShulkerError; + } + } + } + for (ItemStack inventoryItemStack : inventory.getContents()) { if (inventoryItemStack != null) { if (inventoryItemStack.getItemMeta() instanceof BlockStateMeta blockStateMeta) { @@ -300,6 +314,6 @@ } private enum FilledInventory { - PlayerInventory, ShulkerBox + PlayerInventory, ShulkerBox, ShulkerInShulkerError } }