diff options
author | xSkewer <43712386+xSkewer@users.noreply.github.com> | 2022-07-05 10:47:16 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-05 21:47:16 +0700 |
commit | c93c4a1a8a9c73186c48a8f9728181356334cdc5 (patch) | |
tree | 706b50addab0296a113677c81837e25aedc8b630 /src | |
parent | eb08afb7276796f8d776c33c1a5ec5575a875fcd (diff) | |
download | GT5-Unofficial-c93c4a1a8a9c73186c48a8f9728181356334cdc5.tar.gz GT5-Unofficial-c93c4a1a8a9c73186c48a8f9728181356334cdc5.tar.bz2 GT5-Unofficial-c93c4a1a8a9c73186c48a8f9728181356334cdc5.zip |
Allow Multi Smelter to parallel diff. item types (#1108)
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java index cd07476194..f61846eeaf 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_MultiFurnace.java @@ -127,25 +127,30 @@ public class GT_MetaTileEntity_MultiFurnace extends GT_MetaTileEntity_AbstractMu int mVolatage = GT_Utility.safeInt(getMaxInputVoltage()); int tMaxParrallel = 8 * this.mLevel; int tCurrenParrallel = 0; - ItemStack tSmeltStack = tInputList.get(0); - ItemStack tOutputStack = GT_ModHandler.getSmeltingOutput(tSmeltStack,false,null); - if (tOutputStack == null) - return false; - for (ItemStack item : tInputList) - if (tSmeltStack.isItemEqual(item)) if (item.stackSize < (tMaxParrallel - tCurrenParrallel)) { - tCurrenParrallel += item.stackSize; - item.stackSize = 0; - } else { - item.stackSize = (tCurrenParrallel + item.stackSize) - tMaxParrallel; - tCurrenParrallel = tMaxParrallel; + ArrayList<ItemStack> smeltedOutputs = new ArrayList<ItemStack>(); + ArrayList<Integer> outputStackSizes = new ArrayList<Integer>(); + for (ItemStack item : tInputList) { + ItemStack smeltedOutput = GT_ModHandler.getSmeltingOutput(item, false, null); + if (smeltedOutput != null) { + outputStackSizes.add(item.stackSize); + smeltedOutputs.add(smeltedOutput); + if (item.stackSize < (tMaxParrallel - tCurrenParrallel)) { + tCurrenParrallel += item.stackSize; + item.stackSize = 0; + } else { + item.stackSize = (tCurrenParrallel + item.stackSize) - tMaxParrallel; + tCurrenParrallel = tMaxParrallel; + break; + } + } + if (tCurrenParrallel == tMaxParrallel) { break; } - - tCurrenParrallel *= tOutputStack.stackSize; - this.mOutputItems = new ItemStack[(tCurrenParrallel/64)+1]; + } + this.mOutputItems = new ItemStack[smeltedOutputs.size()]; for (int i = 0; i < this.mOutputItems.length; i++) { - ItemStack tNewStack = tOutputStack.copy(); - int size = Math.min(tCurrenParrallel, 64); + ItemStack tNewStack = smeltedOutputs.get(i); + int size = Math.min(Math.min(tCurrenParrallel, outputStackSizes.get(i)), 64); tNewStack.stackSize = size; tCurrenParrallel -= size; this.mOutputItems[i] = tNewStack; |