aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorGlodBlock <1356392126@qq.com>2021-11-19 23:05:03 +0800
committerGlodBlock <1356392126@qq.com>2021-11-19 23:05:03 +0800
commit116ae744161eff30f8e7e536d5193391686d2a49 (patch)
tree926ba00b1394a3fae79b432edb5a5e53c6e1af21 /src/main
parent8b8f50976c3e74f3a72d19c2fcf577efb15d47d1 (diff)
downloadGT5-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')
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaBlastFurnace.java46
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaDistillTower.java55
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaVacuumFreezer.java46
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/util/RecipeFinderForParallel.java30
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) {