From fcb663754350649e9ce01769f54f850a2c6d262e Mon Sep 17 00:00:00 2001 From: Technus Date: Sun, 7 Jan 2018 11:11:43 +0100 Subject: Fix behaviour of disconnected fluid pipes --- .../api/metatileentity/MetaPipeEntity.java | 2 +- .../implementations/GT_MetaPipeEntity_Fluid.java | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'src/main/java/gregtech') diff --git a/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java index 5f1d7cbd44..1df2929071 100644 --- a/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java @@ -739,7 +739,7 @@ public abstract class MetaPipeEntity implements IMetaTileEntity, IConnectable { mConnections |= (1 << aSide); byte tSide = GT_Utility.getOppositeSide(aSide); IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSide(aSide); - IMetaTileEntity tPipe = tTileEntity instanceof IGregTechTileEntity ? ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() : null; + IMetaTileEntity tPipe = tTileEntity != null ? tTileEntity.getMetaTileEntity() : null; if (this.getClass().isInstance(tPipe) && !((MetaPipeEntity) tPipe).isConnectedAtSide(tSide)) ((MetaPipeEntity) tPipe).connect(tSide); return 1; diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java index eb403aa5f0..9100daa8d2 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java @@ -649,4 +649,29 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity { if (inputAABB.intersectsWith(aabb)) outputAABB.add(aabb); } } + + @Override + public FluidStack drain(ForgeDirection aSide, int maxDrain, boolean doDrain) { + if(isConnectedAtSide(aSide.ordinal()) || aSide==ForgeDirection.UNKNOWN) + return super.drain(aSide, maxDrain, doDrain); + return null; + } + + @Override + public FluidStack drain(ForgeDirection aSide, FluidStack aFluid, boolean doDrain) { + if(isConnectedAtSide(aSide.ordinal()) || aSide==ForgeDirection.UNKNOWN) + return super.drain(aSide, aFluid, doDrain); + return null; + } + + //Stub method? + //@Override + //public int fill(FluidStack resource, boolean doFill) {} + + @Override + public int fill(ForgeDirection aSide, FluidStack aFluid, boolean doFill) { + if(isConnectedAtSide(aSide.ordinal()) || aSide==ForgeDirection.UNKNOWN) + return super.fill(aSide, aFluid, doFill); + return 0; + } } -- cgit