--- a/net/minecraft/world/inventory/ContainerShulkerBox.java +++ b/net/minecraft/world/inventory/ContainerShulkerBox.java @@ -6,10 +6,29 @@ import net.minecraft.world.entity.player.PlayerInventory; import net.minecraft.world.item.ItemStack; +// CraftBukkit start +import org.bukkit.craftbukkit.inventory.CraftInventory; +import org.bukkit.craftbukkit.inventory.CraftInventoryView; +// CraftBukkit end + public class ContainerShulkerBox extends Container { private static final int CONTAINER_SIZE = 27; private final IInventory container; + // CraftBukkit start + private CraftInventoryView bukkitEntity; + private PlayerInventory player; + + @Override + public CraftInventoryView getBukkitView() { + if (bukkitEntity != null) { + return bukkitEntity; + } + + bukkitEntity = new CraftInventoryView(this.player.player.getBukkitEntity(), new CraftInventory(this.container), this); + return bukkitEntity; + } + // CraftBukkit end public ContainerShulkerBox(int i, PlayerInventory playerinventory) { this(i, playerinventory, new InventorySubcontainer(27)); @@ -19,6 +38,7 @@ super(Containers.SHULKER_BOX, i); checkContainerSize(iinventory, 27); this.container = iinventory; + this.player = playerinventory; // CraftBukkit - save player iinventory.startOpen(playerinventory.player); boolean flag = true; boolean flag1 = true; @@ -46,6 +66,7 @@ @Override public boolean stillValid(EntityHuman entityhuman) { + if (!this.checkReachable) return true; // CraftBukkit return this.container.stillValid(entityhuman); }