From 8b3638696f36d03ccdf7fd0b4ad427078a6eca3e Mon Sep 17 00:00:00 2001 From: Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> Date: Sun, 8 Jan 2023 16:33:37 +0800 Subject: make sc turbine won't explode when overvoltaged (#128) * make sc turbine won't explode when overvoltaged * cal max power once * request change --- .../tileEntity/SupercriticalFluidTurbine.java | 4 ++++ .../base/GT_MetaTileEntity_LargeTurbineBase.java | 22 ++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java b/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java index fcf842dfd8..a1fddba696 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/SupercriticalFluidTurbine.java @@ -84,6 +84,10 @@ public class SupercriticalFluidTurbine extends GT_MetaTileEntity_LargeTurbineBas tEU = Math.max(1, GT_Utility.safeInt((long) tEU * (long) aBaseEff / 100L)); } + if (tEU > maxPower) { + tEU = GT_Utility.safeInt(maxPower); + } + return tEU; } diff --git a/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java b/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java index 0e44718e9e..41a471e2fd 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/base/GT_MetaTileEntity_LargeTurbineBase.java @@ -80,6 +80,7 @@ public abstract class GT_MetaTileEntity_LargeTurbineBase protected int storedFluid = 0; protected int counter = 0; protected boolean looseFit = false; + protected long maxPower = 0; public GT_MetaTileEntity_LargeTurbineBase(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional); @@ -101,9 +102,14 @@ public abstract class GT_MetaTileEntity_LargeTurbineBase @Override public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { - return checkPiece(STRUCTURE_PIECE_MAIN, 2, 2, 1) + maxPower = 0; + if (checkPiece(STRUCTURE_PIECE_MAIN, 2, 2, 1) && mMaintenanceHatches.size() == 1 - && mMufflerHatches.isEmpty() == (getPollutionPerTick(null) == 0); + && mMufflerHatches.isEmpty() == (getPollutionPerTick(null) == 0)) { + maxPower = getMaximumOutput(); + return true; + } + return false; } public abstract Block getCasingBlock(); @@ -216,6 +222,18 @@ public abstract class GT_MetaTileEntity_LargeTurbineBase return true; } + public long getMaximumOutput() { + long aTotal = 0; + for (GT_MetaTileEntity_Hatch_Dynamo aDynamo : mDynamoHatches) { + if (isValidMetaTileEntity(aDynamo)) { + long aVoltage = aDynamo.maxEUOutput(); + aTotal = aDynamo.maxAmperesOut() * aVoltage; + break; + } + } + return aTotal; + } + @Override public String[] getInfoData() { int mPollutionReduction = 0; -- cgit