diff options
author | Alex Bee <a.bramley@gmail.com> | 2023-07-13 19:28:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-13 20:28:48 +0200 |
commit | 1c0cb9c31db25ee923ae3897565f81f3f66137fb (patch) | |
tree | 6d92036b690cb6cf08e66df30805d5cef92b8b8d /src/main/java/goodgenerator/blocks/tileEntity | |
parent | 4be16e993f39b6939e003c2f6c405dbcae037a75 (diff) | |
download | GT5-Unofficial-1c0cb9c31db25ee923ae3897565f81f3f66137fb.tar.gz GT5-Unofficial-1c0cb9c31db25ee923ae3897565f81f3f66137fb.tar.bz2 GT5-Unofficial-1c0cb9c31db25ee923ae3897565f81f3f66137fb.zip |
Coolant Tower: pull steam from all available hatches. (#167)
Diffstat (limited to 'src/main/java/goodgenerator/blocks/tileEntity')
-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) { |