From a885a5f0eeac972c5ed4e889684298437b670710 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Mon, 17 Dec 2012 15:53:25 -0600 Subject: [PATCH] Change enchantment comparisons to isSimilar. Fixes BUKKIT-3183 The purpose of the isSimilar method was designed to consider all NBT data, not solely enchantments, without the need to have exact stack size matches. The respective methods in CraftInventory were still comparing enchantments instead of the ItemMeta. By: Wesley Wolfe --- .../craftbukkit/inventory/CraftInventory.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java index 7342179d6b..280a2a5fa8 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -147,7 +147,7 @@ public class CraftInventory implements Inventory { return true; } for (ItemStack i : getContents()) { - if (i != null && item.getTypeId() == i.getTypeId() && item.getDurability() == i.getDurability() && item.getEnchantments().equals(i.getEnchantments()) && (amount -= i.getAmount()) <= 0) { + if (item.isSimilar(i) && (amount -= i.getAmount()) <= 0) { return true; } } @@ -213,15 +213,7 @@ public class CraftInventory implements Inventory { for (int i = 0; i < inventory.length; i++) { if (inventory[i] == null) continue; - boolean equals = false; - - if (withAmount) { - equals = item.equals(inventory[i]); - } else { - equals = item.getTypeId() == inventory[i].getTypeId() && item.getDurability() == inventory[i].getDurability() && item.getEnchantments().equals(inventory[i].getEnchantments()); - } - - if (equals) { + if (withAmount ? item.equals(inventory[i]) : item.isSimilar(inventory[i])) { return i; } } @@ -262,7 +254,7 @@ public class CraftInventory implements Inventory { } for (int i = 0; i < inventory.length; i++) { ItemStack cItem = inventory[i]; - if (cItem != null && cItem.getTypeId() == filteredItem.getTypeId() && cItem.getAmount() < cItem.getMaxStackSize() && cItem.getDurability() == filteredItem.getDurability() && cItem.getEnchantments().equals(filteredItem.getEnchantments())) { + if (cItem != null && cItem.getAmount() < cItem.getMaxStackSize() && cItem.isSimilar(filteredItem)) { return i; } }