aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/goodgenerator/blocks/tileEntity
diff options
context:
space:
mode:
authorAlex Bee <a.bramley@gmail.com>2023-07-13 19:28:48 +0100
committerGitHub <noreply@github.com>2023-07-13 20:28:48 +0200
commit1c0cb9c31db25ee923ae3897565f81f3f66137fb (patch)
tree6d92036b690cb6cf08e66df30805d5cef92b8b8d /src/main/java/goodgenerator/blocks/tileEntity
parent4be16e993f39b6939e003c2f6c405dbcae037a75 (diff)
downloadGT5-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.java31
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) {