aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus
diff options
context:
space:
mode:
authorBlueWeabo <76872108+BlueWeabo@users.noreply.github.com>2023-02-02 01:05:32 +0200
committerGitHub <noreply@github.com>2023-02-02 00:05:32 +0100
commitcc9db2de0b8a7dbb60e689e990ba7b621bdade5a (patch)
tree366495a39c54fa8f34be553506d3e528e584fd9c /src/main/java/gtPlusPlus
parent7eabfb342833550857b074d4d9f23073d7ba3037 (diff)
downloadGT5-Unofficial-cc9db2de0b8a7dbb60e689e990ba7b621bdade5a.tar.gz
GT5-Unofficial-cc9db2de0b8a7dbb60e689e990ba7b621bdade5a.tar.bz2
GT5-Unofficial-cc9db2de0b8a7dbb60e689e990ba7b621bdade5a.zip
Fix batch mode parallels. Fix Elemental duplicator not working (#523)
Diffstat (limited to 'src/main/java/gtPlusPlus')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java6
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java6
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java6
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java46
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialRockBreaker.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java3
11 files changed, 62 insertions, 23 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index 84641bd357..75bb0ce94f 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -696,7 +696,8 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_Ex
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
- .setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent)).setParallel(helper.getCurrentParallel())
+ .setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
.calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
@@ -903,7 +904,8 @@ public abstract class GregtechMeta_MultiBlockBase<T extends GT_MetaTileEntity_Ex
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(mMaxProgresstime * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java
index 4f09cdcba0..dd4a09a824 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialAlloySmelter.java
@@ -251,7 +251,8 @@ public class GregtechMetaTileEntity_IndustrialAlloySmelter extends
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).enableHeatOC().setRecipeHeat(0)
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .enableHeatOC().setRecipeHeat(0)
// Need to multiple by 2 because heat OC is done only once every 1800 and this one does it once every
// 900
.setMultiHeat((int) getCoilLevel().getHeat() * 2).calculate();
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java
index 1f9b43873d..8b00561f73 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialChisel.java
@@ -271,7 +271,8 @@ public class GregtechMetaTileEntity_IndustrialChisel
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java
index 2bfe9ad75f..61eefeb376 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialDehydrator.java
@@ -223,9 +223,9 @@ public class GregtechMetaTileEntity_IndustrialDehydrator extends
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).enableHeatOC()
- .enableHeatDiscount().setRecipeHeat(tRecipe.mSpecialValue).setMultiHeat((int) getCoilLevel().getHeat())
- .calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .enableHeatOC().enableHeatDiscount().setRecipeHeat(tRecipe.mSpecialValue)
+ .setMultiHeat((int) getCoilLevel().getHeat()).calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java
index 872c828f05..1d2fc49412 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IndustrialMultiMachine.java
@@ -368,7 +368,8 @@ public class GregtechMetaTileEntity_IndustrialMultiMachine extends
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
index 9a2c679b37..2caadee79a 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_EBF.java
@@ -296,9 +296,9 @@ public class GregtechMetaTileEntity_Adv_EBF extends GregtechMeta_MultiBlockBase<
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).enableHeatOC()
- .enableHeatDiscount().setRecipeHeat(tRecipe.mSpecialValue).setMultiHeat((int) getCoilLevel().getHeat())
- .calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .enableHeatOC().enableHeatDiscount().setRecipeHeat(tRecipe.mSpecialValue)
+ .setMultiHeat((int) getCoilLevel().getHeat()).calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java
index 4b58683a16..4966e6b5bf 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_ElementalDuplicator.java
@@ -30,6 +30,8 @@ import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.GTPP_Recipe.GTPP_Recipe_Map;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_OverclockCalculator;
+import gregtech.api.util.GT_ParallelHelper;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
@@ -274,6 +276,7 @@ public class GregtechMTE_ElementalDuplicator extends GregtechMeta_MultiBlockBase
this.mOutputItems = new ItemStack[] {};
this.mOutputFluids = new FluidStack[] {};
+ long tEnergy = getMaxInputEu();
long tVoltage = getMaxInputVoltage();
byte tTier = (byte) Math.max(1, GT_Utility.getTier(tVoltage));
GT_Recipe tRecipe = null;
@@ -317,14 +320,41 @@ public class GregtechMTE_ElementalDuplicator extends GregtechMeta_MultiBlockBase
return false;
}
- return super.checkRecipeGeneric(
- aItemInputs,
- aFluidInputs,
- aMaxParallelRecipes,
- aEUPercent,
- aSpeedBonusPercent,
- aOutputChanceRoll,
- tRecipe);
+ GT_ParallelHelper helper = new GT_ParallelHelper().setRecipe(tRecipe).setItemInputs(aItemInputs)
+ .setFluidInputs(aFluidInputs).setAvailableEUt(tEnergy).setMaxParallel(aMaxParallelRecipes)
+ .enableConsumption().enableOutputCalculation();
+ if (!mVoidExcess) {
+ helper.enableVoidProtection(this);
+ }
+
+ if (mUseMultiparallelMode) {
+ helper.enableBatchMode(128);
+ }
+
+ helper.build();
+
+ if (helper.getCurrentParallel() == 0) {
+ return false;
+ }
+
+ this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000);
+ this.mEfficiencyIncrease = 10000;
+
+ GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
+ .setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
+ .setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .enablePerfectOC().calculate();
+ lEUt = -calculator.getConsumption();
+ mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
+
+ mOutputItems = helper.getItemOutputs();
+ mOutputFluids = helper.getFluidOutputs();
+ updateSlots();
+
+ // Play sounds (GT++ addition - GT multiblocks play no sounds)
+ startProcess();
+ return true;
}
@Override
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
index 1188cbe278..155c1568db 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialFishingPond.java
@@ -508,7 +508,8 @@ public class GregtechMetaTileEntity_IndustrialFishingPond extends
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(g.mEUt).setEUt(tEnergy)
.setDuration(g.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialRockBreaker.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialRockBreaker.java
index 8c2b1dfc0c..ad7a5894a3 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialRockBreaker.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_IndustrialRockBreaker.java
@@ -326,7 +326,8 @@ public class GregtechMetaTileEntity_IndustrialRockBreaker extends
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
index b5e8bd21e5..6cbaa26fd0 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMetaTileEntity_MassFabricator.java
@@ -367,7 +367,8 @@ public class GregtechMetaTileEntity_MassFabricator
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(aEUPercent / 100.0f)
.setSpeedBoost(100.0f / (100.0f + aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).enablePerfectOC().calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .enablePerfectOC().calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java
index 6c4358219f..bdc033f486 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java
@@ -689,7 +689,8 @@ public class GregtechMTE_ChemicalPlant extends GregtechMeta_MultiBlockBase<Gregt
GT_OverclockCalculator calculator = new GT_OverclockCalculator().setRecipeEUt(tRecipe.mEUt).setEUt(tEnergy)
.setDuration(tRecipe.mDuration).setEUtDiscount(100.0f / aEUPercent)
.setSpeedBoost((100.0f / aSpeedBonusPercent))
- .setParallel(Math.min(aMaxParallelRecipes, helper.getCurrentParallel())).calculate();
+ .setParallel((int) Math.floor(helper.getCurrentParallel() / helper.getDurationMultiplier()))
+ .calculate();
lEUt = -calculator.getConsumption();
mMaxProgresstime = (int) Math.ceil(calculator.getDuration() * helper.getDurationMultiplier());