diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java b/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java index 585913163a..73d33f961f 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/CoolantTower.java @@ -27,6 +27,7 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_MultiInput; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_ModHandler; @@ -188,19 +189,35 @@ public class CoolantTower extends GT_MetaTileEntity_TooltipMultiBlockBase_EM @Override public boolean checkRecipe_EM(ItemStack aStack) { - this.mMaxProgresstime = 100; + this.mMaxProgresstime = 20; int steam = 0; - for (FluidStack steams : getStoredFluids()) { - if (GT_Utility.areFluidsEqual(steams, GT_ModHandler.getSteam(1))) { - steam += steams.amount; - } + + for (GT_MetaTileEntity_Hatch_Input tHatch : mInputHatches) { + steam += maybeDrainHatch(tHatch); } - steam = steam / 160 * 160; - depleteInput(GT_ModHandler.getSteam(steam)); addOutput(GT_ModHandler.getDistilledWater(steam / 160)); return true; } + private int maybeDrainHatch(GT_MetaTileEntity_Hatch_Input tHatch) { + if (!isValidMetaTileEntity(tHatch)) return 0; + if (tHatch instanceof GT_MetaTileEntity_Hatch_MultiInput) { + int drained = 0; + for (FluidStack maybeSteam : ((GT_MetaTileEntity_Hatch_MultiInput) tHatch).getStoredFluid()) { + drained += maybeDrainSteam(tHatch, maybeSteam); + } + return drained; + } + return maybeDrainSteam(tHatch, tHatch.getFillableStack()); + } + + private int maybeDrainSteam(GT_MetaTileEntity_Hatch_Input tHatch, FluidStack maybeSteam) { + if (!isValidMetaTileEntity(tHatch) || maybeSteam == null) return 0; + if (!GT_Utility.areFluidsEqual(maybeSteam, GT_ModHandler.getSteam(1))) return 0; + FluidStack defoSteam = tHatch.drain(ForgeDirection.UNKNOWN, maybeSteam, true); + return defoSteam.amount; + } + @Override public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, ForgeDirection side, ForgeDirection facing, int colorIndex, boolean aActive, boolean aRedstone) { |