diff options
author | Dream-Master <dream-master@gmx.net> | 2017-08-12 10:20:15 +0200 |
---|---|---|
committer | Dream-Master <dream-master@gmx.net> | 2017-08-12 10:20:15 +0200 |
commit | 454824edd8083227ceab80c1de1fab7150fab1dd (patch) | |
tree | 69cadcd1982a406f807ab0663e5e05136a6eb973 /src/main | |
parent | 8d048d142ad79878155af71cf68d8e231877702e (diff) | |
download | GT5-Unofficial-454824edd8083227ceab80c1de1fab7150fab1dd.tar.gz GT5-Unofficial-454824edd8083227ceab80c1de1fab7150fab1dd.tar.bz2 GT5-Unofficial-454824edd8083227ceab80c1de1fab7150fab1dd.zip |
cherry pick
Commit: c0da1931dd0285ddaf40eb6174b4bbb2db53c2e4 [c0da193]
Merge pull request #1156 from Antifluxfield/distillery-recipe-fix-alt
Another Distillery recipe fix
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/gregtech/common/GT_RecipeAdder.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/GT_RecipeAdder.java b/src/main/java/gregtech/common/GT_RecipeAdder.java index f1237d4dc1..525d15e8b0 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; @@ -674,6 +675,37 @@ public class GT_RecipeAdder implements IGT_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 <= 5; i++) { + if (aInput.amount % i == 0 && aDuration % i == 0) { + tScale = i; + break; + } + } + for (int i = tScale; i <= 5; 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) { + 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; + } + 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; |