diff options
author | GlodBlock <1356392126@qq.com> | 2021-12-07 23:02:17 +0800 |
---|---|---|
committer | GlodBlock <1356392126@qq.com> | 2021-12-07 23:02:17 +0800 |
commit | 92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab (patch) | |
tree | 2d1118c74e43d5f4337266c3d64f1921c0526d42 /src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java | |
parent | 06cac63657f40c489477abe923ea3f144fe6749c (diff) | |
download | GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.tar.gz GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.tar.bz2 GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.zip |
rename package
Diffstat (limited to 'src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java')
-rw-r--r-- | src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java | 1125 |
1 files changed, 1125 insertions, 0 deletions
diff --git a/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java b/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java new file mode 100644 index 0000000000..7c3361eac4 --- /dev/null +++ b/src/main/java/goodgenerator/loader/NaquadahReworkRecipeLoader.java @@ -0,0 +1,1125 @@ +package goodgenerator.loader; + +import goodgenerator.main.GoodGenerator; +import goodgenerator.util.ItemRefer; +import goodgenerator.util.MyRecipeAdder; +import com.github.bartimaeusnek.bartworks.system.material.GT_Enhancement.PlatinumSludgeOverHaul; +import com.github.bartimaeusnek.bartworks.system.material.WerkstoffLoader; +import cpw.mods.fml.common.Loader; +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.ItemList; +import gregtech.api.enums.Materials; +import gregtech.api.enums.OrePrefixes; +import gregtech.api.util.*; +import gregtech.common.items.CombType; +import gregtech.loaders.misc.GT_Bees; +import gtPlusPlus.xmod.gregtech.loaders.RecipeGen_MultisUsingFluidInsteadOfCells; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.CraftingManager; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.ShapedRecipes; +import net.minecraft.item.crafting.ShapelessRecipes; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.ShapedOreRecipe; +import net.minecraftforge.oredict.ShapelessOreRecipe; +import org.apache.commons.lang3.reflect.FieldUtils; + +import java.lang.reflect.*; +import java.util.HashSet; + +import static goodgenerator.items.MyMaterial.*; +import static goodgenerator.main.GG_Config_Loader.EnableNaquadahRework; +import static gregtech.common.items.GT_MetaGenerated_Item_01.registerCauldronCleaningFor; + +public class NaquadahReworkRecipeLoader { + + public static void RecipeLoad(){ + + if (!EnableNaquadahRework) return; + + //Naquadah Rework Line + GT_Values.RA.addBlastRecipe( + naquadahEarth.get(OrePrefixes.dust, 2), + GT_Utility.getIntegratedCircuit(1), + fluoroantimonicAcid.getFluidOrGas(3000), + lowQualityNaquadahEmulsion.getFluidOrGas(2000), + titaniumTrifluoride.get(OrePrefixes.dust, 1), + null, + 100, + 480, + 3000 + ); + + GT_Values.RA.addBlastRecipe( + titaniumTrifluoride.get(OrePrefixes.dust, 1), + GT_Utility.getIntegratedCircuit(1), + Materials.Hydrogen.getGas(3000), + Materials.HydrofluoricAcid.getFluid(3000), + GT_OreDictUnificator.get(OrePrefixes.ingotHot, Materials.Titanium, 1), + null, + 120, + 1920, + 2000 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + GT_Utility.copyAmount(0, GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Copper, 1)) + }, + new FluidStack[]{ + Materials.Hydrogen.getGas(8000), + FluidRegistry.getFluidStack("seedoil", 3000) + }, + new FluidStack[]{ + towEthyl1Hexanol.getFluidOrGas(1000) + }, + null, + 400, + 480 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Sodium, 16) + }, + new FluidStack[]{ + towEthyl1Hexanol.getFluidOrGas(2000), + Materials.PhosphoricAcid.getFluid(1000), + Materials.Ethanol.getFluid(4000) + }, + new FluidStack[]{ + P507.getFluidOrGas(1000) + }, + null, + 1200, + 1920 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + null, + new FluidStack[]{ + P507.getFluidOrGas(4000), + lowQualityNaquadahSolution.getFluidOrGas(36000), + }, + new FluidStack[]{ + fluorineRichWasteLiquid.getFluidOrGas(6000), + naquadahAdamantiumSolution.getFluidOrGas(30000) + }, + null, + 4000, + 1920 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Quicklime, 60), + }, + new FluidStack[]{ + fluorineRichWasteLiquid.getFluidOrGas(1500) + }, + new FluidStack[]{ + wasteLiquid.getFluidOrGas(1000) + }, + new ItemStack[]{ + WerkstoffLoader.Fluorspar.get(OrePrefixes.dust, 60) + }, + 1000, + 120 + ); + + GT_Values.RA.addUniversalDistillationRecipe( + wasteLiquid.getFluidOrGas(10000), + new FluidStack[]{ + Materials.SaltWater.getFluid(3000), + FluidRegistry.getFluidStack("phenol", 2000), + Materials.HydrochloricAcid.getFluid(5000) + }, + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Chrome, 3), + 300, + 480 + ); + + MyRecipeAdder.instance.addNeutronActivatorRecipe( + new FluidStack[]{ + naquadahAdamantiumSolution.getFluidOrGas(3000) + }, + null, + new FluidStack[]{ + naquadahRichSolution.getFluidOrGas(2000) + }, + new ItemStack[]{ + adamantine.get(OrePrefixes.dust, 4), + naquadahEarth.get(OrePrefixes.dust, 2), + concentratedEnrichedNaquadahSludge.get(OrePrefixes.dust, 1) + }, + 100, + 230, + 200 + ); + + GT_Values.RA.addAutoclaveRecipe( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.SodiumHydroxide, 27), + null, + naquadahRichSolution.getFluidOrGas(5000), + P507.getFluidOrGas(1000), + naquadahine.get(OrePrefixes.dust, 10), + 10000, + 1000, + 120, + false + ); + + GT_Values.RA.addBlastRecipe( + naquadahine.get(OrePrefixes.dust, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Carbon, 1), + null, + Materials.CarbonDioxide.getGas(1000), + GT_OreDictUnificator.get(OrePrefixes.ingotHot, Materials.Naquadah, 1), + null, + 20, + 7680, + 5000 + ); + + GT_Values.RA.addCentrifugeRecipe( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.SodiumHydroxide, 27), + GT_Utility.getIntegratedCircuit(1), + lowQualityNaquadahEmulsion.getFluidOrGas(10000), + lowQualityNaquadahSolution.getFluidOrGas(9000), + galliumHydroxide.get(OrePrefixes.dust, 16), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.AntimonyTrioxide, 10), + null,null,null, null, + new int[]{6250, 10000}, + 1000, + 1920 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + enrichedNaquadahEarth.get(OrePrefixes.dust, 4), + }, + new FluidStack[]{ + P507.getFluidOrGas(1000), + Materials.SulfuricAcid.getFluid(32000) + }, + new FluidStack[]{ + enrichedNaquadahRichSolution.getFluidOrGas(4000), + wasteLiquid.getFluidOrGas(1000) + }, + new ItemStack[]{ + naquadahEarth.get(OrePrefixes.dust, 1), + triniumSulphate.get(OrePrefixes.dust, 1) + }, + 400, + 1920 + ); + + GT_Values.RA.addAutoclaveRecipe( + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.SodiumHydroxide, 27), + null, + enrichedNaquadahRichSolution.getFluidOrGas(10000), + P507.getFluidOrGas(2500), + concentratedEnrichedNaquadahSludge.get(OrePrefixes.dust, 8), + 10000, + 1000, + 480, + false + ); + + MyRecipeAdder.instance.addNeutronActivatorRecipe( + null, + new ItemStack[]{ + concentratedEnrichedNaquadahSludge.get(OrePrefixes.dust, 16), + }, + null, + new ItemStack[]{ + enrichedNaquadahSulphate.get(OrePrefixes.dust, 15), + WerkstoffLoader.Sodiumsulfate.get(OrePrefixes.dust, 20), + lowQualityNaquadriaSulphate.get(OrePrefixes.dust, 2) + }, + 120, + 480, + 460 + ); + + GT_Values.RA.addBlastRecipe( + enrichedNaquadahSulphate.get(OrePrefixes.dust, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Zinc, 2), + null, + null, + GT_OreDictUnificator.get(OrePrefixes.ingotHot, Materials.NaquadahEnriched, 1), + WerkstoffLoader.ZincSulfate.get(OrePrefixes.dust, 2), + 100, + 7680, + 7500 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + triniumSulphate.get(OrePrefixes.dust, 1), + }, + new FluidStack[]{ + Materials.Hydrogen.getGas(1000) + }, + new FluidStack[]{ + Materials.SulfuricAcid.getFluid(1000) + }, + new ItemStack[]{ + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Trinium, 1), + }, + 120, + 480 + ); + + GT_Values.RA.addCentrifugeRecipe( + naquadriaEarth.get(OrePrefixes.dust, 4), + null, + Materials.PhosphoricAcid.getFluid(4000), + null, + indiumPhosphate.get(OrePrefixes.dust, 1), + lowQualityNaquadriaPhosphate.get(OrePrefixes.dust, 4), + null, null, null, null, + new int[]{2000, 10000}, + 400, + 7680 + ); + + GT_Values.RA.addChemicalRecipe( + galliumHydroxide.get(OrePrefixes.dust, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Sodium, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Gallium, 1), + 40, + 30 + ); + + GT_Values.RA.addChemicalRecipe( + indiumPhosphate.get(OrePrefixes.dust, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Calcium, 1), + null, null, + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Indium, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.TricalciumPhosphate, 1), + 20, + 30 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + lowQualityNaquadriaPhosphate.get(OrePrefixes.dust, 10), + }, + new FluidStack[]{ + Materials.SulfuricAcid.getFluid(30000) + }, + new FluidStack[]{ + naquadriaRichSolution.getFluidOrGas(9000) + }, + new ItemStack[]{ + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Barite, 1), + }, + 1000, + 7680 + ); + + MyRecipeAdder.instance.addNeutronActivatorRecipe( + new FluidStack[]{ + naquadriaRichSolution.getFluidOrGas(9000) + }, + null, + null, + new ItemStack[]{ + naquadriaSulphate.get(OrePrefixes.dust, 4), + lowQualityNaquadriaSulphate.get(OrePrefixes.dust, 6) + }, + 100, + 1100, + 1050 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + lowQualityNaquadriaSulphate.get(OrePrefixes.dust, 3), + }, + new FluidStack[]{ + Materials.Water.getFluid(3000), + P507.getFluidOrGas(500) + }, + new FluidStack[]{ + lowQualityNaquadriaSolution.getFluidOrGas(3500) + }, + null, + 500, + 1920 + ); + + GT_Values.RA.addUniversalDistillationRecipe( + lowQualityNaquadriaSolution.getFluidOrGas(7000), + new FluidStack[]{ + P507.getFluidOrGas(1000), + naquadriaRichSolution.getFluidOrGas(5400), + Materials.DilutedSulfuricAcid.getFluid(12000) + }, + enrichedNaquadahEarth.get(OrePrefixes.dust, 2), + 500, + 7680 + ); + + GT_Values.RA.addBlastRecipe( + naquadriaSulphate.get(OrePrefixes.dust, 1), + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Magnesium, 1), + null, + Materials.HydricSulfide.getGas(1000), + GT_OreDictUnificator.get(OrePrefixes.ingotHot, Materials.Naquadria, 1), + null, + 100, + 122880, + 9100 + ); + + GT_Values.RA.addMixerRecipe( + indiumPhosphate.get(OrePrefixes.dust, 1), + galliumHydroxide.get(OrePrefixes.dust, 1), + GT_Utility.getIntegratedCircuit(2), + null, + null, + null, + GT_OreDictUnificator.get(OrePrefixes.dust, Materials.IndiumGalliumPhosphide, 2), + 15, + 7 + ); + + GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Ball.get(0), + naquadahGoo.getFluidOrGas(72), + ItemRefer.Naquadah_Mass.get(1), + 100, + 30 + ); + + GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Ball.get(0), + enrichedNaquadahGoo.getFluidOrGas(72), + ItemRefer.Enriched_Naquadah_Mass.get(1), + 100, + 30 + ); + + GT_Values.RA.addFluidSolidifierRecipe( + ItemList.Shape_Mold_Ball.get(0), + naquadriaGoo.getFluidOrGas(72), + ItemRefer.Naquadria_Mass.get(1), + 100, + 30 + ); + + GT_Values.RA.addPulveriserRecipe( + ItemRefer.Naquadah_Mass.get(1), + new ItemStack[]{ + naquadahEarth.get(OrePrefixes.dust, 1), + enrichedNaquadahEarth.get(OrePrefixes.dust, 1) + }, + new int[]{10000, 100}, + 100, + 2 + ); + + GT_Values.RA.addPulveriserRecipe( + ItemRefer.Enriched_Naquadah_Mass.get(1), + new ItemStack[]{ + enrichedNaquadahEarth.get(OrePrefixes.dust, 1), + naquadriaEarth.get(OrePrefixes.dust, 1) + }, + new int[]{10000, 100}, + 100, + 2 + ); + + GT_Values.RA.addPulveriserRecipe( + ItemRefer.Naquadria_Mass.get(1), + new ItemStack[]{ + naquadriaEarth.get(OrePrefixes.dust, 1), + naquadriaEarth.get(OrePrefixes.dust, 1) + }, + new int[]{10000, 100}, + 100, + 2 + ); + + GT_Values.RA.addBlastRecipe( + GT_OreDictUnificator.get(OrePrefixes.block, Materials.Silicon, 16), + naquadahine.get(OrePrefixes.dust, 1), + Materials.Argon.getGas(8000), + null, + ItemList.Circuit_Silicon_Ingot3.get(1), + null, + 1000, + 7680, + 4484 + ); + + GT_Values.RA.addChemicalRecipe( + naquadahine.get(OrePrefixes.dust, 1), + Materials.Sodium.getDust(1), + Materials.Naquadah.getDust(1), + 10, + 1920 + ); + + GT_Values.RA.addBlastRecipe( + naquadahEarth.get(OrePrefixes.dust, 2), + GT_Utility.getIntegratedCircuit(2), + Materials.Nitrogen.getGas(1000), + null, + Materials.Naquadah.getNuggets(3), + null, + 2400, + 7680, + 5000 + ); + + GT_Values.RA.addMultiblockChemicalRecipe( + new ItemStack[]{ + GT_Utility.getIntegratedCircuit(24) + }, + new FluidStack[]{ + Materials.Ethylene.getGas(1000), + FluidRegistry.getFluidStack("steam", 2000) + }, + new FluidStack[]{ + Materials.Ethanol.getFluid(1000) + }, + null, + 400, + 480 + ); + + GT_Values.RA.addChemicalRecipeForBasicMachineOnly( + Materials.Ethylene.getCells(1), + GT_Utility.getIntegratedCircuit(24), + FluidRegistry.getFluidStack("steam", 2000), + null, + Materials.Ethanol.getCells(1), + null, + 400, + 480 + ); + + GT_Values.RA.addVacuumFreezerRecipe( + GT_OreDictUnificator.get(OrePrefixes.ingotHot, Materials.Naquadah, 1), + GT_OreDictUnificator.get(OrePrefixes.ingot, Materials.Naquadah, 1), + 330, + 7680 + ); + } + + public static void SmallRecipeChange() { + + GT_Recipe tRecipe; + + tRecipe = GT_Recipe.GT_Recipe_Map.sChemicalRecipes.findRecipe( + null, false, 1 << 30, + new FluidStack[]{Materials.SulfuricAcid.getFluid(500)}, + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Platinum, 16), + ItemList.Empty_Board_Elite.get(2) + ); + if (tRecipe != null) { + GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.remove(tRecipe); + GT_Recipe tRecipe2 = tRecipe.copy(); + tRecipe2.mInputs = new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Naquadah, 8), ItemList.Empty_Board_Elite.get(2)}; + GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.add(tRecipe2); + GT_Recipe.GT_Recipe_Map.sChemicalRecipes.reInit(); + } + + tRecipe = GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.findRecipe( + null, false, 1 << 30, + new FluidStack[]{Materials.SulfuricAcid.getFluid(500)}, + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Platinum, 16), + ItemList.Empty_Board_Elite.get(2) + ); + if (tRecipe != null) { + GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.remove(tRecipe); + GT_Recipe tRecipe2 = tRecipe.copy(); + tRecipe2.mInputs = new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Naquadah, 8), ItemList.Empty_Board_Elite.get(2)}; + GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.add(tRecipe2); + GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.reInit(); + } + + tRecipe = GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.findRecipe( + null, false, 1 << 30, + new FluidStack[]{Materials.Polybenzimidazole.getMolten(36)}, + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Polybenzimidazole, 2), + GT_OreDictUnificator.get(OrePrefixes.foil, Materials.HSSS, 1), + GT_Utility.getIntegratedCircuit(1) + ); + if (tRecipe != null) { + GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.mRecipeList.remove(tRecipe); + GT_Recipe tRecipe2 = tRecipe.copy(); + tRecipe2.mInputs = new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.foil, Materials.Polybenzimidazole, 2), GT_OreDictUnificator.get(OrePrefixes.foil, Materials.NaquadahEnriched, 1)}; + GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.mRecipeList.add(tRecipe2); + GT_Recipe.GT_Recipe_Map.sAssemblerRecipes.reInit(); + } + } + + public static void Remover() { + + if (!EnableNaquadahRework) return; + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Begin to remove pure Naquadah, Enriched Naquadah and Naquadria.\n"); + + HashSet<GT_Recipe> remove = new HashSet<>(5000); + HashSet<GT_Recipe> reAdd = new HashSet<>(5000); + + //For Crusher + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.mRecipeList) { + ItemStack input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + for (int oreDictID : oreDict) { + if ((OreDictionary.getOreName(oreDictID).startsWith("ore") || OreDictionary.getOreName(oreDictID).startsWith("crushed")) && OreDictionary.getOreName(oreDictID).contains("Naq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dust, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Crusher done!\n"); + + //For Washer + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.mRecipeList) { + ItemStack input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + for (int oreDictID : oreDict) { + if (OreDictionary.getOreName(oreDictID).startsWith("crushed") && OreDictionary.getOreName(oreDictID).contains("Naq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dustTiny, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sOreWasherRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Washer done!\n"); + + //For Thermal Centrifuge + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.mRecipeList) { + ItemStack input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + for (int oreDictID : oreDict) { + if (OreDictionary.getOreName(oreDictID).startsWith("crushed") && OreDictionary.getOreName(oreDictID).contains("Naq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dustTiny, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sThermalCentrifugeRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Thermal Centrifuge done!\n"); + + //For Centrifuge + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.mRecipeList) { + ItemStack input = null; + if (recipe.mInputs.length > 0) input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + if (input.isItemEqual(GT_Bees.combs.getStackForType(CombType.DOB))){ + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dustTiny, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + } + else for (int oreDictID : oreDict) { + if (OreDictionary.getOreName(oreDictID).startsWith("dustPureNaq") || OreDictionary.getOreName(oreDictID).startsWith("dustImpureNaq") || OreDictionary.getOreName(oreDictID).startsWith("dustSpace") || OreDictionary.getOreName(oreDictID).startsWith("dustNaq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDustTiny(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dustTiny, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDustSmall(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dustSmall, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDustSmall(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dustSmall, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDustSmall(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dustSmall, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Centrifuge done!\n"); + + //For Hammer + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sHammerRecipes.mRecipeList) { + ItemStack input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + for (int oreDictID : oreDict) { + if (OreDictionary.getOreName(oreDictID).startsWith("crushed") && OreDictionary.getOreName(oreDictID).contains("Naq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, enrichedNaquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize * 2, naquadriaEarth.get(OrePrefixes.dust, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GT_Recipe.GT_Recipe_Map.sHammerRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sHammerRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sHammerRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Hammer done!\n"); + + //For Chemical Reactor + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList) { + if (recipe.mFluidOutputs == null) continue; + boolean isAny = false; + for (int i = 0; i < recipe.mFluidOutputs.length; i ++) { + if (recipe.mFluidOutputs[i] == null) continue; + if (recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadah.getMolten(1)) || + recipe.mFluidOutputs[i].isFluidEqual(Materials.NaquadahEnriched.getMolten(1)) || + recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadria.getMolten(1))) { + isAny = true; + break; + } + } + if (!isAny) continue; + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < recipe.mFluidOutputs.length; i ++) { + if (recipe.mFluidOutputs[i] == null) continue; + if (recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadah.getMolten(1))) { + tRecipe.mFluidOutputs[i] = naquadahGoo.getFluidOrGas(recipe.mFluidOutputs[i].amount * 2); + } else if (recipe.mFluidOutputs[i].isFluidEqual(Materials.NaquadahEnriched.getMolten(1))) { + tRecipe.mFluidOutputs[i] = enrichedNaquadahGoo.getFluidOrGas(recipe.mFluidOutputs[i].amount * 2); + } else if (recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadria.getMolten(1))) { + tRecipe.mFluidOutputs[i] = naquadriaGoo.getFluidOrGas(recipe.mFluidOutputs[i].amount * 2); + } + } + if (!tRecipe.equals(recipe)) { + reAdd.add(tRecipe); + remove.add(recipe); + } + } + GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sChemicalRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sChemicalRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Chemical Reactor done!\n"); + + //For Multi Chemical Reactor + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList) { + if (recipe.mFluidOutputs == null) continue; + boolean isAny = false; + for (int i = 0; i < recipe.mFluidOutputs.length; i ++) { + if (recipe.mFluidOutputs[i] == null) continue; + if (recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadah.getMolten(1)) || + recipe.mFluidOutputs[i].isFluidEqual(Materials.NaquadahEnriched.getMolten(1)) || + recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadria.getMolten(1))) { + isAny = true; + break; + } + } + if (!isAny) continue; + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < recipe.mFluidOutputs.length; i ++) { + if (recipe.mFluidOutputs[i] == null) continue; + if (recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadah.getMolten(1))) { + tRecipe.mFluidOutputs[i] = naquadahGoo.getFluidOrGas(recipe.mFluidOutputs[i].amount * 2); + } else if (recipe.mFluidOutputs[i].isFluidEqual(Materials.NaquadahEnriched.getMolten(1))) { + tRecipe.mFluidOutputs[i] = enrichedNaquadahGoo.getFluidOrGas(recipe.mFluidOutputs[i].amount * 2); + } else if (recipe.mFluidOutputs[i].isFluidEqual(Materials.Naquadria.getMolten(1))) { + tRecipe.mFluidOutputs[i] = naquadriaGoo.getFluidOrGas(recipe.mFluidOutputs[i].amount * 2); + } + } + if (!tRecipe.equals(recipe)) { + reAdd.add(tRecipe); + remove.add(recipe); + } + } + GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sMultiblockChemicalRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Multi Chemical Reactor done!\n"); + + if (Loader.isModLoaded("miscutils")) { + //For Multi Centrifuge + //Blame alk. She made some shit in it, NEI will break down if anyone modify the hash list directly. + GTPP_Recipe.GTPP_Recipe_Map.sMultiblockCentrifugeRecipes_GT.mRecipeList.clear(); + RecipeGen_MultisUsingFluidInsteadOfCells.generateRecipesNotUsingCells(GT_Recipe.GT_Recipe_Map.sCentrifugeRecipes, GTPP_Recipe.GTPP_Recipe_Map.sMultiblockCentrifugeRecipes_GT); + GTPP_Recipe.GTPP_Recipe_Map.sMultiblockCentrifugeRecipes_GT.reInit(); + + //For Simple Washer + for (GT_Recipe recipe : GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.mRecipeList) { + ItemStack input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + for (int oreDictID : oreDict) { + if (OreDictionary.getOreName(oreDictID).startsWith("dustImpureNaq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize, naquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize, enrichedNaquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize, naquadriaEarth.get(OrePrefixes.dust, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.mRecipeList.removeAll(remove); + GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.mRecipeList.addAll(reAdd); + GTPP_Recipe.GTPP_Recipe_Map.sSimpleWasherRecipes.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("Simple Washer done!\n"); + } + + //For ByProduct List + for (GT_Recipe recipe : GT_Recipe.GT_Recipe_Map.sByProductList.mRecipeList) { + ItemStack input = recipe.mInputs[0]; + if (GT_Utility.isStackValid(input)) { + int[] oreDict = OreDictionary.getOreIDs(input); + for (int oreDictID : oreDict) { + if (OreDictionary.getOreName(oreDictID).startsWith("ore") && OreDictionary.getOreName(oreDictID).contains("Naq")) { + GT_Recipe tRecipe = recipe.copy(); + for (int i = 0; i < tRecipe.mOutputs.length; i ++) { + if (!GT_Utility.isStackValid(tRecipe.mOutputs[i])) continue; + if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadah.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize, naquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.NaquadahEnriched.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize, enrichedNaquadahEarth.get(OrePrefixes.dust, 1)); + } else if (tRecipe.mOutputs[i].isItemEqual(Materials.Naquadria.getDust(1))) { + tRecipe.mOutputs[i] = GT_Utility.copyAmount(tRecipe.mOutputs[i].stackSize, naquadriaEarth.get(OrePrefixes.dust, 1)); + } + } + if (!tRecipe.equals(recipe)){ + reAdd.add(tRecipe); + remove.add(recipe); + } + break; + } + } + } + } + GT_Recipe.GT_Recipe_Map.sByProductList.mRecipeList.removeAll(remove); + GT_Recipe.GT_Recipe_Map.sByProductList.mRecipeList.addAll(reAdd); + GT_Recipe.GT_Recipe_Map.sByProductList.reInit(); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace " + remove.size() + "! "); + + remove.clear(); + reAdd.clear(); + + GT_Log.out.print("ByProduct List done!\n"); + + //For Cauldron Wash + registerCauldronCleaningFor(Materials.Naquadah, naquadahEarth.getBridgeMaterial()); + registerCauldronCleaningFor(Materials.NaquadahEnriched, enrichedNaquadahEarth.getBridgeMaterial()); + registerCauldronCleaningFor(Materials.Naquadria, naquadriaEarth.getBridgeMaterial()); + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace 3! "); + GT_Log.out.print("Cauldron Wash done!\n"); + + //For Crafting Table + CraftingManager.getInstance().getRecipeList().forEach(NaquadahReworkRecipeLoader::replaceInCraftTable); + + GT_Log.out.print(GoodGenerator.MOD_ID + ": Replace Unknown! "); + GT_Log.out.print("Crafting Table done!\n"); + } + + //I don't understand. . . + //I use and copy some private methods in Bartworks because his system runs well. + //Bartworks is under MIT License + /* + * Copyright (c) 2018-2020 bartimaeusnek + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + public static void replaceInCraftTable(Object obj) { + + Constructor<?> cs = null; + PlatinumSludgeOverHaul BartObj = null; + try { + cs = PlatinumSludgeOverHaul.class.getDeclaredConstructor(); + cs.setAccessible(true); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + if (cs == null) return; + + try { + BartObj = (PlatinumSludgeOverHaul)cs.newInstance(); + } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) { + e.printStackTrace(); + } + + Method recipeCheck = null; + + try { + recipeCheck = PlatinumSludgeOverHaul.class.getDeclaredMethod("checkRecipe", Object.class, Materials.class); + recipeCheck.setAccessible(true); + } catch (Exception e) { + e.printStackTrace(); + } + + String inputName = "output"; + String inputItemName = "input"; + if (!(obj instanceof ShapedOreRecipe || obj instanceof ShapelessOreRecipe)){ + if (obj instanceof ShapedRecipes || (obj instanceof ShapelessRecipes)) { + inputName = "recipeOutput"; + inputItemName = "recipeItems"; + } + } + IRecipe recipe = (IRecipe) obj; + ItemStack result = recipe.getRecipeOutput(); + + Field out = FieldUtils.getDeclaredField(recipe.getClass(), inputName, true); + if (out == null) + out = FieldUtils.getField(recipe.getClass(), inputName, true); + + Field in = FieldUtils.getDeclaredField(recipe.getClass(), inputItemName, true); + if (in == null) + in = FieldUtils.getField(recipe.getClass(), inputItemName, true); + if (in == null) + return; + + //this part here is NOT MIT LICENSED BUT LICSENSED UNDER THE Apache License, Version 2.0! + try { + if (Modifier.isFinal(in.getModifiers())) { + // Do all JREs implement Field with a private ivar called "modifiers"? + Field modifiersField = Field.class.getDeclaredField("modifiers"); + boolean doForceAccess = !modifiersField.isAccessible(); + if (doForceAccess) { + modifiersField.setAccessible(true); + } + try { + modifiersField.setInt(in, in.getModifiers() & ~Modifier.FINAL); + } finally { + if (doForceAccess) { + modifiersField.setAccessible(false); + } + } + } + } catch (NoSuchFieldException ignored) { + // The field class contains always a modifiers field + } catch (IllegalAccessException ignored) { + // The modifiers field is made accessible + } + // END OF APACHE COMMONS COLLECTION COPY + + Object input; + try { + input = in.get(obj); + } catch (IllegalAccessException e) { + e.printStackTrace(); + return; + } + + if (out == null || recipeCheck == null) return; + + if (GT_Utility.areStacksEqual(result, Materials.Naquadah.getDust(1), true)) { + + recipeCheck.setAccessible(true); + boolean isOk = true; + + try { + isOk = (boolean)recipeCheck.invoke(BartObj, input, Materials.Naquadah); + } catch (InvocationTargetException | IllegalAccessException ignored) { + } + + if (isOk) return; + try { + out.set(recipe, naquadahEarth.get(OrePrefixes.dust, 2)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } else if (GT_Utility.areStacksEqual(result, Materials.NaquadahEnriched.getDust(1), true)) { + + recipeCheck.setAccessible(true); + boolean isOk = true; + + try { + isOk = (boolean)recipeCheck.invoke(BartObj, input, Materials.NaquadahEnriched); + } catch (InvocationTargetException | IllegalAccessException ignored) { + } + + if (isOk) return; + try { + out.set(recipe, enrichedNaquadahEarth.get(OrePrefixes.dust, 2)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } else if (GT_Utility.areStacksEqual(result, Materials.Naquadria.getDust(1), true)) { + + recipeCheck.setAccessible(true); + boolean isOk = true; + + try { + isOk = (boolean)recipeCheck.invoke(BartObj, input, Materials.Naquadria); + } catch (InvocationTargetException | IllegalAccessException ignored) { + } + + if (isOk) return; + try { + out.set(recipe, naquadriaEarth.get(OrePrefixes.dust, 2)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } +} |