Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

proxyAlice

Members
  • Joined

  • Last visited

  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.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.