aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntifluxfield <lyj_299792458@163.com>2017-07-13 01:57:38 +0800
committerAntifluxfield <lyj_299792458@163.com>2017-07-13 01:57:38 +0800
commit000740ff66534c00f2b2a6a2e8185e942cadda14 (patch)
treea3677474712e1b0550d38ae7f13ab2bb57623837
parentda2e748e8a179e38b9bd38381b0c8961dd529261 (diff)
downloadGT5-Unofficial-000740ff66534c00f2b2a6a2e8185e942cadda14.tar.gz
GT5-Unofficial-000740ff66534c00f2b2a6a2e8185e942cadda14.tar.bz2
GT5-Unofficial-000740ff66534c00f2b2a6a2e8185e942cadda14.zip
Reduce the batch size if fluid amount is exceeding
-rw-r--r--src/main/java/gregtech/common/GT_RecipeAdder.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/GT_RecipeAdder.java b/src/main/java/gregtech/common/GT_RecipeAdder.java
index 28a5902c7f..2b5283126f 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;