diff options
Diffstat (limited to 'Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch')
-rw-r--r-- | Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch b/Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch new file mode 100644 index 0000000000..fb782929de --- /dev/null +++ b/Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Zach Brown <[email protected]> +Date: Tue, 28 Aug 2018 23:04:15 -0400 +Subject: [PATCH] Inventory#removeItemAnySlot + + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +index 28b8f5f61872f4c21c81c524029454a2aaf74ea6..5e0180ac658db9d7c9d90fd3d3c4eddf6f34c90d 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +@@ -223,10 +223,16 @@ public class CraftInventory implements Inventory { + } + + private int first(ItemStack item, boolean withAmount) { ++ // Paper start ++ return first(item, withAmount, getStorageContents()); ++ } ++ ++ private int first(ItemStack item, boolean withAmount, ItemStack[] inventory) { ++ // Paper end + if (item == null) { + return -1; + } +- ItemStack[] inventory = getStorageContents(); ++ //ItemStack[] inventory = getStorageContents(); // Paper - let param deal + for (int i = 0; i < inventory.length; i++) { + if (inventory[i] == null) continue; + +@@ -349,6 +355,17 @@ public class CraftInventory implements Inventory { + + @Override + public HashMap<Integer, ItemStack> removeItem(ItemStack... items) { ++ // Paper start ++ return removeItem(false, items); ++ } ++ ++ @Override ++ public HashMap<Integer, ItemStack> removeItemAnySlot(ItemStack... items) { ++ return removeItem(true, items); ++ } ++ ++ private HashMap<Integer, ItemStack> removeItem(boolean searchEntire, ItemStack... items) { ++ // Paper end + Validate.notNull(items, "Items cannot be null"); + HashMap<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>(); + +@@ -359,7 +376,10 @@ public class CraftInventory implements Inventory { + int toDelete = item.getAmount(); + + while (true) { +- int first = first(item, false); ++ // Paper start - Allow searching entire contents ++ ItemStack[] toSearch = searchEntire ? getContents() : getStorageContents(); ++ int first = first(item, false, toSearch); ++ // Paper end + + // Drat! we don't have this type in the inventory + if (first == -1) { |