Jump to content

proxyAlice

Members
  • Posts

    1
  • Joined

  • Last visited

proxyAlice's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. 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.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.