From bd417aae7cc375f39af811eb55bc16afd9df3f56 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 20 Apr 2020 16:40:16 +0200 Subject: [PATCH] fixed double chests not being recognized properly --- .../java/de/ellpeck/prettypipes/network/PipeItem.java | 7 ++----- .../de/ellpeck/prettypipes/pipe/PipeTileEntity.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java b/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java index dc3da6b..f30c5f0 100644 --- a/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java +++ b/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java @@ -169,11 +169,8 @@ public class PipeItem implements INBTSerializable, ILiquidContainer } private ItemStack store(PipeTileEntity currPipe) { - TileEntity tile = currPipe.getWorld().getTileEntity(this.destInventory); - if (tile == null) - return this.stack; - Direction dir = Utility.getDirectionFromOffset(this.getDestPipe(), this.destInventory); - IItemHandler handler = tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir).orElse(null); + Direction dir = Utility.getDirectionFromOffset(this.destInventory, this.getDestPipe()); + IItemHandler handler = currPipe.getItemHandler(dir); if (handler == null) return this.stack; return ItemHandlerHelper.insertItemStacked(handler, this.stack, false); diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java b/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java index 93b5aac..723d71b 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java @@ -6,6 +6,8 @@ import de.ellpeck.prettypipes.items.IModule; import de.ellpeck.prettypipes.network.PipeItem; import de.ellpeck.prettypipes.network.PipeNetwork; import de.ellpeck.prettypipes.pipe.modules.containers.MainPipeContainer; +import net.minecraft.block.BlockState; +import net.minecraft.block.ChestBlock; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; @@ -14,6 +16,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.profiler.IProfiler; +import net.minecraft.tileentity.ChestTileEntity; import net.minecraft.tileentity.ITickableTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; @@ -25,6 +28,7 @@ import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.wrapper.InvWrapper; import org.apache.commons.lang3.tuple.Pair; import javax.annotation.Nonnull; @@ -174,6 +178,12 @@ public class PipeTileEntity extends TileEntity implements INamedContainerProvide TileEntity tile = this.world.getTileEntity(this.pos.offset(dir)); if (tile == null) return null; + // if we don't do this, then chests get really weird + if (tile instanceof ChestTileEntity) { + BlockState state = this.world.getBlockState(tile.getPos()); + if (state.getBlock() instanceof ChestBlock) + return new InvWrapper(ChestBlock.func_226916_a_((ChestBlock) state.getBlock(), state, this.world, tile.getPos(), true)); + } return tile.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite()).orElse(null); }