--- ../src-base/minecraft/net/minecraft/inventory/ContainerChest.java +++ ../src-work/minecraft/net/minecraft/inventory/ContainerChest.java @@ -3,10 +3,46 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +// CraftBukkit start +import net.minecraft.entity.player.InventoryPlayer; +import org.bukkit.craftbukkit.inventory.CraftInventory; +import org.bukkit.craftbukkit.inventory.CraftInventoryView; +// CraftBukkit end + public class ContainerChest extends Container { - private IInventory lowerChestInventory; + public IInventory lowerChestInventory; // CraftBukkit - private->public private int numRows; + // CraftBukkit start + private CraftInventoryView bukkitEntity = null; + private InventoryPlayer player; + + public CraftInventoryView getBukkitView() + { + if (bukkitEntity != null || player == null) // Cauldron + { + return bukkitEntity; + } + + CraftInventory inventory; + + if (this.lowerChestInventory instanceof InventoryPlayer) + { + inventory = new org.bukkit.craftbukkit.inventory.CraftInventoryPlayer((InventoryPlayer) this.lowerChestInventory); + } + else if (this.lowerChestInventory instanceof InventoryLargeChest) + { + inventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((InventoryLargeChest) this.lowerChestInventory); + } + else + { + inventory = new CraftInventory(this.lowerChestInventory); + } + + bukkitEntity = new CraftInventoryView(this.player.player.getBukkitEntity(), inventory, this); + return bukkitEntity; + } + // CraftBukkit end private static final String __OBFID = "CL_00001742"; public ContainerChest(IInventory p_i1806_1_, IInventory p_i1806_2_) @@ -15,6 +51,12 @@ this.numRows = p_i1806_2_.getSizeInventory() / 9; p_i1806_2_.openInventory(); int i = (this.numRows - 4) * 18; + // CraftBukkit start - Save player + if (p_i1806_1_ instanceof InventoryPlayer) // Cauldron - make sure it is an InventoryPlayer before casting + { + this.player = (InventoryPlayer) p_i1806_1_; + } + // CraftBukkit end int j; int k; @@ -42,6 +84,13 @@ public boolean canInteractWith(EntityPlayer p_75145_1_) { + // CraftBukkit start + if (!this.checkReachable) + { + return true; + } + // CraftBukkit end + return this.lowerChestInventory.isUseableByPlayer(p_75145_1_); }