aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch')
-rw-r--r--Spigot-Server-Patches-Unmapped/0276-Inventory-removeItemAnySlot.patch58
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) {