Validate slot in PlayerInventory#setSlot

The CraftPlayerInventory implementation sends a container_set_slot
packet to the client which will error if an invalid slot is passed to
the setSlot method, making a validation necessary over simply silently
ignoring invalid slot values.
This commit is contained in:
strnq 2024-09-14 12:53:13 +03:00
parent 1cd7fd4eec
commit 883f50eb19

View file

@ -70,6 +70,11 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i
@Override
public void setItem(int index, ItemStack item) {
// Paper start - Validate setItem index
if (index < 0 || index > 40) {
throw new ArrayIndexOutOfBoundsException("Index must be between 0 and 40");
}
// Paper end - Validate setItem index
super.setItem(index, item);
if (this.getHolder() == null) return;
ServerPlayer player = ((CraftPlayer) this.getHolder()).getHandle();