package WayofTime.alchemicalWizardry.common.guide; import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import WayofTime.alchemicalWizardry.ModBlocks; import WayofTime.alchemicalWizardry.ModItems; import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipe; import WayofTime.alchemicalWizardry.api.altarRecipeRegistry.AltarRecipeRegistry; public class RecipeHolder { private static List recipeList; public static IRecipe bloodAltarRecipe; public static IRecipe knifeRecipe; public static IRecipe divinationSigilRecipe; public static IRecipe waterSigilRecipe; public static IRecipe lavaCrystalRecipe; public static IRecipe lavaSigilRecipe; public static IRecipe blankRuneRecipe; public static IRecipe speedRuneRecipe; public static IRecipe voidSigilRecipe; public static IRecipe airSigilRecipe; public static IRecipe sightSigilRecipe; public static IRecipe fastMinerRecipe; public static IRecipe greenGroveRecipe; public static IRecipe sacrificeRuneRecipe; public static IRecipe selfSacrificeRuneRecipe; public static IRecipe bloodPackRecipe; public static IRecipe capacityRuneRecipe; public static IRecipe dislocationRuneRecipe; public static IRecipe magnetismSigilRecipe; public static IRecipe phantomBridgeRecipe; public static IRecipe holdingSigilRecipe; public static IRecipe affinitySigilRecipe; public static IRecipe weakRitualStoneRecipe; public static IRecipe ritualStoneRecipe; public static IRecipe masterStoneRecipe; public static IRecipe bloodLampRecipe; public static IRecipe emptySocketRecipe; public static IRecipe soulForgeRecipe; public static IRecipe inhibitorRecipe; public static IRecipe ritualDiviner1Recipe; public static IRecipe ritualDiviner2Recipe; public static IRecipe ritualDiviner3Recipe; public static IRecipe bloodStoneRecipe; public static IRecipe whirlwindSigilRecipe; public static IRecipe compressionSigilRecipe; public static IRecipe enderSeveranceSigilRecipe; public static IRecipe teleposerRecipe; public static IRecipe suppressionSigilRecipe; public static IRecipe superiorCapacityRecipe; public static IRecipe orbRuneRecipe; public static IRecipe keyOfBindingRecipe; public static IRecipe energyBazookaRecipe; public static IRecipe accelerationRuneRecipe; public static IRecipe harvestSigilRecipe; public static IRecipe crystalCluserRecipe; public static IRecipe arcanePlinthRecipe; public static IRecipe arcanePedestalRecipe; public static IRecipe spellTableRecipe; public static IRecipe alchemySetRecipe; public static IRecipe crucibleRecipe; public static IRecipe woodAshRecipe; public static IRecipe byrrusRecipe; public static IRecipe livensRecipe; public static IRecipe virRecipe; public static IRecipe purpuraRecipe; public static IRecipe routerRecipe; public static IRecipe segmenterRecipe; public static IRecipe cleanserRecipe; public static IRecipe calcinatorRecipe; public static IRecipe belljarRecipe; public static IRecipe relayRecipe; public static AltarRecipe weakBloodOrbRecipe; public static AltarRecipe apprenticeBloodOrbRecipe; public static AltarRecipe magicianBloodOrbRecipe; public static AltarRecipe masterBloodOrbRecipe; public static AltarRecipe archmageBloodOrbRecipe; public static AltarRecipe transcendentBloodOrbRecipe; public static AltarRecipe blankSlateRecipe; public static AltarRecipe reinforcedSlateRecipe; public static AltarRecipe imbuedSlateRecipe; public static AltarRecipe demonicSlateRecipe; public static AltarRecipe etherealSlateRecipe; public static AltarRecipe daggerRecipe; public static AltarRecipe weakActivationRecipe; public static AltarRecipe filledSocketRecipe; public static AltarRecipe teleposerFocusRecipe1; public static AltarRecipe blankSpellRecipe; public static AltarRecipe waterScribeTool; public static AltarRecipe fireScribeTool; public static AltarRecipe earthScribeTool; public static AltarRecipe airScribeTool; public static AltarRecipe duskRecipe; public static AltarRecipe dawnRecipe; public static AltarRecipe flaskRecipe; public static void init() { recipeList = CraftingManager.getInstance().getRecipeList(); bloodAltarRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockAltar)); knifeRecipe = getRecipeForItemStack(new ItemStack(ModItems.sacrificialDagger)); divinationSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.divinationSigil)); waterSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.waterSigil)); lavaCrystalRecipe = getRecipeForItemStack(new ItemStack(ModItems.lavaCrystal)); lavaSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.lavaSigil)); blankRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.bloodRune)); speedRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.speedRune)); voidSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.voidSigil)); airSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.airSigil)); sightSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemSeerSigil)); fastMinerRecipe = getRecipeForItemStack(new ItemStack(ModItems.sigilOfTheFastMiner)); greenGroveRecipe = getRecipeForItemStack(new ItemStack(ModItems.growthSigil)); sacrificeRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.runeOfSacrifice)); selfSacrificeRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.runeOfSelfSacrifice)); bloodPackRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemBloodPack)); capacityRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.bloodRune, 1, 1)); dislocationRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.bloodRune, 1, 2)); magnetismSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.sigilOfMagnetism)); phantomBridgeRecipe = getRecipeForItemStack(new ItemStack(ModItems.sigilOfTheBridge)); holdingSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.sigilOfHolding)); affinitySigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.sigilOfElementalAffinity)); ritualStoneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.ritualStone)); masterStoneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockMasterStone)); bloodLampRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemBloodLightSigil)); emptySocketRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.emptySocket)); soulForgeRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.armourForge)); inhibitorRecipe = getRecipeForItemStack(new ItemStack(ModItems.armourInhibitor)); ritualDiviner1Recipe = getRecipeForItemStack(new ItemStack(ModItems.itemRitualDiviner)); ritualDiviner2Recipe = getRecipeForItemStack(new ItemStack(ModItems.itemRitualDiviner, 1, 1)); ritualDiviner3Recipe = getRecipeForItemStack(new ItemStack(ModItems.itemRitualDiviner, 1, 2)); bloodStoneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.largeBloodStoneBrick)); whirlwindSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.sigilOfWind)); compressionSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemCompressionSigil)); enderSeveranceSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemSigilOfEnderSeverance)); teleposerRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockTeleposer)); suppressionSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemSigilOfSupression)); superiorCapacityRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.bloodRune, 1, 4)); orbRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.bloodRune, 1, 3)); keyOfBindingRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemKeyOfDiablo)); energyBazookaRecipe = getRecipeForItemStack(new ItemStack(ModItems.energyBazooka)); accelerationRuneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.bloodRune, 1, 5)); harvestSigilRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemHarvestSigil)); crystalCluserRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockCrystal)); weakRitualStoneRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.imperfectRitualStone)); arcanePlinthRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockPlinth)); arcanePedestalRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockPedestal)); spellTableRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockHomHeart)); alchemySetRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockWritingTable)); crucibleRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockCrucible)); woodAshRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemIncense, 1, 0)); byrrusRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemIncense, 1, 1)); livensRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemIncense, 1, 2)); virRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemIncense, 1, 3)); purpuraRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemIncense, 1, 4)); routerRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemAttunedCrystal)); segmenterRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemTankSegmenter)); cleanserRecipe = getRecipeForItemStack(new ItemStack(ModItems.itemDestinationClearer)); calcinatorRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockAlchemicCalcinator)); belljarRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockCrystalBelljar)); relayRecipe = getRecipeForItemStack(new ItemStack(ModBlocks.blockReagentConduit)); weakBloodOrbRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.weakBloodOrb)); apprenticeBloodOrbRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.apprenticeBloodOrb)); magicianBloodOrbRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.magicianBloodOrb)); masterBloodOrbRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.masterBloodOrb)); archmageBloodOrbRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.archmageBloodOrb)); transcendentBloodOrbRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.transcendentBloodOrb)); blankSlateRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.blankSlate)); reinforcedSlateRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.reinforcedSlate)); imbuedSlateRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.imbuedSlate)); demonicSlateRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.demonicSlate)); etherealSlateRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.baseItems, 1, 27)); daggerRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.daggerOfSacrifice)); weakActivationRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.activationCrystal, 1, 0)); filledSocketRecipe = getAltarRecipeForItemStack(new ItemStack(ModBlocks.bloodSocket)); teleposerFocusRecipe1 = getAltarRecipeForItemStack(new ItemStack(ModItems.telepositionFocus)); blankSpellRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.blankSpell)); waterScribeTool = getAltarRecipeForItemStack(new ItemStack(ModItems.waterScribeTool)); fireScribeTool = getAltarRecipeForItemStack(new ItemStack(ModItems.fireScribeTool)); earthScribeTool = getAltarRecipeForItemStack(new ItemStack(ModItems.earthScribeTool)); airScribeTool = getAltarRecipeForItemStack(new ItemStack(ModItems.airScribeTool)); duskRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.duskScribeTool)); dawnRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.dawnScribeTool)); flaskRecipe = getAltarRecipeForItemStack(new ItemStack(ModItems.alchemyFlask)); } private static IRecipe getRecipeForItemStack(ItemStack stack) { for(Object obj : recipeList) { IRecipe recipe = (IRecipe)obj; if(recipe.getRecipeOutput() != null && stack.isItemEqual(recipe.getRecipeOutput())) { return recipe; } } return null; } private static AltarRecipe getAltarRecipeForItemStack(ItemStack stack) { for(AltarRecipe recipe : AltarRecipeRegistry.altarRecipes) { if(recipe.getResult() != null && stack.isItemEqual(recipe.getResult())) { return recipe; } } return null; } }