From a8b46c11f5a02608101ef33ed39f103736ba5920 Mon Sep 17 00:00:00 2001 From: boubou19 Date: Sun, 21 Jul 2024 16:36:34 +0200 Subject: full RA1 removal (#2713) * remove addExtractionRecipes * remove addPulverisationRecipe * remove thermalcraft fake compat * deprecate addAlloySmelterRecipe * remove fake compat * remove RA1 fusion recipe usage * remove RA1 centrifuge recipe usage * remove RA1 compressor recipe usage * remove RA1 electrolyzer recipe usage * remove RA1 chemical reactor recipe usage * deprecate GT based recipes adders * obliterate RA1 entries in interfaces (1/?) * remove RA1 blast furnace recipe usage * remove RA1 canner recipe usage * remove RA1 alloy smelter recipe usage * remove RA1 circuit assembler recipe usage * obliterate RA1 entries in interfaces (2/?) * remove RA1 bender recipe usage * clean class * remove RA1 cutter recipe usage * remove RA1 fuels recipe usage * remove RA1 implosion compressor recipe usage * remove RA1 thermal centrifuge recipe usage * clean GT_ModHandler * obliterate RA1 entries in interfaces (3/?) * remove RA1 packager recipe usage * remove RA1 lathe recipe usage * remove RA1 vacuum freezer recipe usage * remove RA1 fluid heater recipe usage * remove RA1 nano forge recipe usage * remove RA1 autoclave recipe usage * obliterate RA1 entries in interfaces (4/?) * remove RA1 cracker recipe usage * remove RA1 pyrolyse recipe usage * remove RA1 pulveriser recipe usage * remove RA1 fluid extractor recipe usage * remove RA1 assembly line recipe usage * remove RA1 alloy blast smelter recipe usage * remove RA1 coke oven recipe usage * obliterate RA1 entries in interfaces (5/?) * remove RA1 dehydrator recipe usage * remove deprecated usages * obliterate RA1 entries in interfaces (6/?) * remove RA1 assembler recipe usage * obliterate RA1 entries in interfaces (7/?) * remove RA1 mixer recipe usage * remove RA1 forge hammer recipe usage * remove RA1 wiremill recipe usage * remove RA1 extruder recipe usage * remove RA1 fluid soldifier recipe usage * remove RA1 chemical bath recipe usage * remove RA1 electromagnetic separator recipe usage * remove RA1 sifter recipe usage * remove distillery recipe usage * remove distillation tower usage * remove extractor usage * obliterate RA1 entries in interfaces (8/?) * remove QFT usage * cleaning * remove packager usage * remove fluid heater usage * remove vacuum freezer usage * remove distillery usage * fix QFT chances arrays * remove fission fuel usage * remove cyclotron usage * remove molecular transformer usage * remove chemplant usage * remove coldtrap and reactor processing unit usage * obliterate RA1 entries in interfaces (9/?) * spotlessApply * fixes * remove addRecipe calls * migrate forge of gods recipes * yeet special value calls (1 / 2) * yeet special value calls (2 / 2) * migrate GG Fuel recipes * migrate all GG maps except EHE * CORE.RA is no more * clear GT_RecipeAdder * remove dead code * clean RecipeMap a bit * spotless apply * fix output chances * Update RecipeLoader.java * fix * remove buggy recipe * migrate to enum for IDs * sort enum * move to enum * fix recipes * spotless apply * fix recipe * remove useless recipes * spotless apply * remove unused blocks * fix GT++ recipe * Update RecipeLoader.java * Update RecipeLoader.java * fix imports * Spotless apply for branch remove_RA1_calls for #2713 (#2742) spotlessApply Co-authored-by: GitHub GTNH Actions <> * fix recipe (cherry picked from commit a25d3b62997f080e064369e940eaf53a96a300e6) * fix (cherry picked from commit d9af01140f3ee77de2be18be70f04f8fbe4b547f) * temporarily remove panic mode * fix recipes * Revert "temporarily remove panic mode" This reverts commit 483cfcf74371b91e7d545f058f9d25ff4fcec95a. * fix recipes --------- Co-authored-by: Dream Master Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../gregtech/loaders/RecipeGen_AlloySmelter.java | 50 +- .../xmod/gregtech/loaders/RecipeGen_Assembler.java | 52 +- .../gregtech/loaders/RecipeGen_BlastSmelter.java | 480 ++++++----- .../loaders/RecipeGen_BlastSmelterGT_GTNH.java | 4 +- .../gregtech/loaders/RecipeGen_DustGeneration.java | 531 ++++++------ .../xmod/gregtech/loaders/RecipeGen_Extruder.java | 158 ++-- .../xmod/gregtech/loaders/RecipeGen_Fluids.java | 215 +++-- .../xmod/gregtech/loaders/RecipeGen_Fluorite.java | 202 ++--- .../loaders/RecipeGen_MaterialProcessing.java | 127 ++- .../gregtech/loaders/RecipeGen_MetalRecipe.java | 147 ++-- .../xmod/gregtech/loaders/RecipeGen_Ore.java | 392 +++++---- .../xmod/gregtech/loaders/RecipeGen_Plasma.java | 46 +- .../xmod/gregtech/loaders/RecipeGen_Plates.java | 269 +++--- .../xmod/gregtech/loaders/RecipeGen_Recycling.java | 177 ++-- .../loaders/recipe/RecipeLoader_ChemicalSkips.java | 913 ++++++++++++--------- .../gregtech/loaders/recipe/RecipeLoader_GTNH.java | 65 +- .../loaders/recipe/RecipeLoader_GlueLine.java | 600 +++++++------- .../gregtech/loaders/recipe/RecipeLoader_LFTR.java | 82 +- .../recipe/RecipeLoader_MolecularTransformer.java | 90 +- .../loaders/recipe/RecipeLoader_Nuclear.java | 750 +++++++++-------- .../recipe/RecipeLoader_NuclearFuelProcessing.java | 355 ++++---- 21 files changed, 2964 insertions(+), 2741 deletions(-) (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/loaders') diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java index d455697330..b56a480c0c 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_AlloySmelter.java @@ -1,5 +1,7 @@ package gtPlusPlus.xmod.gregtech.loaders; +import static gregtech.api.recipe.RecipeMaps.alloySmelterRecipes; + import java.util.HashSet; import java.util.Set; @@ -30,34 +32,38 @@ public class RecipeGen_AlloySmelter extends RecipeGen_Base { private void generateRecipes(final Material material) { final int tVoltageMultiplier = material.vVoltageMultiplier; - + final long duration = Math.max(material.getMass() * 2L, 1L); // Nuggets if (ItemUtils.checkForInvalidItems(material.getIngot(1)) - && ItemUtils.checkForInvalidItems(material.getNugget(1))) - GT_Values.RA.addAlloySmelterRecipe( - material.getIngot(1), - ItemList.Shape_Mold_Nugget.get(0), - material.getNugget(9), - (int) Math.max(material.getMass() * 2L, 1L), - tVoltageMultiplier); + && ItemUtils.checkForInvalidItems(material.getNugget(1))) { + GT_Values.RA.stdBuilder() + .itemInputs(material.getIngot(1), ItemList.Shape_Mold_Nugget.get(0)) + .itemOutputs(material.getNugget(9)) + .duration(duration) + .eut(tVoltageMultiplier) + .addTo(alloySmelterRecipes); + } // Gears - if (ItemUtils.checkForInvalidItems(material.getIngot(1)) && ItemUtils.checkForInvalidItems(material.getGear(1))) - GT_Values.RA.addAlloySmelterRecipe( - material.getIngot(8), - ItemList.Shape_Mold_Gear.get(0), - material.getGear(1), - (int) Math.max(material.getMass() * 2L, 1L), - tVoltageMultiplier); + if (ItemUtils.checkForInvalidItems(material.getIngot(1)) + && ItemUtils.checkForInvalidItems(material.getGear(1))) { + GT_Values.RA.stdBuilder() + .itemInputs(material.getIngot(8), ItemList.Shape_Mold_Gear.get(0)) + .itemOutputs(material.getGear(1)) + .duration(duration) + .eut(tVoltageMultiplier) + .addTo(alloySmelterRecipes); + } // Ingot if (ItemUtils.checkForInvalidItems(material.getIngot(1)) - && ItemUtils.checkForInvalidItems(material.getNugget(1))) - GT_Values.RA.addAlloySmelterRecipe( - material.getNugget(9), - ItemList.Shape_Mold_Ingot.get(0), - material.getIngot(1), - (int) Math.max(material.getMass() * 2L, 1L), - tVoltageMultiplier); + && ItemUtils.checkForInvalidItems(material.getNugget(1))) { + GT_Values.RA.stdBuilder() + .itemInputs(material.getNugget(9), ItemList.Shape_Mold_Ingot.get(0)) + .itemOutputs(material.getIngot(1)) + .duration(duration) + .eut(tVoltageMultiplier) + .addTo(alloySmelterRecipes); + } } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java index 1594568d23..8256b73a44 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Assembler.java @@ -1,11 +1,15 @@ package gtPlusPlus.xmod.gregtech.loaders; +import static gregtech.api.recipe.RecipeMaps.assemblerRecipes; +import static gregtech.api.util.GT_RecipeBuilder.SECONDS; + import java.util.HashSet; import java.util.Set; import net.minecraft.item.ItemStack; import gregtech.api.enums.GT_Values; +import gregtech.api.util.GT_Utility; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; @@ -33,13 +37,14 @@ public class RecipeGen_Assembler extends RecipeGen_Base { private void generateRecipes(final Material material) { // Frame Box - if (ItemUtils.checkForInvalidItems(new ItemStack[] { material.getRod(1), material.getFrameBox(1) })) - GT_Values.RA.addAssemblerRecipe( - material.getRod(4), - ItemUtils.getGregtechCircuit(4), - material.getFrameBox(1), - 60, - material.vVoltageMultiplier); + if (ItemUtils.checkForInvalidItems(new ItemStack[] { material.getRod(1), material.getFrameBox(1) })) { + GT_Values.RA.stdBuilder() + .itemInputs(material.getRod(4), GT_Utility.getIntegratedCircuit(4)) + .itemOutputs(material.getFrameBox(1)) + .duration(3 * SECONDS) + .eut(material.vVoltageMultiplier) + .addTo(assemblerRecipes); + } // Rotor if (ItemUtils @@ -52,18 +57,29 @@ public class RecipeGen_Assembler extends RecipeGen_Base { material.vVoltageMultiplier); } + @Deprecated private static void addAssemblerRecipe(final ItemStack input1, final ItemStack input2, final ItemStack output1, final int seconds, final int euCost) { - GT_Values.RA.addAssemblerRecipe( - input1, - input2, - FluidUtils.getFluidStack("molten.solderingalloy", 16), - output1, - seconds, - euCost); - GT_Values.RA - .addAssemblerRecipe(input1, input2, FluidUtils.getFluidStack("molten.tin", 32), output1, seconds, euCost); - GT_Values.RA - .addAssemblerRecipe(input1, input2, FluidUtils.getFluidStack("molten.lead", 48), output1, seconds, euCost); + GT_Values.RA.stdBuilder() + .itemInputs(input1, input2) + .itemOutputs(output1) + .fluidInputs(FluidUtils.getFluidStack("molten.solderingalloy", 16)) + .duration(seconds) + .eut(euCost) + .addTo(assemblerRecipes); + GT_Values.RA.stdBuilder() + .itemInputs(input1, input2) + .itemOutputs(output1) + .fluidInputs(FluidUtils.getFluidStack("molten.tin", 32)) + .duration(seconds) + .eut(euCost) + .addTo(assemblerRecipes); + GT_Values.RA.stdBuilder() + .itemInputs(input1, input2) + .itemOutputs(output1) + .fluidInputs(FluidUtils.getFluidStack("molten.lead", 48)) + .duration(seconds) + .eut(euCost) + .addTo(assemblerRecipes); } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java index 2d573c9fb7..8213aee95e 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelter.java @@ -1,7 +1,13 @@ package gtPlusPlus.xmod.gregtech.loaders; +import static gregtech.api.recipe.RecipeMaps.fluidSolidifierRecipes; +import static gtPlusPlus.api.recipe.GTPPRecipeMaps.alloyBlastSmelterRecipes; + import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; +import java.util.List; +import java.util.Objects; import java.util.Set; import net.minecraft.item.ItemStack; @@ -9,11 +15,11 @@ import net.minecraftforge.fluids.FluidStack; import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; +import gregtech.api.util.GT_RecipeBuilder; +import gregtech.api.util.GT_Utility; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.recipe.GTPPRecipeCategories; -import gtPlusPlus.api.recipe.GTPPRecipeMaps; -import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.ALLOY; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; @@ -46,276 +52,260 @@ public class RecipeGen_BlastSmelter extends RecipeGen_Base { private void generateARecipe(final Material M) { // Add a Blast Smelting Recipe, Let's go! - ItemStack tStack; - if (null != (tStack = M.getDust(1))) { - - final Material[] badMaterials = { FLUORIDES.THORIUM_HEXAFLUORIDE, FLUORIDES.THORIUM_TETRAFLUORIDE, - ALLOY.BLOODSTEEL, NUCLIDE.LiFBeF2ThF4UF4, NUCLIDE.LiFBeF2ZrF4UF4, NUCLIDE.LiFBeF2ZrF4U235 }; - for (final Material R : badMaterials) { - if (M == R) { - return; - } + ItemStack tStack = M.getDust(1); + if (tStack == null) { + return; + } + + final Material[] badMaterials = { FLUORIDES.THORIUM_HEXAFLUORIDE, FLUORIDES.THORIUM_TETRAFLUORIDE, + ALLOY.BLOODSTEEL, NUCLIDE.LiFBeF2ThF4UF4, NUCLIDE.LiFBeF2ZrF4UF4, NUCLIDE.LiFBeF2ZrF4U235 }; + for (final Material R : badMaterials) { + if (M == R) { + return; } + } - // Prepare some Variables - ItemStack[] components; - ArrayList tMaterial = new ArrayList<>(); - int inputStackCount = 0; - int fluidAmount = 0; - final boolean doTest = true; - tMaterial = M.getComposites(); + // Prepare some Variables + ItemStack[] components; + ArrayList tMaterial = new ArrayList<>(); + int inputStackCount = 0; + int fluidAmount = 0; + final boolean doTest = true; + tMaterial = M.getComposites(); - // This Bad boy here is what dictates unique recipes. - ItemStack circuitGT; + // This Bad boy here is what dictates unique recipes. + ItemStack circuitGT; - // Set a duration - OLD - /* - * int duration = 0; if (M.getMeltingPointK() > 150){ duration = (int) Math.max(M.getMass() / 50L, 1L) * - * M.getMeltingPointK(); } else { duration = (int) Math.max(M.getMass() / 50L, 1L) * 150; } - */ + long aVoltage = MaterialUtils.getVoltageForTier(M.vTier); - long aVoltage = MaterialUtils.getVoltageForTier(M.vTier); + // Set a duration + int duration = 120 * M.vTier * 10; - // Set a duration - NEW - int duration = 120 * M.vTier * 10; + if (M.vTier <= 4) { + duration = 20 * M.vTier * 10; + } + + int mMaterialListSize = 0; + + int mTotalPartsCounter = M.smallestStackSizeWhenProcessing; - if (M.vTier <= 4) { - duration = 20 * M.vTier * 10; + if (M.getComposites() != null) { + for (final gtPlusPlus.core.material.MaterialStack ternkfsdf : M.getComposites()) { + if (ternkfsdf != null) { + mMaterialListSize++; + } } + } else { + mMaterialListSize = 1; + } - int mMaterialListSize = 0; + if (duration <= 0) { + final int second = 20; + duration = 14 * second * mMaterialListSize * 8; + } - int mTotalPartsCounter = M.smallestStackSizeWhenProcessing; + Logger.WARNING("[BAS] Size: " + mMaterialListSize); + + // Make a simple one Material MaterialStack[] and log it for validity. + circuitGT = GT_Utility.getIntegratedCircuit(1); + final ItemStack[] tItemStackTest = new ItemStack[] { circuitGT, tStack }; + inputStackCount = 1; + fluidAmount = 144 * inputStackCount; + Logger.WARNING( + "[BAS] Adding an Alloy Blast Smelter Recipe for " + M.getLocalizedName() + + ". Gives " + + fluidAmount + + "L of molten metal."); + for (int das = 0; das < tItemStackTest.length; das++) { + if (tItemStackTest[das] != null) { + Logger.WARNING( + "[BAS] tMaterial[" + das + + "]: " + + tItemStackTest[das].getDisplayName() + + " Meta: " + + tItemStackTest[das].getItemDamage() + + ", Amount: " + + tItemStackTest[das].stackSize); + } + } - if (M.getComposites() != null) { - for (final gtPlusPlus.core.material.MaterialStack ternkfsdf : M.getComposites()) { - if (ternkfsdf != null) { - mMaterialListSize++; - // mTotalPartsCounter += ternkfsdf.getSmallestStackSizes()[0]; - } - } + final boolean hasMoreInputThanACircuit = (tItemStackTest.length > 1); + + // Generate Recipes for all singular materials that can be made molten. + if (hasMoreInputThanACircuit) { + if (M.requiresBlastFurnace()) { + GT_Values.RA.stdBuilder() + .itemInputs(tItemStackTest) + .fluidOutputs(M.getFluidStack(fluidAmount)) + .duration(duration / (mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)) + .eut(aVoltage) + .recipeCategory(GTPPRecipeCategories.absNonAlloyRecipes) + .addTo(alloyBlastSmelterRecipes); } else { - mMaterialListSize = 1; + Logger.WARNING("[BAS] Failed."); } + } else { + GT_Values.RA.stdBuilder() + .itemInputs(tItemStackTest) + .fluidOutputs(M.getFluidStack(fluidAmount)) + .eut(aVoltage) + .duration(duration / (mTotalPartsCounter > 0 ? mTotalPartsCounter : 1) / 2) + .addTo(alloyBlastSmelterRecipes); + + Logger.WARNING("[BAS] Success."); + GT_Values.RA.stdBuilder() + .itemInputs(ItemList.Shape_Mold_Ingot.get(0)) + .itemOutputs(M.getIngot(1)) + .fluidInputs(M.getFluidStack(144)) + .duration(duration / 2) + .eut(60) + .addTo(fluidSolidifierRecipes); + + Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); + + } + + if (tMaterial == null) { + Logger.WARNING("[BAS] doTest: " + doTest + " | tMaterial == null: true"); + return; + } + + // Reset the Variables for compounds if last recipe was a success. + inputStackCount = 0; + + if (mMaterialListSize <= 1) { + return; + } + // If this Material has some kind of compound list, proceed + + final gtPlusPlus.core.material.MaterialStack[] tempStack = new gtPlusPlus.core.material.MaterialStack[mMaterialListSize]; + circuitGT = GT_Utility.getIntegratedCircuit(mMaterialListSize); - if (duration <= 0) { - final int second = 20; - duration = 14 * second * mMaterialListSize * 8; + // Builds me a MaterialStack[] from the MaterialList of M. + int ooo = 0; + for (final gtPlusPlus.core.material.MaterialStack xMaterial : M.getComposites()) { + if (xMaterial == null) { + ooo++; + continue; } - Logger.WARNING("[BAS] Size: " + mMaterialListSize); + if (xMaterial.getStackMaterial() == null) { + tempStack[ooo] = xMaterial; + ooo++; + continue; + } - // Make a simple one Material MaterialStack[] and log it for validity. - circuitGT = ItemUtils.getGregtechCircuit(1); - final ItemStack[] tItemStackTest = new ItemStack[] { circuitGT, tStack }; - inputStackCount = 1; - fluidAmount = 144 * inputStackCount; Logger.WARNING( - "[BAS] Adding an Alloy Blast Smelter Recipe for " + M.getLocalizedName() - + ". Gives " - + fluidAmount - + "L of molten metal."); - for (int das = 0; das < tItemStackTest.length; das++) { - if (tItemStackTest[das] != null) { - Logger.WARNING( - "[BAS] tMaterial[" + das - + "]: " - + tItemStackTest[das].getDisplayName() - + " Meta: " - + tItemStackTest[das].getItemDamage() - + ", Amount: " - + tItemStackTest[das].stackSize); - } + "[BAS] FOUND: " + xMaterial.getStackMaterial() + .getLocalizedName()); + Logger.WARNING( + "[BAS] ADDING: " + xMaterial.getStackMaterial() + .getLocalizedName()); + tempStack[ooo] = xMaterial; + ooo++; + } + + // Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for + // the 144L fluid multiplier + components = new ItemStack[9]; + inputStackCount = 0; + FluidStack componentsFluid = null; + for (int irc = 0; irc < M.getComposites() + .size(); irc++) { + if (M.getComposites() + .get(irc) == null) { + continue; } - final boolean hasMoreInputThanACircuit = (tItemStackTest.length > 1); - - // Generate Recipes for all singular materials that can be made molten. - if (hasMoreInputThanACircuit) { - if (M.requiresBlastFurnace()) { - GT_Values.RA.stdBuilder() - .itemInputs(tItemStackTest) - .fluidOutputs(M.getFluidStack(fluidAmount)) - .duration(duration / (mTotalPartsCounter > 0 ? mTotalPartsCounter : 1)) - .eut(aVoltage) - .recipeCategory(GTPPRecipeCategories.absNonAlloyRecipes) - .addTo(GTPPRecipeMaps.alloyBlastSmelterRecipes); - } else { - Logger.WARNING("[BAS] Failed."); + final int r = (int) M.vSmallestRatio[irc]; + inputStackCount = inputStackCount + r; + if ((M.getComposites() + .get(irc) + .getStackMaterial() + .getState() != MaterialState.SOLID) || !ItemUtils.checkForInvalidItems( + M.getComposites() + .get(irc) + .getDustStack(r))) { + final int xr = r; + if ((xr > 0) && (xr <= 100)) { + final int mathmatics = (r * 1000); + componentsFluid = FluidUtils.getFluidStack( + M.getComposites() + .get(irc) + .getStackMaterial() + .getFluidStack(mathmatics), + mathmatics); } } else { - if (CORE.RA.addBlastSmelterRecipe( - tItemStackTest, - M.getFluidStack(fluidAmount), - 100, - duration / (mTotalPartsCounter > 0 ? mTotalPartsCounter : 1) / 2, - (int) aVoltage)) { - Logger.WARNING("[BAS] Success."); - if (GT_Values.RA.addFluidSolidifierRecipe( - ItemList.Shape_Mold_Ingot.get(0), - M.getFluidStack(144), - M.getIngot(1), - duration / 2, - 60)) { - Logger.WARNING("[BAS] Success, Also added a Fluid solidifier recipe."); - /* - * if (GT_Values.RA.addFluidExtractionRecipe(M.getIngot(1), null, M.getFluidStack(144), 100, - * duration/2, 60)){ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); } if - * (GT_Values.RA.addFluidExtractionRecipe(M.getNugget(1), null, M.getFluidStack(16), 100, - * duration/2/9, 60)){ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); } - */ - /* - * if (GT_Values.RA.addFluidExtractionRecipe(M.getSmallDust(1), null, M.getFluid(36), 100, - * duration/2/4, 60)){ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); } - * if (GT_Values.RA.addFluidExtractionRecipe(M.getTinyDust(1), null, M.getFluid(16), 100, - * duration/2/9, 60)){ Logger.WARNING("[BAS] Success, Also added a Fluid Extractor recipe."); } - */ - } + components[irc] = M.getComposites() + .get(irc) + .getUnificatedDustStack(r); + } + } + + // Adds a circuit + if ((mMaterialListSize < 9) && (mMaterialListSize != 0)) { + final ItemStack[] components_NoCircuit = components; + // Builds me an ItemStack[] of the materials. - With a circuit + components = new ItemStack[components_NoCircuit.length + 1]; + for (int fr = 0; fr < components.length; fr++) { + if (fr == 0) { + components[0] = circuitGT; } else { - Logger.WARNING("[BAS] Failed."); + components[fr] = components_NoCircuit[fr - 1]; } } + Logger.WARNING( + "[BAS] Should have added a circuit. mMaterialListSize: " + mMaterialListSize + + " | circuit: " + + components[0].getDisplayName()); + } else { + Logger.WARNING("[BAS] Did not add a circuit. mMaterialListSize: " + mMaterialListSize); + } - if (tMaterial != null) { - // Reset the Variables for compounds if last recipe was a success. - inputStackCount = 0; - - // If this Material has some kind of compound list, proceed - if (mMaterialListSize > 1) { - final gtPlusPlus.core.material.MaterialStack[] tempStack = new gtPlusPlus.core.material.MaterialStack[mMaterialListSize]; - circuitGT = ItemUtils.getGregtechCircuit(mMaterialListSize); - // Just double checking - if (tempStack.length > 1) { - - // Builds me a MaterialStack[] from the MaterialList of M. - int ooo = 0; - for (final gtPlusPlus.core.material.MaterialStack xMaterial : M.getComposites()) { - if (xMaterial != null) { - if (xMaterial.getStackMaterial() != null) { - Logger.WARNING( - "[BAS] FOUND: " + xMaterial.getStackMaterial() - .getLocalizedName()); - Logger.WARNING( - "[BAS] ADDING: " + xMaterial.getStackMaterial() - .getLocalizedName()); - } - tempStack[ooo] = xMaterial; - } - ooo++; - } - - // Builds me an ItemStack[] of the materials. - Without a circuit - this gets a good count for - // the 144L fluid multiplier - components = new ItemStack[9]; - inputStackCount = 0; - FluidStack componentsFluid = null; - for (int irc = 0; irc < M.getComposites() - .size(); irc++) { - if (M.getComposites() - .get(irc) != null) { - final int r = (int) M.vSmallestRatio[irc]; - inputStackCount = inputStackCount + r; - if ((M.getComposites() - .get(irc) - .getStackMaterial() - .getState() != MaterialState.SOLID) - || !ItemUtils.checkForInvalidItems( - M.getComposites() - .get(irc) - .getDustStack(r))) { - final int xr = r; - if ((xr > 0) && (xr <= 100)) { - final int mathmatics = (r * 1000); - componentsFluid = FluidUtils.getFluidStack( - M.getComposites() - .get(irc) - .getStackMaterial() - .getFluidStack(mathmatics), - mathmatics); - } - } else { - components[irc] = M.getComposites() - .get(irc) - .getUnificatedDustStack(r); - } - } - } - - // Adds a circuit - if ((mMaterialListSize < 9) && (mMaterialListSize != 0)) { - final ItemStack[] components_NoCircuit = components; - // Builds me an ItemStack[] of the materials. - With a circuit - components = new ItemStack[components_NoCircuit.length + 1]; - for (int fr = 0; fr < components.length; fr++) { - if (fr == 0) { - components[0] = circuitGT; - } else { - components[fr] = components_NoCircuit[fr - 1]; - } - } - Logger.WARNING( - "[BAS] Should have added a circuit. mMaterialListSize: " + mMaterialListSize - + " | circuit: " - + components[0].getDisplayName()); - } else { - Logger.WARNING("[BAS] Did not add a circuit. mMaterialListSize: " + mMaterialListSize); - } - - // Set Fluid output - fluidAmount = 144 * inputStackCount; - - Logger.WARNING( - "[BAS] Adding an Alloy Blast Smelter Recipe for " + M.getLocalizedName() - + " using it's compound dusts. This material has " - + inputStackCount - + " parts. Gives " - + fluidAmount - + "L of molten metal."); - Logger.WARNING("[BAS] tMaterial.length: " + components.length + "."); - for (int das = 0; das < components.length; das++) { - if (components[das] != null) { - Logger.WARNING( - "[BAS] tMaterial[" + das - + "]: " - + components[das].getDisplayName() - + " Meta: " - + components[das].getItemDamage() - + ", Amount: " - + components[das].stackSize); - } - } - - // Adds Recipe - if (M.requiresBlastFurnace()) { - if (CORE.RA.addBlastSmelterRecipe( - components, - componentsFluid, - M.getFluidStack(fluidAmount), - 100, - duration, - (int) aVoltage)) { - Logger.WARNING("[BAS] Success."); - } else { - Logger.WARNING("[BAS] Failed."); - } - } else { - if (CORE.RA.addBlastSmelterRecipe( - components, - componentsFluid, - M.getFluidStack(fluidAmount), - 100, - duration, - (int) aVoltage / 2)) { - Logger.WARNING("[BAS] Success."); - } else { - Logger.WARNING("[BAS] Failed."); - } - } - } - } - } else { - Logger.WARNING("[BAS] doTest: " + doTest + " | tMaterial != null: " + (tMaterial != null)); + // Set Fluid output + fluidAmount = 144 * inputStackCount; + + Logger.WARNING( + "[BAS] Adding an Alloy Blast Smelter Recipe for " + M.getLocalizedName() + + " using it's compound dusts. This material has " + + inputStackCount + + " parts. Gives " + + fluidAmount + + "L of molten metal."); + Logger.WARNING("[BAS] tMaterial.length: " + components.length + "."); + for (int das = 0; das < components.length; das++) { + if (components[das] != null) { + Logger.WARNING( + "[BAS] tMaterial[" + das + + "]: " + + components[das].getDisplayName() + + " Meta: " + + components[das].getItemDamage() + + ", Amount: " + + components[das].stackSize); } } + + // Adds Recipe + GT_RecipeBuilder builder = GT_Values.RA.stdBuilder(); + List inputs = Arrays.asList(components); + inputs.removeIf(Objects::isNull); + components = inputs.toArray(new ItemStack[0]); + + builder = builder.itemInputs(components); + if (componentsFluid != null) { + builder.fluidInputs(componentsFluid); + } + builder.fluidOutputs(M.getFluidStack(fluidAmount)); + + if (M.requiresBlastFurnace()) { + builder.eut(aVoltage); + } else { + builder.eut(aVoltage / 2); + } + builder.duration(duration) + .addTo(alloyBlastSmelterRecipes); + Logger.WARNING("[BAS] Success."); } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java index 5398a6a0b5..0ac39d39bc 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_BlastSmelterGT_GTNH.java @@ -13,11 +13,11 @@ import org.apache.commons.lang3.ArrayUtils; import gregtech.api.enums.GT_Values; import gregtech.api.recipe.RecipeMaps; import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.minecraft.ItemStackData; import gtPlusPlus.api.recipe.GTPPRecipeCategories; import gtPlusPlus.api.recipe.GTPPRecipeMaps; -import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; @@ -201,7 +201,7 @@ public class RecipeGen_BlastSmelterGT_GTNH { // If no circuit was found, add a circuit here if (!circuitFound) { l = 1; - newInput[0] = CI.getNumberedCircuit(inputs.length); + newInput[0] = GT_Utility.getIntegratedCircuit(inputs.length); } for (ItemStack y : inputs) { diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java index 1499ea3cad..84e910c9b1 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_DustGeneration.java @@ -1,6 +1,17 @@ package gtPlusPlus.xmod.gregtech.loaders; +import static gregtech.api.enums.GT_Values.RA; +import static gregtech.api.recipe.RecipeMaps.blastFurnaceRecipes; +import static gregtech.api.recipe.RecipeMaps.maceratorRecipes; +import static gregtech.api.recipe.RecipeMaps.mixerRecipes; +import static gregtech.api.recipe.RecipeMaps.packagerRecipes; +import static gregtech.api.util.GT_RecipeBuilder.SECONDS; +import static gregtech.api.util.GT_RecipeConstants.COIL_HEAT; + +import java.util.Arrays; import java.util.HashSet; +import java.util.List; +import java.util.Objects; import java.util.Set; import net.minecraft.item.ItemStack; @@ -12,13 +23,10 @@ import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_Utility; import gtPlusPlus.api.interfaces.RunnableWithInfo; import gtPlusPlus.api.objects.Logger; -import gtPlusPlus.api.objects.data.AutoMap; -import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.material.Material; import gtPlusPlus.core.material.MaterialGenerator; import gtPlusPlus.core.material.MaterialStack; import gtPlusPlus.core.material.state.MaterialState; -import gtPlusPlus.core.recipe.common.CI; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.RecipeUtils; @@ -113,11 +121,21 @@ public class RecipeGen_DustGeneration extends RecipeGen_Base { final ItemStack materialFrameBox = material.getFrameBox(1); if (ItemUtils.checkForInvalidItems(materialBlock)) { - GT_ModHandler.addPulverisationRecipe(materialBlock, material.getDust(9)); + RA.stdBuilder() + .itemInputs(materialBlock) + .itemOutputs(material.getDust(9)) + .eut(2) + .duration(20 * SECONDS) + .addTo(maceratorRecipes); } if (ItemUtils.checkForInvalidItems(materialFrameBox)) { - GT_ModHandler.addPulverisationRecipe(materialFrameBox, material.getDust(2)); + RA.stdBuilder() + .itemInputs(materialFrameBox) + .itemOutputs(material.getDust(2)) + .eut(2) + .duration(20 * SECONDS) + .addTo(maceratorRecipes); } if (ItemUtils.checkForInvalidItems(smallDust) && ItemUtils.checkForInvalidItems(tinyDust)) { @@ -131,253 +149,270 @@ public class RecipeGen_DustGeneration extends RecipeGen_Base { } // Is this a composite? - if ((inputStacks != null) && !disableOptional) { - // Is this a composite? - Logger.WARNING("mixer length: " + inputStacks.length); - if ((inputStacks.length != 0) && (inputStacks.length <= 4)) { - // Log Input items - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - final long[] inputStackSize = material.vSmallestRatio; - Logger.WARNING("mixer is stacksizeVar null? " + (inputStackSize != null)); - // Is smallest ratio invalid? - if (inputStackSize != null) { - // set stack sizes on an input ItemStack[] - for (short x = 0; x < inputStacks.length; x++) { - if ((inputStacks[x] != null) && (inputStackSize[x] != 0)) { - inputStacks[x].stackSize = (int) inputStackSize[x]; - } - } - // Relog input values, with stack sizes - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - - // Get us four ItemStacks to input into the mixer - ItemStack[] input = new ItemStack[4]; - - input[0] = (inputStacks.length >= 1) ? ((inputStacks[0] == null) ? null : inputStacks[0]) : null; - input[1] = (inputStacks.length >= 2) ? ((inputStacks[1] == null) ? null : inputStacks[1]) : null; - input[2] = (inputStacks.length >= 3) ? ((inputStacks[2] == null) ? null : inputStacks[2]) : null; - input[3] = (inputStacks.length >= 4) ? ((inputStacks[3] == null) ? null : inputStacks[3]) : null; - - if (inputStacks.length == 1) { - input[1] = input[0]; - input[0] = CI.getNumberedCircuit(inputStacks.length + 10); - } else if (inputStacks.length == 2) { - input[2] = input[1]; - input[1] = input[0]; - input[0] = CI.getNumberedCircuit(inputStacks.length + 10); - - } else if (inputStacks.length == 3) { - input[3] = input[2]; - input[2] = input[1]; - input[1] = input[0]; - input[0] = CI.getNumberedCircuit(inputStacks.length + 10); - } + if ((inputStacks == null) || disableOptional) { + return; + } - /* - * for (int g = 0; g<4; g++) { if(inputStacks.length > g) { input[g] = inputStacks[g] != null ? - * inputStacks[g] : null; } else { input[g] = CI.getNumberedCircuit(g+10); break; } } - */ - - // Add mixer Recipe - FluidStack oxygen = GT_Values.NF; - if (material.getComposites() != null) { - for (final MaterialStack x : material.getComposites()) { - if (!material.getComposites() - .isEmpty()) { - if (x != null) { - if (x.getStackMaterial() != null) { - if (x.getStackMaterial() - .getDust(1) == null) { - if (x.getStackMaterial() - .getState() != MaterialState.SOLID - && x.getStackMaterial() - .getState() != MaterialState.ORE - && x.getStackMaterial() - .getState() != MaterialState.PLASMA) { - oxygen = x.getStackMaterial() - .getFluidStack(1000); - break; - } - } - } - } - } - } - } + // Is this a composite? + Logger.WARNING("mixer length: " + inputStacks.length); + if (!((inputStacks.length != 0) && (inputStacks.length <= 4))) { + return; + } + // Log Input items + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + final long[] inputStackSize = material.vSmallestRatio; + Logger.WARNING("mixer is stacksizeVar null? " + (inputStackSize != null)); + // Is smallest ratio invalid? + if (inputStackSize == null) { + return; + } + // set stack sizes on an input ItemStack[] + for (short x = 0; x < inputStacks.length; x++) { + if ((inputStacks[x] != null) && (inputStackSize[x] != 0)) { + inputStacks[x].stackSize = (int) inputStackSize[x]; + } + } + // Relog input values, with stack sizes + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + + // Get us four ItemStacks to input into the mixer + ItemStack[] input = new ItemStack[4]; + + input[0] = (inputStacks.length >= 1) ? ((inputStacks[0] == null) ? null : inputStacks[0]) : null; + input[1] = (inputStacks.length >= 2) ? ((inputStacks[1] == null) ? null : inputStacks[1]) : null; + input[2] = (inputStacks.length >= 3) ? ((inputStacks[2] == null) ? null : inputStacks[2]) : null; + input[3] = (inputStacks.length >= 4) ? ((inputStacks[3] == null) ? null : inputStacks[3]) : null; + + if (inputStacks.length == 1) { + input[1] = input[0]; + input[0] = GT_Utility.getIntegratedCircuit(inputStacks.length + 10); + } else if (inputStacks.length == 2) { + input[2] = input[1]; + input[1] = input[0]; + input[0] = GT_Utility.getIntegratedCircuit(inputStacks.length + 10); + + } else if (inputStacks.length == 3) { + input[3] = input[2]; + input[2] = input[1]; + input[1] = input[0]; + input[0] = GT_Utility.getIntegratedCircuit(inputStacks.length + 10); + } - input = ItemUtils.cleanItemStackArray(input); - - // Add mixer Recipe - if (GT_Values.RA.addMixerRecipe( - input[0], - input[1], - input[2], - input[3], - oxygen, - null, - outputStacks, - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)) // Was 6, but let's try 2. This makes Potin LV, for example. - { - Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Success"); - } else { - Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Failed"); - } + // Add mixer Recipe + FluidStack oxygen = GT_Values.NF; + if (material.getComposites() != null) { + for (final MaterialStack x : material.getComposites()) { + if (material.getComposites() + .isEmpty()) { + continue; + } + if (x == null) { + continue; + } + if (x.getStackMaterial() == null) { + continue; + } - // Add Shapeless recipe for low tier alloys. - /* - * if (tVoltageMultiplier <= 30){ if (RecipeUtils.addShapedGregtechRecipe(inputStacks, - * outputStacks)){ - * Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Success"); } else { - * Logger.WARNING("Dust Shapeless Recipe: "+material.getLocalizedName()+" - Failed"); } } - */ + if (x.getStackMaterial() + .getDust(1) != null) { + continue; + } + + if (x.getStackMaterial() + .getState() != MaterialState.SOLID + && x.getStackMaterial() + .getState() != MaterialState.ORE + && x.getStackMaterial() + .getState() != MaterialState.PLASMA) { + oxygen = x.getStackMaterial() + .getFluidStack(1000); + break; } } } + + input = ItemUtils.cleanItemStackArray(input); + + // Add mixer Recipe + List inputs = Arrays.asList(input); + inputs.removeIf(Objects::isNull); + + if (oxygen == null) { + GT_Values.RA.stdBuilder() + .itemInputs(inputs.toArray(new ItemStack[0])) + .itemOutputs(outputStacks) + .duration((int) Math.max(material.getMass() * 2L * 1, 1)) + .eut(material.vVoltageMultiplier) + .addTo(mixerRecipes); + } else { + GT_Values.RA.stdBuilder() + .itemInputs(inputs.toArray(new ItemStack[0])) + .itemOutputs(outputStacks) + .fluidInputs(oxygen) + .duration((int) Math.max(material.getMass() * 2L * 1, 1)) + .eut(material.vVoltageMultiplier) + .addTo(mixerRecipes); + } + + Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Success"); } public static boolean addMixerRecipe_Standalone(final Material material) { final ItemStack[] inputStacks = material.getMaterialComposites(); final ItemStack outputStacks = material.getDust(material.smallestStackSizeWhenProcessing); // Is this a composite? - if ((inputStacks != null)) { - // Is this a composite? - Logger.WARNING("mixer length: " + inputStacks.length); - if ((inputStacks.length >= 1) && (inputStacks.length <= 4)) { - // Log Input items - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - final long[] inputStackSize = material.vSmallestRatio; - Logger.WARNING("mixer is stacksizeVar not null? " + (inputStackSize != null)); - // Is smallest ratio invalid? - if (inputStackSize != null) { - // set stack sizes on an input ItemStack[] - for (short x = 0; x < inputStacks.length; x++) { - if ((inputStacks[x] != null) && (inputStackSize[x] != 0)) { - inputStacks[x].stackSize = (int) inputStackSize[x]; - } - } - // Relog input values, with stack sizes - Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); - - // Get us four ItemStacks to input into the mixer - ItemStack input1, input2, input3, input4; - input1 = inputStacks[0]; - input2 = (inputStacks.length >= 2) ? (input2 = (inputStacks[1] == null) ? null : inputStacks[1]) - : null; - input3 = (inputStacks.length >= 3) ? (input3 = (inputStacks[2] == null) ? null : inputStacks[2]) - : null; - input4 = (inputStacks.length >= 4) ? (input4 = (inputStacks[3] == null) ? null : inputStacks[3]) - : null; - - if (inputStacks.length == 1) { - input2 = input1; - input1 = CI.getNumberedCircuit(20); - } else if (inputStacks.length == 2) { - input3 = input2; - input2 = input1; - input1 = CI.getNumberedCircuit(20); - - } else if (inputStacks.length == 3) { - input4 = input3; - input3 = input2; - input2 = input1; - input1 = CI.getNumberedCircuit(20); - } + if (inputStacks == null) { + Logger.WARNING("InputStacks == NUll - " + material.getLocalizedName()); + return false; + } - // Add mixer Recipe - FluidStack oxygen = GT_Values.NF; - if (material.getComposites() != null) { - int compSlot = 0; - for (final MaterialStack x : material.getComposites()) { - if (!material.getComposites() - .isEmpty()) { - if (x != null) { - if (x.getStackMaterial() != null) { - if (x.getStackMaterial() - .getDust(1) == null) { - MaterialState f = x.getStackMaterial() - .getState(); - if (f == MaterialState.GAS || f == MaterialState.LIQUID - || f == MaterialState.PURE_LIQUID - || f == MaterialState.PURE_GAS) { - oxygen = x.getStackMaterial() - .getFluidStack((int) (material.vSmallestRatio[compSlot] * 1000)); - } - } - } - } - } - compSlot++; - } - } + // Is this a composite? + Logger.WARNING("mixer length: " + inputStacks.length); + if (!((inputStacks.length >= 1) && (inputStacks.length <= 4))) { + Logger.WARNING("InputStacks is out range 1-4 - " + material.getLocalizedName()); + return false; + } + // Log Input items + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + final long[] inputStackSize = material.vSmallestRatio; + Logger.WARNING("mixer is stacksizeVar not null? " + (inputStackSize != null)); + + // Is smallest ratio invalid? + if (inputStackSize == null) { + Logger.WARNING("inputStackSize == NUll - " + material.getLocalizedName()); + return true; + } - // Add mixer Recipe - try { - if (GT_Values.RA.addMixerRecipe( - input1, - input2, - input3, - input4, - oxygen, - null, - outputStacks, - (int) Math.max(material.getMass() * 2L * 1, 1), - material.vVoltageMultiplier)) // Was 6, but let's try 2. This makes Potin LV, for - // example. - { - Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Success"); - return true; - } else { - Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Failed"); - return false; - } - } catch (Throwable t) { - t.printStackTrace(); - } - } else { - Logger.WARNING("inputStackSize == NUll - " + material.getLocalizedName()); + // set stack sizes on an input ItemStack[] + for (short x = 0; x < inputStacks.length; x++) { + if ((inputStacks[x] != null) && (inputStackSize[x] != 0)) { + inputStacks[x].stackSize = (int) inputStackSize[x]; + } + } + + // Relog input values, with stack sizes + Logger.WARNING(ItemUtils.getArrayStackNames(inputStacks)); + + // Get us four ItemStacks to input into the mixer + ItemStack input1, input2, input3, input4; + input1 = inputStacks[0]; + input2 = (inputStacks.length >= 2) ? (input2 = (inputStacks[1] == null) ? null : inputStacks[1]) : null; + input3 = (inputStacks.length >= 3) ? (input3 = (inputStacks[2] == null) ? null : inputStacks[2]) : null; + input4 = (inputStacks.length >= 4) ? (input4 = (inputStacks[3] == null) ? null : inputStacks[3]) : null; + + if (inputStacks.length == 1) { + input2 = input1; + input1 = GT_Utility.getIntegratedCircuit(20); + } else if (inputStacks.length == 2) { + input3 = input2; + input2 = input1; + input1 = GT_Utility.getIntegratedCircuit(20); + + } else if (inputStacks.length == 3) { + input4 = input3; + input3 = input2; + input2 = input1; + input1 = GT_Utility.getIntegratedCircuit(20); + } + + // Add mixer Recipe + FluidStack oxygen = GT_Values.NF; + if (material.getComposites() != null) { + int compSlot = 0; + for (final MaterialStack x : material.getComposites()) { + + if (material.getComposites() + .isEmpty()) { + compSlot++; + continue; + } + if (x == null) { + compSlot++; + continue; } + + if (x.getStackMaterial() == null) { + compSlot++; + continue; + } + + if (x.getStackMaterial() + .getDust(1) == null) { + compSlot++; + continue; + } + + MaterialState f = x.getStackMaterial() + .getState(); + if (f == MaterialState.GAS || f == MaterialState.LIQUID + || f == MaterialState.PURE_LIQUID + || f == MaterialState.PURE_GAS) { + oxygen = x.getStackMaterial() + .getFluidStack((int) (material.vSmallestRatio[compSlot] * 1000)); + } + compSlot++; + } + } + + // Add mixer Recipe + try { + if (oxygen == null) { + GT_Values.RA.stdBuilder() + .itemInputs(input1, input2, input3, input4) + .itemOutputs(outputStacks) + .duration((int) Math.max(material.getMass() * 2L * 1, 1)) + .eut(material.vVoltageMultiplier) + .addTo(mixerRecipes); } else { - Logger.WARNING("InputStacks is out range 1-4 - " + material.getLocalizedName()); + GT_Values.RA.stdBuilder() + .itemInputs(input1, input2, input3, input4) + .itemOutputs(outputStacks) + .fluidInputs(oxygen) + .duration((int) Math.max(material.getMass() * 2L * 1, 1)) + .eut(material.vVoltageMultiplier) + .addTo(mixerRecipes); } - } else { - Logger.WARNING("InputStacks == NUll - " + material.getLocalizedName()); + + Logger.WARNING("Dust Mixer Recipe: " + material.getLocalizedName() + " - Success"); + + } catch (Throwable t) { + t.printStackTrace(); } - return false; + return true; } public static boolean generatePackagerRecipes(Material aMatInfo) { - AutoMap aResults = new AutoMap<>(); // Small Dust - aResults.put( - GT_Values.RA.addBoxingRecipe( - GT_Utility.copyAmount(4L, new Object[] { aMatInfo.getSmallDust(4) }), - ItemList.Schematic_Dust.get(0L, new Object[0]), - aMatInfo.getDust(1), - 100, - 4)); + GT_Values.RA.stdBuilder() + .itemInputs(GT_Utility.copyAmount(4, aMatInfo.getSmallDust(4)), ItemList.Schematic_Dust.get(0)) + .itemOutputs(aMatInfo.getDust(1)) + .duration(5 * SECONDS) + .eut(4) + .addTo(packagerRecipes); + // Tiny Dust - aResults.put( - GT_Values.RA.addBoxingRecipe( - GT_Utility.copyAmount(9L, new Object[] { aMatInfo.getTinyDust(9) }), - ItemList.Schematic_Dust.get(0L, new Object[0]), - aMatInfo.getDust(1), - 100, - 4)); - - for (boolean b : aResults) { - if (!b) { - return false; - } - } + GT_Values.RA.stdBuilder() + .itemInputs(GT_Utility.copyAmount(4, aMatInfo.getTinyDust(9)), ItemList.Schematic_Dust.get(0)) + .itemOutputs(aMatInfo.getDust(1)) + .duration(5 * SECONDS) + .eut(4) + .addTo(packagerRecipes); return true; } private void addMacerationRecipe(Material aMatInfo) { try { Logger.MATERIALS("Adding Maceration recipe for " + aMatInfo.getLocalizedName() + " Ingot -> Dusts"); - final int chance = (aMatInfo.vTier * 10) / MathUtils.randInt(10, 20); - GT_ModHandler.addPulverisationRecipe(aMatInfo.getIngot(1), aMatInfo.getDust(1), null, chance); + int chance = (aMatInfo.vTier * 10) / MathUtils.randInt(10, 20); + chance = chance <= 0 ? 1000 : 100 * chance; // comes from RA1 -> RA2 conversion + + RA.stdBuilder() + .itemInputs(aMatInfo.getIngot(1)) + .itemOutputs(aMatInfo.getDust(1)) + .outputChances(chance) + .eut(2) + .duration(20 * SECONDS) + .addTo(maceratorRecipes); } catch (Throwable t) { t.printStackTrace(); } @@ -391,7 +426,7 @@ public class RecipeGen_DustGeneration extends RecipeGen_Base { if (aMatInfo.requiresBlastFurnace()) { aOutput = aMatInfo.getHotIngot(1); if (ItemUtils.checkForInvalidItems(aOutput)) { - if (addBlastFurnaceRecipe(aMatInfo, aDust, null, aOutput, null, aMatInfo.getMeltingPointK())) { + if (addBlastFurnaceRecipe(aMatInfo, aDust, aOutput, aMatInfo.getMeltingPointK())) { Logger .MATERIALS("Successfully added a blast furnace recipe for " + aMatInfo.getLocalizedName()); } else { @@ -403,7 +438,7 @@ public class RecipeGen_DustGeneration extends RecipeGen_Base { } else { aOutput = aMatInfo.getIngot(1); if (ItemUtils.checkF