From bca969349fc7db4ff20eeb78ae956e2142683b43 Mon Sep 17 00:00:00 2001 From: GDCloud <93287602+GDCloudstrike@users.noreply.github.com> Date: Thu, 12 Jan 2023 15:33:10 +0100 Subject: Add batch mode to gt++ multis (#486) * buffs * Base logic * Fixes * Spotless * Social Experiment * swap separate input bus to screwdriver * It lives * Spotless * Fix Massfab * Fix LPF, packager, replicator * address reviews + spotless * address more requested changes * more fixes * fix fix * Spotless --- .../machines/multi/misc/GMTE_AmazonPackager.java | 19 +++++++++++- .../GregtechMetaTileEntity_IndustrialMixer.java | 4 +-- ...gtechMetaTileEntity_IndustrialMultiMachine.java | 18 ++++++++++++ .../GregtechMTE_ElementalDuplicator.java | 19 +++++++++++- .../GregtechMetaTileEntity_AlloyBlastSmelter.java | 4 +-- .../GregtechMetaTileEntity_MassFabricator.java | 34 ++++++++++++++++++++++ 6 files changed, 90 insertions(+), 8 deletions(-) (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/common') diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java index 64ff058568..9c064c3973 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/misc/GMTE_AmazonPackager.java @@ -310,14 +310,27 @@ public class GMTE_AmazonPackager extends GregtechMeta_MultiBlockBase 0) { + + float batchMultiplier = 1.0f; + if (mUseMultiparallelMode) { + int extraParallelRecipes = 0; + for (; extraParallelRecipes + parallelRecipes < aMaxParallelRecipes * 128; extraParallelRecipes++) { + if (!tRecipe.isRecipeInputEqual(true, aFluidInputs, aItemInputs)) { + break; + } + } + batchMultiplier = 1.0f + (float) extraParallelRecipes / aMaxParallelRecipes; + parallelRecipes += extraParallelRecipes; + } + // -- Try not to fail after this point - inputs have already been // consumed! -- @@ -337,6 +350,9 @@ public class GregtechMetaTileEntity_MassFabricator // duration. aSpeedBonusPercent = Math.max(-99, aSpeedBonusPercent); float tTimeFactor = 100.0f / (100.0f + aSpeedBonusPercent); + if (mUseMultiparallelMode) { + tTimeFactor *= batchMultiplier; + } this.mMaxProgresstime = (int) (tRecipe.mDuration * tTimeFactor); this.lEUt = (long) Math.ceil(tTotalEUt); this.mEfficiency = (10000 - (getIdealStatus() - getRepairStatus()) * 1000); @@ -480,12 +496,26 @@ public class GregtechMetaTileEntity_MassFabricator return false; } + if (mUseMultiparallelMode) { + int extraParallelRecipes = 0; + for (; + extraParallelRecipes + parallelRecipes < aMaxParallelRecipes * MAX_BATCH_SIZE; + extraParallelRecipes++) { + if (!tRecipe.isRecipeInputEqual(true, aFluidInputs, aItemInputs)) { + break; + } + } + batchMultiplier = 1.0f + (float) extraParallelRecipes / aMaxParallelRecipes; + parallelRecipes += extraParallelRecipes; + } + // -- Try not to fail after this point - inputs have already been consumed! -- // Convert speed bonus to duration multiplier // e.g. 100% speed bonus = 200% speed = 100%/200% = 50% recipe duration. aSpeedBonusPercent = Math.max(-99, aSpeedBonusPercent); float tTimeFactor = 100.0f / (100.0f + aSpeedBonusPercent); + this.mMaxProgresstime = (int) (tRecipe.mDuration * tTimeFactor); this.lEUt = (long) Math.ceil(tTotalEUt); @@ -510,6 +540,10 @@ public class GregtechMetaTileEntity_MassFabricator this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); + if (mUseMultiparallelMode) { + mMaxProgresstime = (int) Math.ceil(mMaxProgresstime * batchMultiplier); + } + // Collect fluid outputs FluidStack[] tOutputFluids = new FluidStack[tRecipe.mFluidOutputs.length]; for (int h = 0; h < tRecipe.mFluidOutputs.length; h++) { -- cgit