diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
index 7342179d6b..280a2a5fa8 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
+++ b/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;
             }
         }