diff options
author | GlodBlock <1356392126@qq.com> | 2021-11-19 23:05:03 +0800 |
---|---|---|
committer | GlodBlock <1356392126@qq.com> | 2021-11-19 23:05:03 +0800 |
commit | 116ae744161eff30f8e7e536d5193391686d2a49 (patch) | |
tree | 926ba00b1394a3fae79b432edb5a5e53c6e1af21 /src/main | |
parent | 8b8f50976c3e74f3a72d19c2fcf577efb15d47d1 (diff) | |
download | GT5-Unofficial-116ae744161eff30f8e7e536d5193391686d2a49.tar.gz GT5-Unofficial-116ae744161eff30f8e7e536d5193391686d2a49.tar.bz2 GT5-Unofficial-116ae744161eff30f8e7e536d5193391686d2a49.zip |
merge common code
Former-commit-id: 6f3a4fb6857843e310ebcc71596f127c202a81cc
Diffstat (limited to 'src/main')
4 files changed, 51 insertions, 126 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java index 8a018d9c2a..0c99ff8947 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java @@ -59,6 +59,7 @@ import net.minecraftforge.fluids.FluidStack; import java.util.*; import java.util.stream.Collectors; +import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.getMultiOutput; import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.handleParallelRecipe; import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlockAdder; import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose; @@ -162,9 +163,9 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl } @SuppressWarnings("rawtypes") - public ArrayList TTTunnels = new ArrayList<>(); + public ArrayList<Object> TTTunnels = new ArrayList<>(); @SuppressWarnings("rawtypes") - public ArrayList TTMultiAmp = new ArrayList<>(); + public ArrayList<Object> TTMultiAmp = new ArrayList<>(); @Override public void loadNBTData(NBTTagCompound aNBT) { @@ -397,46 +398,11 @@ public class GT_TileEntity_MegaBlastFurnace extends GT_MetaTileEntity_ElectricBl int tCurrentPara = handleParallelRecipe(tRecipe, tFluids, tInputs, (int) tMaxPara); processed = tCurrentPara; found_Recipe = true; - if (tRecipe.mOutputs != null) { - for (int i = 0; i < tRecipe.mOutputs.length; i++) { - tCurrentPara = processed; - while (tCurrentPara > 0 && tRecipe.getOutput(i) != null) { - int maxSize = tRecipe.getOutput(i).getMaxStackSize(); - if (tCurrentPara <= maxSize) { - outputItems.add(GT_Utility.copyAmount(maxSize, tRecipe.getOutput(i))); - tCurrentPara -= maxSize; - } - else { - outputItems.add(GT_Utility.copyAmount(tCurrentPara, tRecipe.getOutput(i))); - tCurrentPara = 0; - } - } - } - } - if (tRecipe.mFluidOutputs != null) { - for (int i = 0; i < tRecipe.mFluidOutputs.length; i++) { - while (tRecipe.getFluidOutput(i) != null) { - FluidStack tOutputFluid = new FluidStack(tRecipe.getFluidOutput(i).getFluid(), tRecipe.getFluidOutput(i).amount * processed); - outputFluids.add(tOutputFluid); - } - } - } + Object[] Outputs = getMultiOutput(tRecipe, tCurrentPara); + outputFluids = (ArrayList<FluidStack>) Outputs[0]; + outputItems = (ArrayList<ItemStack>) Outputs[1]; } - /* while (this.getStoredInputs().size() > 0 && processed < ConfigHandler.megaMachinesMax) { - if (this.mHeatingCapacity >= tRecipe.mSpecialValue && (precutRecipeVoltage * (processed + 1)) < nominalV && tRecipe.isRecipeInputEqual(true, tFluids, tInputs)) { - found_Recipe = true; - for (int i = 0; i < tRecipe.mOutputs.length; i++) { - outputItems.add(tRecipe.getOutput(i)); - } - for (int i = 0; i < tRecipe.mFluidOutputs.length; i++) { - outputFluids.add(tRecipe.getFluidOutput(i)); - } - ++processed; - } else - break; - }*/ - if (found_Recipe) { this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaDistillTower.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaDistillTower.java index d365a75bd1..d13b5d8016 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaDistillTower.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaDistillTower.java @@ -44,6 +44,7 @@ import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; +import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.getMultiOutput; import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.handleParallelRecipe; import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; import static gregtech.api.enums.GT_Values.V; @@ -227,10 +228,11 @@ public class GT_TileEntity_MegaDistillTower extends GT_MetaTileEntity_Distillati FluidStack[] tFluids = tFluidList.toArray(new FluidStack[0]); if (tFluids.length > 0) { for (FluidStack tFluid : tFluids) { - ArrayList<FluidStack[]> outputFluids = new ArrayList<>(); + ArrayList<FluidStack> outputFluids = new ArrayList<>(); + ArrayList<ItemStack> outputItems = new ArrayList<>(); + Object[] Outputs; int processed = 0; boolean found_Recipe = false; - FluidStack[] output; GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sDistillationRecipes.findRecipe(this.getBaseMetaTileEntity(), false, GT_Values.V[tTier], new FluidStack[]{tFluid}); if (tRecipe != null) { @@ -238,38 +240,13 @@ public class GT_TileEntity_MegaDistillTower extends GT_MetaTileEntity_Distillati long tMaxPara = Math.min(ConfigHandler.megaMachinesMax, nominalV / tRecipe.mEUt); int tCurrentPara = handleParallelRecipe(tRecipe, new FluidStack[]{tFluid}, null, (int) tMaxPara); processed = tCurrentPara; - if (tRecipe.mFluidOutputs != null) { - output = new FluidStack[tRecipe.mFluidOutputs.length]; - for (int i = 0; i < tRecipe.mFluidOutputs.length; i++) { - if (tRecipe.getFluidOutput(i) != null) { - output[i] = new FluidStack(tRecipe.getFluidOutput(i).getFluid(), tRecipe.getFluidOutput(i).amount * tCurrentPara); - } - } - outputFluids.add(output); - } + Outputs = getMultiOutput(tRecipe, tCurrentPara); + outputFluids = (ArrayList<FluidStack>) Outputs[0]; + outputItems = (ArrayList<ItemStack>) Outputs[1]; } - /* while (this.getStoredFluids().size() > 0 && processed < ConfigHandler.megaMachinesMax) { - if (tRecipe != null && (tRecipe.mEUt * (processed + 1)) < nominalV && tRecipe.isRecipeInputEqual(true, tFluids)) { - found_Recipe = true; - if (tRecipe.mFluidOutputs.length == 1 && tRecipe.mFluidOutputs[0].amount == 0) - tRecipe.mFluidOutputs[0].amount = tRecipe.mFluidInputs[0].amount; - output = new FluidStack[tRecipe.mFluidOutputs.length]; - for (int i = 0; i < output.length; i++) { - output[i] = new FluidStack(tRecipe.mFluidOutputs[i],tRecipe.mFluidOutputs[i].amount); - } - outputFluids.add(output); - ++processed; - } else - break; - }*/ if (!found_Recipe) continue; - /*for (int j = 1; j < outputFluids.size(); j++) { - for (int k = 0; k < outputFluids.get(j).length; k++) { - outputFluids.get(0)[k].amount += outputFluids.get(j)[k].amount; - } - }*/ this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; long actualEUT = (long) (tRecipe.mEUt) * processed; @@ -289,20 +266,10 @@ public class GT_TileEntity_MegaDistillTower extends GT_MetaTileEntity_Distillati this.mEUt = (-this.mEUt); } this.mMaxProgresstime = Math.max(1, this.mMaxProgresstime); - this.mOutputFluids = outputFluids.get(0).clone(); - if (tRecipe.getOutput(0) != null) { - int stacks = processed / 64; - ItemStack[] outputs = new ItemStack[stacks]; - if (stacks > 0) { - for (int i = 0; i < stacks; i++) - if (i != stacks - 1) - outputs[i] = BW_Util.setStackSize(tRecipe.getOutput(0),64); - else - outputs[i] = BW_Util.setStackSize(tRecipe.getOutput(0),processed - (64 * i)); - this.mOutputItems = outputs; - } else - this.mOutputItems = null; - } else + this.mOutputFluids = outputFluids.toArray(new FluidStack[0]); + if (!outputItems.isEmpty()) + this.mOutputItems = outputItems.toArray(new ItemStack[0]); + else this.mOutputItems = null; this.updateSlots(); return true; diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaVacuumFreezer.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaVacuumFreezer.java index c9febd1fa8..3e6506eb27 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaVacuumFreezer.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaVacuumFreezer.java @@ -45,6 +45,7 @@ import net.minecraftforge.fluids.FluidStack; import java.util.ArrayList; import java.util.List; +import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.getMultiOutput; import static com.github.bartimaeusnek.bartworks.util.RecipeFinderForParallel.handleParallelRecipe; import static gregtech.api.enums.GT_Values.V; @@ -114,50 +115,11 @@ public class GT_TileEntity_MegaVacuumFreezer extends GT_MetaTileEntity_VacuumFre long tMaxPara = Math.min(ConfigHandler.megaMachinesMax, nominalV / tRecipe.mEUt); int tCurrentPara = handleParallelRecipe(tRecipe, tInputFluids, tInputs, (int) tMaxPara); processed = tCurrentPara; - if (tRecipe.mOutputs != null) { - for (int i = 0; i < tRecipe.mOutputs.length; i++) { - tCurrentPara = processed; - while (tCurrentPara > 0 && tRecipe.getOutput(i) != null) { - int maxSize = tRecipe.getOutput(i).getMaxStackSize(); - if (tCurrentPara <= maxSize) { - outputItems.add(GT_Utility.copyAmount(maxSize, tRecipe.getOutput(i))); - tCurrentPara -= maxSize; - } - else { - outputItems.add(GT_Utility.copyAmount(tCurrentPara, tRecipe.getOutput(i))); - tCurrentPara = 0; - } - } - } - } - if (tRecipe.mFluidOutputs != null) { - for (int i = 0; i < tRecipe.mFluidOutputs.length; i++) { - while (tRecipe.getFluidOutput(i) != null) { - FluidStack tOutputFluid = new FluidStack(tRecipe.getFluidOutput(i).getFluid(), tRecipe.getFluidOutput(i).amount * processed); - outputFluids.add(tOutputFluid); - } - } - } + Object[] Outputs = getMultiOutput(tRecipe, tCurrentPara); + outputFluids = (ArrayList<FluidStack>) Outputs[0]; + outputItems = (ArrayList<ItemStack>) Outputs[1]; } - /*while ((this.getStoredInputs().size() > 0 || this.getStoredFluids().size() > 0) && processed < ConfigHandler.megaMachinesMax) { - if (tRecipe != null && ((long) tRecipe.mEUt * (processed + 1)) < nominalV && tRecipe.isRecipeInputEqual(true, tInputFluids, tInputs)) { - found_Recipe = true; - if (tRecipe.mOutputs != null) { - for (int i = 0; i < tRecipe.mOutputs.length; i++) { - outputItems.add(tRecipe.getOutput(i)); - } - } - if (tRecipe.mFluidOutputs != null) { - for (int i = 0; i < tRecipe.mFluidOutputs.length; i++) { - outputFluids.add(tRecipe.getFluidOutput(i)); - } - } - ++processed; - } else - break; - }*/ - if (found_Recipe) { this.mEfficiency = (10000 - (this.getIdealStatus() - this.getRepairStatus()) * 1000); this.mEfficiencyIncrease = 10000; diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/util/RecipeFinderForParallel.java b/src/main/java/com/github/bartimaeusnek/bartworks/util/RecipeFinderForParallel.java index a0061564a6..0d7da1ccd3 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/util/RecipeFinderForParallel.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/util/RecipeFinderForParallel.java @@ -5,6 +5,7 @@ import gregtech.api.util.GT_Utility; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; +import java.util.ArrayList; import java.util.HashMap; public class RecipeFinderForParallel { @@ -68,6 +69,35 @@ public class RecipeFinderForParallel { return tCurrentPara; } + public static Object[] getMultiOutput(GT_Recipe aRecipe, int aPall) { + ArrayList<FluidStack> tFluidList = new ArrayList<>(); + ArrayList<ItemStack> tItemList = new ArrayList<>(); + if (aRecipe == null) + return new Object[]{tFluidList, tItemList}; + if (aRecipe.mFluidOutputs != null && aRecipe.mFluidOutputs.length > 0) { + for (FluidStack tFluid : aRecipe.mFluidOutputs) { + if (tFluid != null && tFluid.amount > 0) { + tFluidList.add(new FluidStack(tFluid.getFluid(), tFluid.amount * aPall)); + } + } + } + if (aRecipe.mOutputs != null && aRecipe.mOutputs.length > 0) { + for (ItemStack tItem : aRecipe.mOutputs) { + if (tItem != null && tItem.stackSize > 0) { + int tAmount = tItem.stackSize * aPall; + while (tAmount > tItem.getMaxStackSize()) { + tItemList.add(GT_Utility.copyAmount(tItem.getMaxStackSize(), tItem)); + tAmount -= tItem.getMaxStackSize(); + } + tItemList.add(GT_Utility.copyAmount(tAmount, tItem)); + } + } + } + return new Object[]{ + tFluidList, tItemList + }; + } + public static HashMap<Integer, Integer> compressItem(ItemStack[] aItemStacks) { HashMap<Integer, Integer> tCompressed = new HashMap<>(); for (ItemStack tItem : aItemStacks) { |