From 1798aa29d3126252c163f919b0eb2518b2e5b68c Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Fri, 19 May 2023 18:52:57 +0100 Subject: Yet another round of ra2 conversions (#2006) * lathe and saplings * toolhead oreproc recipes * fluid solidification * reverse macerating * autoclave combs * implosion compressor * assembler recipes * assembling line * slicer recipes * minor fixes * attempted cell to fluid fix * minor fix 2 --- .../java/gregtech/api/util/GT_RecipeMapUtil.java | 31 +++++++++++++-- .../gregtech/api/util/GT_RecipeRegistrator.java | 44 ++++++++++++++++------ 2 files changed, 59 insertions(+), 16 deletions(-) (limited to 'src/main/java/gregtech/api/util') 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 items, List 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 outputs = new ArrayList(); + 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; -- cgit