Posted August 31, 201312 yr How would I add a recipe, that has the same recipe as diamond armor, but gives you wheat? It would be helpful if the method didn't edit any base files too :I Kain
August 31, 201312 yr cant you just remove the original and then insert the new one #reflection how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 31, 201312 yr Example with wooden door Imports needed: import java.util.ArrayList; 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.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; Remove Recipe Method: public static void removeRecipe(ItemStack resultItem) { ItemStack recipeResult = null; ArrayList recipes = (ArrayList) CraftingManager.getInstance().getRecipeList(); for (int scan = 0; scan < recipes.size(); scan++) { IRecipe tmpRecipe = (IRecipe) recipes.get(scan); if (tmpRecipe instanceof ShapelessRecipes) { ShapelessRecipes recipe = (ShapelessRecipes)tmpRecipe; recipeResult = recipe.getRecipeOutput(); } else if (tmpRecipe instanceof ShapedRecipes) { ShapedRecipes recipe = (ShapedRecipes)tmpRecipe; recipeResult = recipe.getRecipeOutput(); } else if (tmpRecipe instanceof ShapedOreRecipe) { ShapedOreRecipe recipe = (ShapedOreRecipe)tmpRecipe; recipeResult = recipe.getRecipeOutput(); } else if (tmpRecipe instanceof ShapelessOreRecipe) { ShapelessOreRecipe recipe = (ShapelessOreRecipe)tmpRecipe; recipeResult = recipe.getRecipeOutput(); } if (ItemStack.areItemStacksEqual(resultItem, recipeResult)) { System.out.println("MODID Removed Recipe: " + recipes.get(scan) + " -> " + recipeResult); recipes.remove(scan); } } } How to remove the recipe (within pre init): @EventHandler public void preLoad(FMLPreInitializationEvent event) { this.removeRecipe(new ItemStack(Item.doorWood, 1)); //Must be a vanilla recipe } Legend of Zelda Mod[updated September 20th to 3.1.1] Extra Achievements(Minecraft 1.8!)[updated April 3rd to 2.3.0] Fancy Cheeses[updated May 8th to 0.5.0]
September 3, 201312 yr <snip code> Why do you check for the various subclasses of recipes (shaped, shapeless, shapedore, shapeless ore)? I ran into a problem with that, in that some recipes are none of the above (swords and pickaxes, e.g.) public static void removeRecipe(ItemStack resultItem) { ItemStack recipeResult = null; ArrayList recipes = (ArrayList) CraftingManager.getInstance().getRecipeList(); for (int scan = 0; scan < recipes.size(); scan++) { IRecipe recipe = (IRecipe) recipes.get(scan); recipeResult = recipe.getRecipeOutput(); if (ItemStack.areItemStacksEqual(resultItem, recipeResult)) { System.out.println("MODID Removed Recipe: " + recipes.get(scan) + " -> " + recipeResult); recipes.remove(scan); } } } Going at it from that angle hasn't caused me any issues so far, and let me replace pickaxe and sword recipes, where the if/else checks missed those cases. Is there something I'm missing that could cause a problem using the simpler approach?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.