diff options
author | BlueWeabo <76872108+BlueWeabo@users.noreply.github.com> | 2023-02-02 01:05:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-02 00:05:32 +0100 |
commit | cc9db2de0b8a7dbb60e689e990ba7b621bdade5a (patch) | |
tree | 366495a39c54fa8f34be553506d3e528e584fd9c /src/main/java/gtPlusPlus | |
parent | 7eabfb342833550857b074d4d9f23073d7ba3037 (diff) | |
download | GT5-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')
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()); |