7f9b65035a
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: fe0cadf0 Add BlockShearEntityEvent for Dispensers shearing Sheep 90e5cca3 SPIGOT-4892: Allow to set the currently viewed page of a book on a lectern inventory a30337f7 SPIGOT-4887: Villager level minimum is 1 d88d828c SPIGOT-4886: Villager type SNOWY should be named SNOW CraftBukkit Changes: 6ceffb0d SPIGOT-4895: Bed doesn't explode in Nether and The End ee881847 SPIGOT-4888: setSleepingIgnored resets the night even when there is no one in a bed 15e02b40 SPIGOT-4890: EntityDeathEvent fires twice when breaking an armor stand in survival mode b38a3c33 Add BlockShearEntityEvent for Dispensers shearing Sheep 70ebefca SPIGOT-4891: LecternInventory.getType() should return InventoryType.LECTERN 0036d1b7 SPIGOT-4887: Villager level minimum is 1
61 lines
2.3 KiB
Diff
61 lines
2.3 KiB
Diff
From 740e7b87b8504cf3086a7c636e45990e6cc20b13 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
|
|
index 7e0a20d1d..c3516de7f 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;
|
|
|
|
@@ -344,6 +350,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>();
|
|
|
|
@@ -354,7 +371,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) {
|
|
--
|
|
2.21.0
|
|
|