From 218288161fb4ae84983fe846e959730a7a7b330d Mon Sep 17 00:00:00 2001 From: Fox_white <39846845+foxwhite25@users.noreply.github.com> Date: Wed, 29 Mar 2023 00:38:05 +0800 Subject: Fix PCB Factory not voiding output when trace size is above 100 (#1822) --- .../multi/GT_MetaTileEntity_PCBFactory.java | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'src/main/java/gregtech') diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java index 7d12b28218..df878d8050 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_PCBFactory.java @@ -587,18 +587,23 @@ public class GT_MetaTileEntity_PCBFactory extends mOutputItems = new ItemStack[tRecipe.mOutputs.length]; ArrayList tOutputs = new ArrayList(); - int repeats = (int) Math.ceil(getMaxEfficiency(aStack) / 10000.0f); - for (int k = 0; k < mCurrentParallel; k++) { - int remainingEfficiency = getMaxEfficiency(aStack) < 10000 ? 10000 : getMaxEfficiency(aStack); - for (int j = 0; j < repeats; j++) { - int chanced = getBaseMetaTileEntity().getRandomNumber(10000); - for (int i = 0; i < tRecipe.mOutputs.length; i++) { - if (chanced < remainingEfficiency) { - tOutputs.add(tRecipe.getOutput(i)); - } + int remainingEfficiency = getMaxEfficiency(aStack); + for (int j = 0; j < (int) Math.ceil(getMaxEfficiency(aStack) / 10000.0f); j++) { + int chanced = getBaseMetaTileEntity().getRandomNumber(10000); + if (chanced >= remainingEfficiency) { + continue; + } + for (ItemStack tOutput : tRecipe.mOutputs) { + if (tOutput == null) { + break; } - remainingEfficiency -= 10000; + tOutputs.add(tOutput); } + remainingEfficiency -= 10000; + } + + for (ItemStack itemStack : tOutputs) { + itemStack.stackSize *= mCurrentParallel; } mOutputItems = tOutputs.toArray(new ItemStack[0]); -- cgit