Guide

How to make custom crafting recipes

Updated October 18, 2026

Custom recipes are the easiest way to change a survival server: craft saddles, uncraft wool, smelt rotten flesh into leather. You can add them with a datapack, which works in vanilla and singleplayer, or with a plugin, which can do more, such as requiring a specific custom item as an ingredient.

Replace these with your own recipes.

Generate this with Codexe

Step by step

  1. 1.Choose datapack or plugin

    A datapack for recipes made of normal items on any server or world. A plugin when ingredients must be exact items (with a name or tag), or the recipe needs permissions or other conditions.

  2. 2.Write down each recipe

    The type (shaped, shapeless, furnace, smoking, blasting, campfire, stonecutter, smithing), the grid pattern, the ingredients and the result with its count.

  3. 3.Write it in the right format

    For a datapack, one JSON file per recipe in data/<namespace>/recipe/ (recipes/ before 1.21). For a plugin, a ShapedRecipe or ShapelessRecipe with a NamespacedKey, added with Bukkit.addRecipe.

  4. 4.Decide if it appears in the recipe book

    Recipes craft as soon as they are loaded. To show them in the recipe book, unlock them with an advancement (datapack) or player.discoverRecipe(key) (plugin).

  5. 5.Install it

    Datapack: into <world>/datapacks/ and /reload. Plugin: the .jar into plugins/ and a restart.

  6. 6.Craft every recipe

    Put the ingredients in a crafting table (or furnace) and check the result, including wrong arrangements that should not work.

Datapack or plugin

FeatureDatapackPlugin
Runs onVanilla, singleplayer, any serverSpigot, Paper and forks
IngredientsItems or item tagsItems, tags or exact items with name, lore or data
ResultAny item, with components from 1.20.5Any item, including your plugin's custom items
ConditionsNone while craftingPermissions, worlds, cooldowns through events

The JSON format changed between versions

A shaped recipe in a 1.21.4 datapack looks like this: {"type": "minecraft:crafting_shaped", "pattern": ["GGG", "GHG", "GGG"], "key": {"G": "minecraft:gold_ingot", "H": "minecraft:heart_of_the_sea"}, "result": {"id": "minecraft:totem_of_undying", "count": 1}}.

Older versions write it differently: before 1.21.2 each key is an object such as {"item": "minecraft:gold_ingot"}, and before 1.20.5 the result uses "item" instead of "id". A recipe copied from a tutorial for another version is the most common reason a recipe does not load. Say your version, and Codexe writes the format and folder names that version expects.

Example description

"A datapack for Minecraft 1.21.4, namespace extras. Shaped: 3 leather on top, string and iron in the middle row = saddle. Shapeless: 1 white wool = 4 string. Furnace: rotten flesh = leather, 0.1 experience. Stonecutter: 1 stone = 4 stone bricks. An advancement that unlocks all of them in the recipe book when the player picks up leather."

Codexe loads datapacks on a real Minecraft server before marking them Ready, so a JSON or folder mistake is caught and repaired. With Try it now you can then join a server with the pack installed and craft every recipe yourself.

Questions

Can a datapack recipe require a renamed or custom item?

No: datapack ingredients match the item type or an item tag, not names or data. Use a plugin with RecipeChoice.ExactChoice for that.

Can I remove a vanilla recipe?

Yes. A datapack can replace the vanilla recipe file in the minecraft namespace, and a plugin can remove it with Bukkit.removeRecipe.

Why does my recipe not show in the recipe book?

It is not unlocked for that player yet. It still crafts in the grid; unlock it with an advancement or discoverRecipe to show it.

Make your recipes

This prompt opens ready to send:

“A datapack for Minecraft 1.21.4, namespace extras: shaped recipe for a saddle (3 leather on top, string, iron, string in the middle), shapeless 1 white wool = 4 string, furnace rotten flesh = leather, stonecutter 1 stone = 4 stone bricks, and an advancement that unlocks them all when the player picks up leather.”

Generate this with Codexe
How to make custom crafting recipes in Minecraft | Codexe