2021-06-11 14:02:28 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
|
|
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
|
2023-07-04 10:22:56 +02:00
|
|
|
index 89706da0940ac6bbb3c34f0a8815783edd6cd772..e97c7809fa6572695377e5ca63bf86e5515ef531 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java
|
2023-06-13 01:51:45 +02:00
|
|
|
@@ -223,10 +223,16 @@ public class CraftInventory implements Inventory {
|
2021-06-11 14:02:28 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
2021-06-13 01:45:00 +02:00
|
|
|
- ItemStack[] inventory = this.getStorageContents();
|
|
|
|
+ // ItemStack[] inventory = this.getStorageContents(); // Paper - let param deal
|
2021-06-11 14:02:28 +02:00
|
|
|
for (int i = 0; i < inventory.length; i++) {
|
|
|
|
if (inventory[i] == null) continue;
|
|
|
|
|
2023-06-13 01:51:45 +02:00
|
|
|
@@ -350,6 +356,17 @@ public class CraftInventory implements Inventory {
|
2021-06-11 14:02:28 +02:00
|
|
|
|
|
|
|
@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
|
2023-06-13 01:51:45 +02:00
|
|
|
Preconditions.checkArgument(items != null, "items cannot be null");
|
2021-06-11 14:02:28 +02:00
|
|
|
HashMap<Integer, ItemStack> leftover = new HashMap<Integer, ItemStack>();
|
|
|
|
|
2023-03-24 21:38:40 +01:00
|
|
|
@@ -361,7 +378,10 @@ public class CraftInventory implements Inventory {
|
2021-06-11 14:02:28 +02:00
|
|
|
int toDelete = item.getAmount();
|
|
|
|
|
|
|
|
while (true) {
|
2021-06-13 01:45:00 +02:00
|
|
|
- int first = this.first(item, false);
|
2021-06-11 14:02:28 +02:00
|
|
|
+ // Paper start - Allow searching entire contents
|
|
|
|
+ ItemStack[] toSearch = searchEntire ? getContents() : getStorageContents();
|
2021-06-13 01:45:00 +02:00
|
|
|
+ int first = this.first(item, false, toSearch);
|
2021-06-11 14:02:28 +02:00
|
|
|
+ // Paper end
|
|
|
|
|
|
|
|
// Drat! we don't have this type in the inventory
|
|
|
|
if (first == -1) {
|