From 8ee08dfde1a4cca3068106cfeca19073c903653f Mon Sep 17 00:00:00 2001 From: nshepperd Date: Fri, 15 Nov 2024 02:06:06 +1100 Subject: Fix advanced mufflers in the XLGT and other multiblocks with >1 muffler hatch (#3489) --- .../metatileentity/implementations/MTEMultiBlockBase.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/main/java/gregtech/api/metatileentity/implementations') diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java index d250943a23..5b29f886f0 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java @@ -635,7 +635,11 @@ public abstract class MTEMultiBlockBase extends MetaTileEntity // Early exit if pollution is disabled if (!GTMod.gregtechproxy.mPollution) return true; mPollution += aPollutionLevel; - for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) { + if (mPollution < 10000) return true; + var validMufflers = new ArrayList(mMufflerHatches.size()); + validMTEList(mMufflerHatches).forEach(validMufflers::add); + Collections.shuffle(validMufflers); + for (MTEHatchMuffler tHatch : validMufflers) { if (mPollution >= 10000) { if (tHatch.polluteEnvironment(this)) { mPollution -= 10000; @@ -1823,8 +1827,13 @@ public abstract class MTEMultiBlockBase extends MetaTileEntity @Override public String[] getInfoData() { int mPollutionReduction = 0; - for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) { - mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction); + var validMufflers = new ArrayList(mMufflerHatches.size()); + validMTEList(mMufflerHatches).forEach(validMufflers::add); + if (validMufflers.size() > 0) { + for (MTEHatchMuffler tHatch : validMufflers) { + mPollutionReduction += tHatch.calculatePollutionReduction(100); + } + mPollutionReduction /= validMufflers.size(); } long storedEnergy = 0; -- cgit