aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
authorAbdiel Kavash <19243993+AbdielKavash@users.noreply.github.com>2024-11-20 11:08:11 -0600
committerGitHub <noreply@github.com>2024-11-20 18:08:11 +0100
commit36acbb9baed7dae4e19fde7a95852b7d002b2f5c (patch)
tree373ef20415a65c444a214a5398b6c550cfc2b5df /src/main/java/gregtech
parent4ecb0005608fb5774dee56eb751c850d862fa98d (diff)
downloadGT5-Unofficial-36acbb9baed7dae4e19fde7a95852b7d002b2f5c.tar.gz
GT5-Unofficial-36acbb9baed7dae4e19fde7a95852b7d002b2f5c.tar.bz2
GT5-Unofficial-36acbb9baed7dae4e19fde7a95852b7d002b2f5c.zip
Follow up fixes for multiple muffler hatches. (#3505)
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/MTEExtendedPowerMultiBlockBase.java8
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/MTEHatchMuffler.java17
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java84
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTEDieselEngine.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java17
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTEExtremeDieselEngine.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java8
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTEMultiFurnace.java7
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/MTEPCBFactory.java9
9 files changed, 83 insertions, 83 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTEExtendedPowerMultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/MTEExtendedPowerMultiBlockBase.java
index 09bfda2d0a..9ff7f34fe3 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/MTEExtendedPowerMultiBlockBase.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/MTEExtendedPowerMultiBlockBase.java
@@ -2,7 +2,6 @@ package gregtech.api.metatileentity.implementations;
import static gregtech.api.enums.GTValues.VN;
import static gregtech.api.util.GTUtility.filterValidMTEs;
-import static gregtech.api.util.GTUtility.validMTEList;
import java.util.ArrayList;
import java.util.List;
@@ -138,11 +137,6 @@ public abstract class MTEExtendedPowerMultiBlockBase<T extends MTEEnhancedMultiB
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) {
- mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction);
- }
-
long storedEnergy = 0;
long maxEnergy = 0;
for (MTEHatch tHatch : getExoticAndNormalEnergyHatchList()) {
@@ -203,7 +197,7 @@ public abstract class MTEExtendedPowerMultiBlockBase<T extends MTEEnhancedMultiB
+ " %",
/* 6 */ StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" };
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTEHatchMuffler.java b/src/main/java/gregtech/api/metatileentity/implementations/MTEHatchMuffler.java
index 576389de80..d1c957b976 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/MTEHatchMuffler.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/MTEHatchMuffler.java
@@ -194,15 +194,24 @@ public class MTEHatchMuffler extends MTEHatch {
}
/**
- * @param mte The multi-block controller's {@link MetaTileEntity} MetaTileEntity is passed so newer muffler hatches
- * can do wacky things with the multis
+ * @param mte The multi-block controller's {@link MetaTileEntity} MetaTileEntity is passed so newer
+ * muffler hatches can do wacky things with the multis
+ * @param pollutionAmount How much pollution to output. Reduced by muffler efficiency.
* @return pollution success
*/
- public boolean polluteEnvironment(MetaTileEntity mte) {
+ public boolean polluteEnvironment(MetaTileEntity mte, int pollutionAmount) {
if (getBaseMetaTileEntity().getAirAtSide(getBaseMetaTileEntity().getFrontFacing())) {
- Pollution.addPollution(getBaseMetaTileEntity(), calculatePollutionReduction(10000));
+ Pollution.addPollution(getBaseMetaTileEntity(), calculatePollutionReduction(pollutionAmount));
return true;
}
return false;
}
+
+ /**
+ * @deprecated Use {@link #polluteEnvironment(MetaTileEntity, int)}.
+ */
+ @Deprecated
+ public boolean polluteEnvironment(MetaTileEntity mte) {
+ return polluteEnvironment(mte, 10000);
+ }
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java
index 0550e8da7d..1e29d797a4 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/MTEMultiBlockBase.java
@@ -632,23 +632,73 @@ public abstract class MTEMultiBlockBase extends MetaTileEntity
}
public boolean polluteEnvironment(int aPollutionLevel) {
+ final int VENT_AMOUNT = 10_000;
// Early exit if pollution is disabled
if (!GTMod.gregtechproxy.mPollution) return true;
mPollution += aPollutionLevel;
- if (mPollution < 10000) return true;
- var validMufflers = new ArrayList<MTEHatchMuffler>(mMufflerHatches.size());
- validMTEList(mMufflerHatches).forEach(validMufflers::add);
- Collections.shuffle(validMufflers);
- for (MTEHatchMuffler tHatch : validMufflers) {
- if (mPollution >= 10000) {
- if (tHatch.polluteEnvironment(this)) {
- mPollution -= 10000;
- }
+ if (mPollution < VENT_AMOUNT) return true;
+ if (mMufflerHatches.size() == 0) {
+ // No muffler present. Fail.
+ return false;
+ } else if (mMufflerHatches.size() == 1) {
+ // One muffler, use simple method for performance.
+ MTEHatchMuffler muffler = mMufflerHatches.get(0);
+ if (muffler == null || !muffler.isValid()) {
+ // Muffler invalid. Fail.
+ mMufflerHatches.remove(0);
+ return false;
} else {
- break;
+ if (muffler.polluteEnvironment(this, VENT_AMOUNT)) {
+ mPollution -= VENT_AMOUNT;
+ } else {
+ // Muffler blocked. Fail.
+ return false;
+ }
}
+ } else {
+ // Multiple mufflers, split pollution output evenly between all of them.
+ int mufflerCount = 0;
+ int ventAmount = 0; // Allow venting of up to VENT_AMOUNT of pollution per muffler.
+ for (MTEHatchMuffler muffler : validMTEList(mMufflerHatches)) {
+ mufflerCount++;
+ if (ventAmount + VENT_AMOUNT <= mPollution) {
+ ventAmount += VENT_AMOUNT;
+ }
+ }
+ // This might lose some small amount of pollution due to rounding, this is fine.
+ ventAmount /= mufflerCount;
+
+ for (MTEHatchMuffler muffler : validMTEList(mMufflerHatches)) {
+ if (muffler.polluteEnvironment(this, ventAmount)) {
+ mPollution -= ventAmount;
+ } else {
+ // Muffler blocked. Fail.
+ return false;
+ }
+ }
+ }
+ return mPollution < VENT_AMOUNT;
+ }
+
+ /**
+ * How much pollution this outputs to the environment. 100 = outputs all, 0 = outputs none. Calculated as an average
+ * across all muffler hatches.
+ *
+ * @return Fraction of pollution output to the environment (out of 100).
+ */
+ public int getAveragePollutionPercentage() {
+ int pollutionPercent = 0;
+ int mufflerCount = 0;
+ for (MTEHatchMuffler muffler : validMTEList(mMufflerHatches)) {
+ pollutionPercent += muffler.calculatePollutionReduction(100);
+ mufflerCount++;
+ }
+ if (mufflerCount > 0) {
+ pollutionPercent /= mufflerCount;
+ } else {
+ pollutionPercent = 100;
}
- return mPollution < 10000;
+ return pollutionPercent;
}
protected void sendStartMultiBlockSoundLoop() {
@@ -1826,16 +1876,6 @@ public abstract class MTEMultiBlockBase extends MetaTileEntity
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- var validMufflers = new ArrayList<MTEHatchMuffler>(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;
long maxEnergy = 0;
for (MTEHatchEnergy tHatch : validMTEList(mEnergyHatches)) {
@@ -1891,7 +1931,7 @@ public abstract class MTEMultiBlockBase extends MetaTileEntity
+ " %",
/* 6 */ StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" };
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEDieselEngine.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEDieselEngine.java
index 0003c98876..e0ee2c144b 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEDieselEngine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEDieselEngine.java
@@ -40,7 +40,6 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.MTEEnhancedMultiBlockBase;
import gregtech.api.metatileentity.implementations.MTEHatchDynamo;
-import gregtech.api.metatileentity.implementations.MTEHatchMuffler;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
import gregtech.api.recipe.check.CheckRecipeResult;
@@ -334,11 +333,6 @@ public class MTEDieselEngine extends MTEEnhancedMultiBlockBase<MTEDieselEngine>
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) {
- mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction);
- }
-
long storedEnergy = 0;
long maxEnergy = 0;
for (MTEHatchDynamo tHatch : validMTEList(mDynamoHatches)) {
@@ -390,7 +384,7 @@ public class MTEDieselEngine extends MTEEnhancedMultiBlockBase<MTEDieselEngine>
+ " %",
StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" };
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java
index cc62dd11de..551efca684 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java
@@ -53,7 +53,6 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.logic.ProcessingLogic;
import gregtech.api.metatileentity.implementations.MTEHatch;
import gregtech.api.metatileentity.implementations.MTEHatchEnergy;
-import gregtech.api.metatileentity.implementations.MTEHatchMuffler;
import gregtech.api.metatileentity.implementations.MTEHatchOutput;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
@@ -270,24 +269,12 @@ public class MTEElectricBlastFurnace extends MTEAbstractMultiFurnace<MTEElectric
return filterValidMTEs(mOutputHatches);
}
- /**
- * @return 100 -> all released to air, 0 -> all dumped to hatch
- */
- public int getPollutionReduction() {
- int reduction = 100;
- for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) {
- reduction = Math.min(tHatch.calculatePollutionReduction(100), reduction);
- }
- return reduction;
- }
-
protected void multiplyPollutionFluidAmount(@Nonnull FluidStack fluid) {
- fluid.amount = fluid.amount * Math.min(100 - getPollutionReduction(), 100) / 100;
+ fluid.amount = fluid.amount * Math.min(100 - getAveragePollutionPercentage(), 100) / 100;
}
@Override
public String[] getInfoData() {
- int mPollutionReduction = getPollutionReduction();
long storedEnergy = 0;
long maxEnergy = 0;
for (MTEHatchEnergy tHatch : validMTEList(mEnergyHatches)) {
@@ -349,7 +336,7 @@ public class MTEElectricBlastFurnace extends MTEAbstractMultiFurnace<MTEElectric
+ " K",
StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" };
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEExtremeDieselEngine.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEExtremeDieselEngine.java
index d0ed92d0fc..8c708dacca 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEExtremeDieselEngine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEExtremeDieselEngine.java
@@ -20,7 +20,6 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.MTEHatchDynamo;
-import gregtech.api.metatileentity.implementations.MTEHatchMuffler;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
import gregtech.api.recipe.maps.FuelBackend;
@@ -172,11 +171,6 @@ public class MTEExtremeDieselEngine extends MTEDieselEngine {
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) {
- mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction);
- }
-
long storedEnergy = 0;
long maxEnergy = 0;
for (MTEHatchDynamo tHatch : validMTEList(mDynamoHatches)) {
@@ -228,7 +222,7 @@ public class MTEExtremeDieselEngine extends MTEDieselEngine {
+ " %",
StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" };
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java
index ffea5e40f6..c9c643de8c 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java
@@ -50,7 +50,6 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.items.MetaGeneratedTool;
import gregtech.api.metatileentity.implementations.MTEEnhancedMultiBlockBase;
import gregtech.api.metatileentity.implementations.MTEHatchDynamo;
-import gregtech.api.metatileentity.implementations.MTEHatchMuffler;
import gregtech.api.recipe.check.CheckRecipeResult;
import gregtech.api.recipe.check.CheckRecipeResultRegistry;
import gregtech.api.util.GTUtility;
@@ -365,11 +364,6 @@ public abstract class MTELargeTurbine extends MTEEnhancedMultiBlockBase<MTELarge
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) {
- mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction);
- }
-
String tRunning = mMaxProgresstime > 0
? EnumChatFormatting.GREEN + StatCollector.translateToLocal("GT5U.turbine.running.true")
+ EnumChatFormatting.RESET
@@ -437,7 +431,7 @@ public abstract class MTELargeTurbine extends MTEEnhancedMultiBlockBase<MTELarge
"GT5U.turbine.dmg") + ": " + EnumChatFormatting.RED + tDura + EnumChatFormatting.RESET + "%", /* 7 */
StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" /* 8 */
};
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEMultiFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEMultiFurnace.java
index 4d5e1ea3cd..7227e022e5 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEMultiFurnace.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEMultiFurnace.java
@@ -38,7 +38,6 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.MTEHatchEnergy;
-import gregtech.api.metatileentity.implementations.MTEHatchMuffler;
import gregtech.api.recipe.RecipeMap;
import gregtech.api.recipe.RecipeMaps;
import gregtech.api.recipe.check.CheckRecipeResult;
@@ -281,10 +280,6 @@ public class MTEMultiFurnace extends MTEAbstractMultiFurnace<MTEMultiFurnace> im
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- for (final MTEHatchMuffler tHatch : validMTEList(mMufflerHatches))
- mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction);
-
long storedEnergy = 0;
long maxEnergy = 0;
for (final MTEHatchEnergy tHatch : validMTEList(mEnergyHatches)) {
@@ -349,7 +344,7 @@ public class MTEMultiFurnace extends MTEAbstractMultiFurnace<MTEMultiFurnace> im
+ EnumChatFormatting.RESET,
StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %" };
}
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEPCBFactory.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEPCBFactory.java
index 603f66c734..a817464b50 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEPCBFactory.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEPCBFactory.java
@@ -16,7 +16,6 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ASSEMBLY_LINE
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ASSEMBLY_LINE_GLOW;
import static gregtech.api.util.GTStructureUtility.buildHatchAdder;
import static gregtech.api.util.GTStructureUtility.ofFrame;
-import static gregtech.api.util.GTUtility.validMTEList;
import java.util.ArrayList;
import java.util.List;
@@ -73,7 +72,6 @@ import gregtech.api.metatileentity.GregTechTileClientEvents;
import gregtech.api.metatileentity.implementations.MTEExtendedPowerMultiBlockBase;
import gregtech.api.metatileentity.implementations.MTEHatch;
import gregtech.api.metatileentity.implementations.MTEHatchInput;
-import gregtech.api.metatileentity.implementations.MTEHatchMuffler;
import gregtech.api.multitileentity.multiblock.casing.Glasses;
import gregtech.api.objects.ItemData;
import gregtech.api.recipe.RecipeMap;
@@ -763,11 +761,6 @@ public class MTEPCBFactory extends MTEExtendedPowerMultiBlockBase<MTEPCBFactory>
@Override
public String[] getInfoData() {
- int mPollutionReduction = 0;
- for (MTEHatchMuffler tHatch : validMTEList(mMufflerHatches)) {
- mPollutionReduction = Math.max(tHatch.calculatePollutionReduction(100), mPollutionReduction);
- }
-
long storedEnergy = 0;
long maxEnergy = 0;
for (MTEHatch tHatch : getExoticAndNormalEnergyHatchList()) {
@@ -828,7 +821,7 @@ public class MTEPCBFactory extends MTEExtendedPowerMultiBlockBase<MTEPCBFactory>
+ " %",
/* 6 */ StatCollector.translateToLocal("GT5U.multiblock.pollution") + ": "
+ EnumChatFormatting.GREEN
- + mPollutionReduction
+ + getAveragePollutionPercentage()
+ EnumChatFormatting.RESET
+ " %",
/* 7 */ StatCollector.translateToLocal("GT5U.multiblock.parallelism") + ": "