From d688748af6e5f3a909355016d5393c6a0563908f Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 13 Apr 2025 10:26:41 +1000 Subject: [PATCH] SPIGOT-8038: Skip adding/removing air from inventory via API --- .../org/bukkit/craftbukkit/inventory/CraftInventory.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java index 820d06ede..c0983d46c 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -284,6 +284,10 @@ public class CraftInventory implements Inventory { for (int i = 0; i < items.length; i++) { ItemStack item = items[i]; Preconditions.checkArgument(item != null, "ItemStack cannot be null"); + // SPIGOT-8038: Cannot add/remove air. Probably should be an exception, but ignored for compatibility + if (item.getType().isAir()) { + continue; + } while (true) { // Do we already have a stack of it? int firstPartial = firstPartial(item); @@ -348,6 +352,10 @@ public class CraftInventory implements Inventory { for (int i = 0; i < items.length; i++) { ItemStack item = items[i]; Preconditions.checkArgument(item != null, "ItemStack cannot be null"); + // SPIGOT-8038: Cannot add/remove air. Probably should be an exception, but ignored for compatibility + if (item.getType().isAir()) { + continue; + } int toDelete = item.getAmount(); while (true) {