aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeMapUtil.java31
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeRegistrator.java44
2 files changed, 59 insertions, 16 deletions
diff --git a/src/main/java/gregtech/api/util/GT_RecipeMapUtil.java b/src/main/java/gregtech/api/util/GT_RecipeMapUtil.java
index 4f7f2e199b..a534f8031d 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeMapUtil.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeMapUtil.java
@@ -92,10 +92,33 @@ public class GT_RecipeMapUtil {
TIntList chances = b.getChances() != null ? new TIntArrayList(b.getChances()) : null;
cellToFluid(itemInputs, fluidInputs, removeIntegratedCircuit, null);
cellToFluid(itemOutputs, fluidOutputs, removeIntegratedCircuit, chances);
- return b.itemInputs(itemInputs.toArray(new ItemStack[0]))
- .itemOutputs(itemOutputs.toArray(new ItemStack[0]), chances != null ? chances.toArray() : null)
- .fluidInputs(fluidInputs.toArray(new FluidStack[0]))
- .fluidOutputs(fluidOutputs.toArray(new FluidStack[0]));
+ itemInputs.removeIf(Objects::isNull);
+ if (chances == null) {
+ itemOutputs.removeIf(Objects::isNull);
+ }
+ fluidInputs.removeIf(Objects::isNull);
+ fluidOutputs.removeIf(Objects::isNull);
+ if (itemInputs.size() == 0) {
+ b.noItemInputs();
+ } else {
+ b.itemInputs(itemInputs.toArray(new ItemStack[0]));
+ }
+ if (itemOutputs.size() == 0) {
+ b.noItemOutputs();
+ } else {
+ b.itemOutputs(itemOutputs.toArray(new ItemStack[0]), chances != null ? chances.toArray() : null);
+ }
+ if (fluidInputs.size() == 0) {
+ b.noFluidInputs();
+ } else {
+ b.fluidInputs(fluidInputs.toArray(new FluidStack[0]));
+ }
+ if (fluidOutputs.size() == 0) {
+ b.noFluidOutputs();
+ } else {
+ b.fluidOutputs(fluidOutputs.toArray(new FluidStack[0]));
+ }
+ return b;
}
private static void cellToFluid(List<ItemStack> items, List<FluidStack> fluids, boolean removeIntegratedCircuit,
diff --git a/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java b/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
index 9313f8f2f5..7367d79ec9 100644
--- a/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
+++ b/src/main/java/gregtech/api/util/GT_RecipeRegistrator.java
@@ -4,6 +4,7 @@ import static gregtech.api.enums.GT_Values.*;
import static gregtech.api.enums.Materials.*;
import static gregtech.api.enums.Materials.Void;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sHammerRecipes;
+import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sMaceratorRecipes;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sWiremillRecipes;
import static gregtech.api.util.GT_RecipeBuilder.SECONDS;
import static gregtech.api.util.GT_RecipeBuilder.TICKS;
@@ -358,19 +359,38 @@ public class GT_RecipeRegistrator {
if (!aData.hasValidMaterialData()) return;
long tAmount = 0;
- for (MaterialStack tMaterial : aData.getAllMaterialStacks())
+ for (MaterialStack tMaterial : aData.getAllMaterialStacks()) {
tAmount += tMaterial.mAmount * tMaterial.mMaterial.getMass();
- boolean tHide = (aData.mMaterial.mMaterial != Materials.Iron) && (GT_Mod.gregtechproxy.mHideRecyclingRecipes);
- RA.addPulveriserRecipe(
- aStack,
- new ItemStack[] { GT_OreDictUnificator.getDust(aData.mMaterial),
- GT_OreDictUnificator.getDust(aData.getByProduct(0)),
- GT_OreDictUnificator.getDust(aData.getByProduct(1)),
- GT_OreDictUnificator.getDust(aData.getByProduct(2)) },
- null,
- aData.mMaterial.mMaterial == Materials.Marble ? 1 : (int) Math.max(16, tAmount / M),
- 4,
- tHide);
+ }
+
+ {
+ boolean tHide = (aData.mMaterial.mMaterial != Materials.Iron)
+ && (GT_Mod.gregtechproxy.mHideRecyclingRecipes);
+ ArrayList<ItemStack> outputs = new ArrayList<ItemStack>();
+ if (GT_OreDictUnificator.getDust(aData.mMaterial) != null) {
+ outputs.add(GT_OreDictUnificator.getDust(aData.mMaterial));
+ }
+ for (int i = 0; i < 3; i++) {
+ if (GT_OreDictUnificator.getDust(aData.getByProduct(i)) != null) {
+ outputs.add(GT_OreDictUnificator.getDust(aData.getByProduct(i)));
+ }
+ }
+ if (outputs.size() != 0) {
+ ItemStack[] outputsArray = outputs.toArray(new ItemStack[outputs.size()]);
+ GT_RecipeBuilder recipeBuilder = GT_Values.RA.stdBuilder();
+ recipeBuilder.itemInputs(aStack)
+ .itemOutputs(outputsArray)
+ .noFluidInputs()
+ .noFluidOutputs()
+ .duration(
+ (aData.mMaterial.mMaterial == Materials.Marble ? 1 : (int) Math.max(16, tAmount / M)) * TICKS)
+ .eut(4);
+ if (tHide) {
+ recipeBuilder.hidden();
+ }
+ recipeBuilder.addTo(sMaceratorRecipes);
+ }
+ }
if (!aAllowHammer) {
return;