From d0fbec6c6baa1315faccb6f6f8dfbf48f68c248c Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Thu, 28 Aug 2025 08:04:52 +0100 Subject: [PATCH] Add bounds checks for compartment lookup This *shouldn't* be needed, as the compartment index is always >= 0, and Inventory.getItem returns an empty stack if the item is not found. However, some mods pass a negative compartment index, which causes getItem to throw an AIOOB instead. Fixes #2267 --- .../java/dan200/computercraft/shared/util/InventoryUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java b/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java index c2acfe1f5..4616f8328 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java @@ -54,7 +54,7 @@ public final class InventoryUtil { */ public static int getInventorySlotFromCompartment(Player player, int slot, ItemStack stack) { if (stack.isEmpty()) throw new IllegalArgumentException("Cannot search for empty stack"); - if (player.getInventory().getItem(slot) == stack) return slot; + if (slot >= 0 && slot < Inventory.INVENTORY_SIZE && player.getInventory().getItem(slot) == stack) return slot; if (player.getInventory().getItem(Inventory.SLOT_OFFHAND) == stack) return Inventory.SLOT_OFFHAND; return -1; }