diff options
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r-- | src/main/java/gregtech/api/util/GT_RecipeMapUtil.java | 31 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/GT_RecipeRegistrator.java | 44 |
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; |