boyx_ Posted April 12, 2020 Posted April 12, 2020 (edited) Hello there! In my new Mod i tried to create an custom craftingtable(in my case the welding table) with own recipes. I used a outdated tutorial(because i cant find a new one :/) and ran into some errors. In the new versions of Minecraft is no 'CraftingManager.getInstance' and i can't figure out how to do the RecipeHandler. I already created the GUI but don't know if it works. package boyx.rsreboot.handler.recipe; import java.util.ArrayList; import java.util.List; import boyx.rsreboot.RSReboot; import boyx.rsreboot.gui.WeldingAddedRecipes; import boyx.rsreboot.gui.WeldingAdjustedRecipes; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.Ingredient; import net.minecraft.item.crafting.ShapedRecipes; import net.minecraft.item.crafting.ShapelessRecipes; import net.minecraft.util.NonNullList; import net.minecraftforge.common.crafting.CraftingHelper.ShapedPrimer; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; public class WeldingRecipeHandler { public Item theItem = null; public WeldingAdjustedRecipes weldingAdjustedRecipes = new WeldingAdjustedRecipes(); public WeldingRecipeHandler() { } public ItemStack[] getDeconstructResults(ItemStack parItemStack) { // DEBUG System.out.println("Looking for deconstructing a recipe for " + parItemStack.getUnlocalizedName()); // Allow recipes for some vanilla items that normally don't have recipes theItem = parItemStack.getItem(); if (WeldingAddedRecipes.shouldAddRecipe(theItem)) { return WeldingAddedRecipes.getCraftingGrid(theItem); } // check all recipes for recipe for Itemstack List<?> listAllRecipes = CraftingManager.getInstance().getRecipeList(); for(int i = 0;i<listAllRecipes.size();i++) { IRecipe recipe = (IRecipe) listAllRecipes.get(i); if(recipe != null) { ItemStack recipeKeyItemStack = recipe.getRecipeOutput(); if(recipeKeyItemStack!=null) { if (recipeKeyItemStack.getUnlocalizedName().equals( parItemStack.getUnlocalizedName())) { return getCraftingGrid(recipe); } } } } return null; } public ItemStack[] getCraftingGrid(IRecipe parRecipe) { // Initialize the result array ItemStack[] resultItemStackArray = new ItemStack[9]; for(int j = 0;j<resultItemStackArray.length;j++) { resultItemStackArray[j] = null; } if (parRecipe instanceof ShapedRecipes) { // DEBUG System.out.println("getCraftingGrid for shaped recipe"); ShapedRecipes shaped = (ShapedRecipes)parRecipe; for(int j = 0;j<shaped.recipeItems.length;j++) { resultItemStackArray[j] = shaped.recipeItems[j]; } } if (parRecipe instanceof ShapelessRecipes) { // DEBUG System.out.println("getCraftingGrid for shapeless recipe"); ShapelessRecipes shapeless = (ShapelessRecipes)parRecipe; for(int j = 0;j<shapeless.recipeItems.size();j++) { resultItemStackArray[j] = (ItemStack) shapeless.recipeItems.get(j); } } if (parRecipe instanceof ShapedOreRecipe) { // DEBUG System.out.println("getCraftingGrid for shaped ore recipe"); ShapedOreRecipe shaped = (ShapedOreRecipe)parRecipe; for(int j = 0;j<shaped.getInput().length;j++) { if(shaped.getInput()[j] instanceof ItemStack) resultItemStackArray[j] = (ItemStack) shaped.getInput()[j]; } else if(shaped.getInput()[j] instanceof List) { Object o = ((List) shaped.getInput()[j]).get(0); if(o instanceof ItemStack) { resultItemStackArray[j] = (ItemStack)o; } } } } if (parRecipe instanceof ShapelessOreRecipe) { ArrayList shapelessArray = ((ShapelessOreRecipe)parRecipe).getInput(); // DEBUG System.out.println( "getCraftingGrid for shapeless ore recipe with input array size = " + shapelessArray.size()); for(int j = 0; j<shapelessArray.size(); j++) { if(shapelessArray.get(j) instanceof ItemStack) { resultItemStackArray[j] = (ItemStack) shapelessArray.get(j); } else if(shapelessArray.get(j) instanceof List) { Object o = ((List)shapelessArray.get(j)).get(0); if(o instanceof ItemStack) { resultItemStackArray[j] = (ItemStack)o; } else { // DEBUG System.out.println("But list element is not an ItemStack"); } } } } if (RSReboot.allowPartialDeconstructing) { return weldingAdjustedRecipes.adjustOutputQuantities(resultItemStackArray, parRecipe.getRecipeOutput()); } else { return resultItemStackArray; } } } Do you guys got any answers or better got a up to date tutorial on how to do own custom crafting tables? Thanks. Edited April 12, 2020 by boyx_ Quote
Recommended Posts
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.