--- a/net/minecraft/world/InventoryLargeChest.java +++ b/net/minecraft/world/InventoryLargeChest.java @@ -3,11 +3,62 @@ import net.minecraft.world.entity.player.EntityHuman; import net.minecraft.world.item.ItemStack; +// CraftBukkit start +import java.util.ArrayList; +import java.util.List; +import org.bukkit.Location; + +import org.bukkit.craftbukkit.entity.CraftHumanEntity; +import org.bukkit.entity.HumanEntity; +// CraftBukkit end + public class InventoryLargeChest implements IInventory { public final IInventory container1; public final IInventory container2; + // CraftBukkit start - add fields and methods + public List transaction = new java.util.ArrayList(); + + public List getContents() { + List result = new ArrayList(this.getSize()); + for (int i = 0; i < this.getSize(); i++) { + result.add(this.getItem(i)); + } + return result; + } + + public void onOpen(CraftHumanEntity who) { + this.container1.onOpen(who); + this.container2.onOpen(who); + transaction.add(who); + } + + public void onClose(CraftHumanEntity who) { + this.container1.onClose(who); + this.container2.onClose(who); + transaction.remove(who); + } + + public List getViewers() { + return transaction; + } + + public org.bukkit.inventory.InventoryHolder getOwner() { + return null; // This method won't be called since CraftInventoryDoubleChest doesn't defer to here + } + + public void setMaxStackSize(int size) { + this.container1.setMaxStackSize(size); + this.container2.setMaxStackSize(size); + } + + @Override + public Location getLocation() { + return container1.getLocation(); // TODO: right? + } + // CraftBukkit end + public InventoryLargeChest(IInventory iinventory, IInventory iinventory1) { if (iinventory == null) { iinventory = iinventory1; @@ -62,7 +113,7 @@ @Override public int getMaxStackSize() { - return this.container1.getMaxStackSize(); + return Math.min(this.container1.getMaxStackSize(), this.container2.getMaxStackSize()); // CraftBukkit - check both sides } @Override