57 lines
2.4 KiB
Diff
57 lines
2.4 KiB
Diff
From 2051efdcbc0f117371f6d034dfbf36096ef9b4df Mon Sep 17 00:00:00 2001
|
|
From: Andre LeBlanc <andre@norcode.com>
|
|
Date: Sat, 6 Apr 2013 12:00:31 -0400
|
|
Subject: [PATCH] Make AnvilInventory.getItem() use both containers. Fixes
|
|
BUKKIT-2788
|
|
|
|
The AnvilInventory reports its size as the sum of the ingredient and
|
|
result inventories, but when trying to access the slots, only the ingredient
|
|
inventory is used, leading to an ArrayIndexOutOfBounds exception.
|
|
|
|
This change overrides getItem(I) and setItem(I) to use both inventories,
|
|
with the slot number adjusted based on their size.
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
index a91d81a..46a1d38 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
@@ -1,7 +1,9 @@
|
|
package org.bukkit.craftbukkit.inventory;
|
|
|
|
import net.minecraft.server.IInventory;
|
|
+
|
|
import org.bukkit.inventory.AnvilInventory;
|
|
+import org.bukkit.inventory.ItemStack;
|
|
|
|
public class CraftInventoryAnvil extends CraftInventory implements AnvilInventory {
|
|
private final IInventory resultInventory;
|
|
@@ -20,6 +22,26 @@ public class CraftInventoryAnvil extends CraftInventory implements AnvilInventor
|
|
}
|
|
|
|
@Override
|
|
+ public ItemStack getItem(int slot) {
|
|
+ if (slot < getIngredientsInventory().getSize()) {
|
|
+ net.minecraft.server.ItemStack item = getIngredientsInventory().getItem(slot);
|
|
+ return item == null ? null : CraftItemStack.asCraftMirror(item);
|
|
+ } else {
|
|
+ net.minecraft.server.ItemStack item = getResultInventory().getItem(slot - getIngredientsInventory().getSize());
|
|
+ return item == null ? null : CraftItemStack.asCraftMirror(item);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setItem(int index, ItemStack item) {
|
|
+ if (index < getIngredientsInventory().getSize()) {
|
|
+ getIngredientsInventory().setItem(index, (item == null ? null : CraftItemStack.asNMSCopy(item)));
|
|
+ } else {
|
|
+ getResultInventory().setItem((index - getIngredientsInventory().getSize()), (item == null ? null : CraftItemStack.asNMSCopy(item)));
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @Override
|
|
public int getSize() {
|
|
return getResultInventory().getSize() + getIngredientsInventory().getSize();
|
|
}
|
|
--
|
|
1.8.3.2
|
|
|