--- ../src-base/minecraft/net/minecraft/inventory/ContainerDispenser.java +++ ../src-work/minecraft/net/minecraft/inventory/ContainerDispenser.java @@ -4,14 +4,28 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityDispenser; +// CraftBukkit start +import net.minecraft.entity.player.InventoryPlayer; +import org.bukkit.craftbukkit.inventory.CraftInventory; +import org.bukkit.craftbukkit.inventory.CraftInventoryView; +// CraftBukkit end + public class ContainerDispenser extends Container { - private TileEntityDispenser tileDispenser; + public TileEntityDispenser tileDispenser; // CraftBukkit - private -> public + // CraftBukkit start + private CraftInventoryView bukkitEntity = null; + private InventoryPlayer player; + // CraftBukkit end private static final String __OBFID = "CL_00001763"; public ContainerDispenser(IInventory p_i1825_1_, TileEntityDispenser p_i1825_2_) { this.tileDispenser = p_i1825_2_; + // CraftBukkit start - Save player + // TODO: Should we check to make sure it really is an InventoryPlayer? + this.player = (InventoryPlayer)p_i1825_1_; + // CraftBukkit end int i; int j; @@ -39,6 +53,13 @@ public boolean canInteractWith(EntityPlayer p_75145_1_) { + // CraftBukkit start + if (!this.checkReachable) + { + return true; + } + // CraftBukkit end + return this.tileDispenser.isUseableByPlayer(p_75145_1_); } @@ -83,4 +104,18 @@ return itemstack; } + + // CraftBukkit start + public CraftInventoryView getBukkitView() + { + if (bukkitEntity != null) + { + return bukkitEntity; + } + + CraftInventory inventory = new CraftInventory(this.tileDispenser); + bukkitEntity = new CraftInventoryView(this.player.player.getBukkitEntity(), inventory, this); + return bukkitEntity; + } + // CraftBukkit end }