From fc36b70902a71df3df2c1b24f6cd0f2af1876322 Mon Sep 17 00:00:00 2001 From: miozune Date: Tue, 12 Dec 2023 19:16:02 +0900 Subject: [PATCH] Fix crash with Nq Gen if coolant has just been depleted (#226) --- .../blocks/tileEntity/MultiNqGenerator.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java b/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java index 0d3f48ac..a5b0f731 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/MultiNqGenerator.java @@ -246,7 +246,7 @@ public boolean onRunningTick(ItemStack stack) { // If there's no startRecipeProcessing, ME input hatch wouldn't work startRecipeProcessing(); FluidStack[] input = getStoredFluids().toArray(new FluidStack[0]); - int eff = 100, time = 1; + int time = 1; if (LiquidAirConsumptionPerSecond != 0 && !consumeFuel(Materials.LiquidAir.getFluid(LiquidAirConsumptionPerSecond), input)) { this.mEUt = 0; @@ -255,7 +255,7 @@ public boolean onRunningTick(ItemStack stack) { endRecipeProcessing(); return true; } - if (getCoolant(input, true) != null) eff = getCoolant(input, false).getValue(); + int eff = consumeCoolant(input); if (consumeFuel(lockedFluid, input)) time = times; this.mEUt = basicOutput * eff * time / 100; this.trueEff = eff; @@ -309,17 +309,23 @@ public Pair getExcited(FluidStack[] input, boolean isConsum return null; } - public Pair getCoolant(FluidStack[] input, boolean isConsume) { + /** + * Finds valid coolant from given inputs and consumes if found. + * + * @param input Fluid inputs. + * @return Efficiency of the coolant. 100 if not found. + */ + private int consumeCoolant(FluidStack[] input) { for (Pair fluidPair : coolant) { FluidStack tFluid = fluidPair.getKey(); for (FluidStack inFluid : input) { if (inFluid != null && inFluid.isFluidEqual(tFluid) && inFluid.amount >= tFluid.amount) { - if (isConsume) inFluid.amount -= tFluid.amount; - return fluidPair; + inFluid.amount -= tFluid.amount; + return fluidPair.getValue(); } } } - return null; + return 100; } public void addAutoEnergy(long outputPower) {