aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxSkewer <43712386+xSkewer@users.noreply.github.com>2022-07-05 10:47:16 -0400
committerGitHub <noreply@github.com>2022-07-05 21:47:16 +0700
commitc93c4a1a8a9c73186c48a8f9728181356334cdc5 (patch)
tree706b50addab0296a113677c81837e25aedc8b630 /src
parenteb08afb7276796f8d776c33c1a5ec5575a875fcd (diff)
downloadGT5-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.java37
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;