diff --git a/src/main/java/com/alttd/playershops/utils/InventoryUtils.java b/src/main/java/com/alttd/playershops/utils/InventoryUtils.java index 6af512c..5b88553 100644 --- a/src/main/java/com/alttd/playershops/utils/InventoryUtils.java +++ b/src/main/java/com/alttd/playershops/utils/InventoryUtils.java @@ -109,17 +109,20 @@ public class InventoryUtils { if (itemStack.getAmount() <= 0) return true; - int overflow = addItem(inventory, itemStack); + int remaining = itemStack.getAmount(); - //revert back if inventory cannot hold all of the items - if (overflow > 0) { - ItemStack revert = itemStack.clone(); - revert.setAmount(revert.getAmount() - overflow); - InventoryUtils.removeItem(inventory, revert); - return false; + for (ItemStack stack : inventory.getStorageContents()) { + if (stack == null || stack.getType().isAir()) { + remaining -= itemStack.getMaxStackSize(); + } else if (stack.isSimilar(itemStack)) { + remaining -= stack.getMaxStackSize() - stack.getAmount(); + } + + if (remaining <= 0) + return true; } - removeItem(inventory, itemStack); - return true; + + return false; } } diff --git a/src/main/java/com/alttd/playershops/utils/ItemMatcher.java b/src/main/java/com/alttd/playershops/utils/ItemMatcher.java index 63ebb8f..eaa340c 100644 --- a/src/main/java/com/alttd/playershops/utils/ItemMatcher.java +++ b/src/main/java/com/alttd/playershops/utils/ItemMatcher.java @@ -266,8 +266,8 @@ public class ItemMatcher { return false; // not the same color // Do we need all of the above checks inside the shulker? - if (Arrays.equals(shulkerBox1.getInventory().getContents(), shulkerBox2.getInventory().getContents())) - return true; // same content + // same content if true + return Arrays.equals(shulkerBox1.getInventory().getContents(), shulkerBox2.getInventory().getContents()); } } return true; @@ -295,7 +295,7 @@ public class ItemMatcher { } if (item1 == null || item2 == null) { - return true; + return false; } if (!item1.getType().equals(item2.getType())) { @@ -310,7 +310,7 @@ public class ItemMatcher { return metaMatches(item1, item2); } - return !item1.hasItemMeta() && !item1.hasItemMeta(); + return !item1.hasItemMeta() && !item2.hasItemMeta(); } protected static boolean metaMatches(ItemStack item1, ItemStack item2) {