From 79b0c5ef8631cfe088ec0ff34291c792ecf9f1c6 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Mon, 8 Sep 2014 15:27:34 +0200 Subject: [PATCH] Implement IFluidHandler properly on all blocks. Should fix all ExtraCells dupe bugs. --- .../java/tconstruct/smeltery/logic/CastingBasinLogic.java | 2 ++ .../java/tconstruct/smeltery/logic/CastingTableLogic.java | 2 ++ .../java/tconstruct/smeltery/logic/LavaTankLogic.java | 8 +++++++- .../tconstruct/smeltery/logic/SmelteryDrainLogic.java | 4 ++-- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/tconstruct/smeltery/logic/CastingBasinLogic.java b/src/main/java/tconstruct/smeltery/logic/CastingBasinLogic.java index b6521828337..2cb26989f33 100644 --- a/src/main/java/tconstruct/smeltery/logic/CastingBasinLogic.java +++ b/src/main/java/tconstruct/smeltery/logic/CastingBasinLogic.java @@ -263,6 +263,8 @@ public FluidStack drain (ForgeDirection from, int maxDrain, boolean doDrain) @Override public FluidStack drain (ForgeDirection from, FluidStack resource, boolean doDrain) { + if(liquid.getFluid() == resource.getFluid()) + this.drain(resource.amount, doDrain); return null; } diff --git a/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java b/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java index c2970940b28..20d4ee658c5 100644 --- a/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java +++ b/src/main/java/tconstruct/smeltery/logic/CastingTableLogic.java @@ -263,6 +263,8 @@ public FluidStack drain (ForgeDirection from, int maxDrain, boolean doDrain) @Override public FluidStack drain (ForgeDirection from, FluidStack resource, boolean doDrain) { + if(liquid.getFluid() == resource.getFluid()) + this.drain(resource.amount, doDrain); return null; } diff --git a/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java b/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java index 990b97d540e..141eaff2772 100644 --- a/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java +++ b/src/main/java/tconstruct/smeltery/logic/LavaTankLogic.java @@ -53,7 +53,13 @@ public FluidStack drain (ForgeDirection from, int maxDrain, boolean doDrain) @Override public FluidStack drain (ForgeDirection from, FluidStack resource, boolean doDrain) { - return null; + if(tank.getFluidAmount() == 0) + return null; + if(tank.getFluid().getFluid() != resource.getFluid()) + return null; + + // same fluid, k + return this.drain(from, resource.amount, doDrain); } @Override diff --git a/src/main/java/tconstruct/smeltery/logic/SmelteryDrainLogic.java b/src/main/java/tconstruct/smeltery/logic/SmelteryDrainLogic.java index e9f4f1f6a55..29ccf92e678 100644 --- a/src/main/java/tconstruct/smeltery/logic/SmelteryDrainLogic.java +++ b/src/main/java/tconstruct/smeltery/logic/SmelteryDrainLogic.java @@ -60,10 +60,10 @@ public FluidStack drain (ForgeDirection from, int maxDrain, boolean doDrain) @Override public FluidStack drain (ForgeDirection from, FluidStack resource, boolean doDrain) { - if (hasValidMaster() && canDrain(from, null)) + if (hasValidMaster() && canDrain(from, resource.getFluid())) { SmelteryLogic smeltery = (SmelteryLogic) worldObj.getTileEntity(getMasterPosition().x, getMasterPosition().y, getMasterPosition().z); - if(resource.getFluid() == smeltery.getFluid()){ + if(resource.getFluid() == smeltery.getFluid().getFluid()) { return smeltery.drain(resource.amount, doDrain); } }