aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
authorreobf <117543727+reobf@users.noreply.github.com>2024-09-26 23:20:46 +0800
committerGitHub <noreply@github.com>2024-09-26 15:20:46 +0000
commit302a698ae45397a4ccbe7e844e6f523c62b9f6c0 (patch)
treea6e4ddfb772f14837478943e1c36ba786811480b /src/main/java/gregtech/common
parent05f8dd49f6117444ecd09679d278c2b37d22102a (diff)
downloadGT5-Unofficial-302a698ae45397a4ccbe7e844e6f523c62b9f6c0.tar.gz
GT5-Unofficial-302a698ae45397a4ccbe7e844e6f523c62b9f6c0.tar.bz2
GT5-Unofficial-302a698ae45397a4ccbe7e844e6f523c62b9f6c0.zip
Fix Heat Exchanger interaction with Stocking Input Hatch(ME) (#3271)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTEHeatExchanger.java41
1 files changed, 34 insertions, 7 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEHeatExchanger.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEHeatExchanger.java
index fb90f1acc4..688fa3e706 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEHeatExchanger.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEHeatExchanger.java
@@ -48,6 +48,8 @@ import gregtech.api.util.GTLog;
import gregtech.api.util.GTModHandler;
import gregtech.api.util.GTUtility;
import gregtech.api.util.MultiblockTooltipBuilder;
+import gregtech.common.tileentities.machines.IRecipeProcessingAwareHatch;
+import gregtech.common.tileentities.machines.MTEHatchInputME;
public class MTEHeatExchanger extends MTEEnhancedMultiBlockBase<MTEHeatExchanger> implements ISurvivalConstructable {
@@ -179,9 +181,19 @@ public class MTEHeatExchanger extends MTEEnhancedMultiBlockBase<MTEHeatExchanger
@Override
@Nonnull
public CheckRecipeResult checkProcessing() {
- if (mInputHotFluidHatch.getFluid() == null) return CheckRecipeResultRegistry.NO_RECIPE;
+ FluidStack hotFluid = null;
+ if (mInputHotFluidHatch instanceof MTEHatchInputME inputME) {
+ FluidStack[] fluids = inputME.getStoredFluids();
+ if (fluids.length > 0) {
+ hotFluid = fluids[0];
+ }
+ } else {
+ hotFluid = mInputHotFluidHatch.getFluid();
+ }
+
+ if (hotFluid == null) return CheckRecipeResultRegistry.NO_RECIPE;
- int fluidAmountToConsume = mInputHotFluidHatch.getFluidAmount(); // how much fluid is in hatch
+ int fluidAmountToConsume = hotFluid.amount; // how much fluid is in hatch
superheated_threshold = 4000; // default: must have 4000L per second to generate superheated steam
float efficiency = 1f; // default: operate at 100% efficiency with no integrated circuitry
@@ -202,9 +214,7 @@ public class MTEHeatExchanger extends MTEEnhancedMultiBlockBase<MTEHeatExchanger
efficiency -= penalty;
- var coolant = LHECoolantRegistry.getCoolant(
- mInputHotFluidHatch.getFluid()
- .getFluid());
+ var coolant = LHECoolantRegistry.getCoolant(hotFluid.getFluid());
if (coolant == null) {
superheated_threshold = 0;
@@ -220,8 +230,9 @@ public class MTEHeatExchanger extends MTEEnhancedMultiBlockBase<MTEHeatExchanger
// Don't consume too much hot fluid per second
fluidAmountToConsume = Math.min(fluidAmountToConsume, superheated_threshold * 2);
-
- mInputHotFluidHatch.drain(fluidAmountToConsume, true);
+ // the 3-arg drain will work on both normal hatch and ME hatch
+ mInputHotFluidHatch
+ .drain(ForgeDirection.UNKNOWN, new FluidStack(hotFluid.getFluid(), fluidAmountToConsume), true);
mOutputColdFluidHatch.fill(coolant.getColdFluid(fluidAmountToConsume), true);
this.mMaxProgresstime = 20;
@@ -393,4 +404,20 @@ public class MTEHeatExchanger extends MTEEnhancedMultiBlockBase<MTEHeatExchanger
if (mMachine) return -1;
return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 1, 3, 0, elementBudget, env, false, true);
}
+
+ @Override
+ public void startRecipeProcessing() {
+ super.startRecipeProcessing();
+ if (mInputHotFluidHatch instanceof IRecipeProcessingAwareHatch aware && mInputHotFluidHatch.isValid()) {
+ aware.startRecipeProcessing();
+ }
+ }
+
+ @Override
+ public void endRecipeProcessing() {
+ super.endRecipeProcessing();
+ if (mInputHotFluidHatch instanceof IRecipeProcessingAwareHatch aware && mInputHotFluidHatch.isValid()) {
+ aware.endRecipeProcessing(this);
+ }
+ }
}