From 000740ff66534c00f2b2a6a2e8185e942cadda14 Mon Sep 17 00:00:00 2001 From: Antifluxfield Date: Thu, 13 Jul 2017 01:57:38 +0800 Subject: [PATCH 1/3] Reduce the batch size if fluid amount is exceeding --- .../java/gregtech/common/GT_RecipeAdder.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/gregtech/common/GT_RecipeAdder.java b/src/main/java/gregtech/common/GT_RecipeAdder.java index 28a5902c..2b528312 100644 --- a/src/main/java/gregtech/common/GT_RecipeAdder.java +++ b/src/main/java/gregtech/common/GT_RecipeAdder.java @@ -562,6 +562,31 @@ public class GT_RecipeAdder if ((aDuration = GregTech_API.sRecipeFile.get("distillery", aOutput.getFluid().getUnlocalizedName(), aDuration)) <= 0) { return false; } + //reduce the batch size if fluid amount is exceeding + int tScale = (Math.max(aInput.amount, aOutput.amount) + 999) / 1000; + if (tScale <= 0) tScale = 1; + if (tScale > 1){ + //trying to find whether there is a better factor + for (int i = tScale; i <= 10; i++) { + if (aInput.amount % i == 0 && aDuration % i == 0) { + tScale = i; + break; + } + } + for (int i = tScale; i <= 10; i++) { + if (aInput.amount % i == 0 && aDuration % i == 0 && aOutput.amount % i == 0) { + tScale = i; + break; + } + } + aInput = new FluidStack(aInput.getFluid(), (aInput.amount + tScale - 1) / tScale); + aOutput = new FluidStack(aOutput.getFluid(), aOutput.amount / tScale); + if (aSolidOutput != null) { + if (aSolidOutput.stackSize / tScale == 0) aSolidOutput = GT_Values.NI; + else aSolidOutput = new ItemStack(aSolidOutput.getItem(), aSolidOutput.stackSize / tScale); + } + aDuration = (aDuration + tScale - 1) / tScale; + } GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sDistilleryRecipes.addRecipe(true, new ItemStack[]{aCircuit}, new ItemStack[]{aSolidOutput}, null, new FluidStack[]{aInput}, new FluidStack[]{aOutput}, aDuration, aEUt, 0); if ((aHidden) && (tRecipe != null)) { tRecipe.mHidden = true; From 1fff7f2aa4310c11c5b87eac35b8e30b49cb80fc Mon Sep 17 00:00:00 2001 From: Antifluxfield Date: Fri, 14 Jul 2017 00:12:44 +0800 Subject: [PATCH 2/3] Update GT_RecipeAdder.java --- src/main/java/gregtech/common/GT_RecipeAdder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gregtech/common/GT_RecipeAdder.java b/src/main/java/gregtech/common/GT_RecipeAdder.java index 2b528312..daadc217 100644 --- a/src/main/java/gregtech/common/GT_RecipeAdder.java +++ b/src/main/java/gregtech/common/GT_RecipeAdder.java @@ -567,13 +567,13 @@ public class GT_RecipeAdder if (tScale <= 0) tScale = 1; if (tScale > 1){ //trying to find whether there is a better factor - for (int i = tScale; i <= 10; i++) { + for (int i = tScale; i <= 5; i++) { if (aInput.amount % i == 0 && aDuration % i == 0) { tScale = i; break; } } - for (int i = tScale; i <= 10; i++) { + for (int i = tScale; i <= 5; i++) { if (aInput.amount % i == 0 && aDuration % i == 0 && aOutput.amount % i == 0) { tScale = i; break; From a1f0a213c496090469111624f712799b9189de6b Mon Sep 17 00:00:00 2001 From: Antifluxfield Date: Wed, 2 Aug 2017 16:04:25 +0800 Subject: [PATCH 3/3] Find a better way to handle those dusts --- src/main/java/gregtech/common/GT_RecipeAdder.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/gregtech/common/GT_RecipeAdder.java b/src/main/java/gregtech/common/GT_RecipeAdder.java index daadc217..6dc6bc19 100644 --- a/src/main/java/gregtech/common/GT_RecipeAdder.java +++ b/src/main/java/gregtech/common/GT_RecipeAdder.java @@ -9,6 +9,7 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.OrePrefixes; import gregtech.api.interfaces.internal.IGT_RecipeAdder; import gregtech.api.objects.GT_FluidStack; +import gregtech.api.objects.ItemData; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Recipe; @@ -582,8 +583,13 @@ public class GT_RecipeAdder aInput = new FluidStack(aInput.getFluid(), (aInput.amount + tScale - 1) / tScale); aOutput = new FluidStack(aOutput.getFluid(), aOutput.amount / tScale); if (aSolidOutput != null) { - if (aSolidOutput.stackSize / tScale == 0) aSolidOutput = GT_Values.NI; - else aSolidOutput = new ItemStack(aSolidOutput.getItem(), aSolidOutput.stackSize / tScale); + ItemData tData = GT_OreDictUnificator.getItemData(aSolidOutput); + if (tData != null && (tData.mPrefix == OrePrefixes.dust || OrePrefixes.dust.mFamiliarPrefixes.contains(tData.mPrefix))) + aSolidOutput = GT_OreDictUnificator.getDust(tData.mMaterial.mMaterial, tData.mMaterial.mAmount * aSolidOutput.stackSize / tScale); + else { + if (aSolidOutput.stackSize / tScale == 0) aSolidOutput = GT_Values.NI; + else aSolidOutput = new ItemStack(aSolidOutput.getItem(), aSolidOutput.stackSize / tScale); + } } aDuration = (aDuration + tScale - 1) / tScale; }