--- ../src-base/minecraft/net/minecraft/tileentity/TileEntityChest.java +++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityChest.java @@ -116,6 +116,7 @@ { super.func_145836_u(); this.field_145984_a = false; + doubleChestHandler = null; } @SuppressWarnings("incomplete-switch") @@ -167,6 +168,7 @@ { if (!this.field_145984_a) { + if (this.field_145850_b == null || !this.field_145850_b.func_175697_a(this.field_174879_c, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbors this.field_145984_a = true; this.field_145991_k = this.func_174911_a(EnumFacing.WEST); this.field_145990_j = this.func_174911_a(EnumFacing.EAST); @@ -349,6 +351,29 @@ } } + public net.minecraftforge.items.VanillaDoubleChestItemHandler doubleChestHandler; + + @SuppressWarnings("unchecked") + @Override + @Nullable + public T getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable net.minecraft.util.EnumFacing facing) + { + if (capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) + { + if(doubleChestHandler == null || doubleChestHandler.needsRefresh()) + doubleChestHandler = net.minecraftforge.items.VanillaDoubleChestItemHandler.get(this); + if (doubleChestHandler != null && doubleChestHandler != net.minecraftforge.items.VanillaDoubleChestItemHandler.NO_ADJACENT_CHESTS_INSTANCE) + return (T) doubleChestHandler; + } + return super.getCapability(capability, facing); + } + + public net.minecraftforge.items.IItemHandler getSingleChestHandler() + { + return super.getCapability(net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); + } + + public void func_145843_s() { super.func_145843_s();