Posted August 7, 20205 yr I am working on a mod that adds a crafting station with five input slots and one output slot. I want to implement a new crafting type so that I can create shapeless recipes for use with this block, but that cannot be crafted in any other table. I found this example that was shared by someone on a different thread that helped me get started setting up the IRecipe and Serializer. Im not totally sure, but it seems to me like this recipe type takes a single input and produces output from looking at the matches() function, but I could be understanding it wrong. My block also will have no ticks/processing time so I removed that. Here is my recipe class so far public class BdoCookingRecipe implements IRecipe<RecipeWrapper> { private final ResourceLocation id; private final String group; private final NBTIngredient original; private final ItemStack result; public BdoCookingRecipe(ResourceLocation id, String group, NBTIngredient original, ItemStack result) { this.id = id; this.group = group; this.original = original; this.result = result; } @Override public boolean matches(RecipeWrapper inv, World worldIn) { return this.original.test(inv.getStackInSlot(0)); } @Override public ItemStack getCraftingResult(RecipeWrapper inv) { return this.result.copy(); } @Override public boolean canFit(int width, int height) { return true; } @Override public ItemStack getRecipeOutput() { return this.result; } @Override public ResourceLocation getId() { return this.id; } @Override public String getGroup() { return this.group; } @Override public NonNullList<Ingredient> getIngredients() { return NonNullList.withSize(1, this.original); } @Override public NonNullList<ItemStack> getRemainingItems(RecipeWrapper inv) { return NonNullList.create(); } @Override public ItemStack getIcon() { return new ItemStack(RegistryHandler.BASIC_COOKING_UTENSIL_BLOCK.get()); } @Override public IRecipeSerializer<?> getSerializer() { return ModRecipes.BDOCOOKING.get(); } @Override public IRecipeType<?> getType() { return ModRecipes.Type.BDOCOOKING; } public static class Serializer extends ForgeRegistryEntry<IRecipeSerializer<?>> implements IRecipeSerializer<BdoCookingRecipe> { @Override public BdoCookingRecipe read(ResourceLocation recipeId, JsonObject json) { String group = JSONUtils.getString(json, "group", ""); NBTIngredient ingredient = NBTIngredient.Serializer.INSTANCE.parse(JSONUtils.getJsonObject(json, "ingredient")); ItemStack result = CraftingHelper.getItemStack(JSONUtils.getJsonObject(json, "result"), true); return new BdoCookingRecipe(recipeId, group, ingredient, result); } @Override public BdoCookingRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { String group = buffer.readString(32767); NBTIngredient ingredient = NBTIngredient.Serializer.INSTANCE.parse(buffer); ItemStack result = buffer.readItemStack(); return new BdoCookingRecipe(recipeId, group, ingredient, result); } @Override public void write(PacketBuffer buffer, BdoCookingRecipe recipe) { buffer.writeString(recipe.group); recipe.original.write(buffer); buffer.writeItemStack(recipe.result); } } } And the serializer public class ModRecipes { public static class Type { public static final IRecipeType<BdoCookingRecipe> BDOCOOKING = IRecipeType.register(BdoCooking.MOD_ID + ":bdocooking"); } public static final DeferredRegister<IRecipeSerializer<?>> RECIPE_SERIALIZERS = new DeferredRegister<>(ForgeRegistries.RECIPE_SERIALIZERS, BdoCooking.MOD_ID); public static final RegistryObject<IRecipeSerializer<BdoCookingRecipe>> BDOCOOKING = RECIPE_SERIALIZERS.register("bdocooking", () -> (new BdoCookingRecipe.Serializer())); } What changes do I need to make to ensure that this recipe will be shapeless and support 5 inputs? Github: https://github.com/AliceProxy/CookingMod/tree/master/src/main/java/com/proxyalice/bdocookingmod Thanks for any help and suggestions. Edited August 8, 20205 yr by proxyAlice clarifying title
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.