Minecraft Bedrock has seven kinds of recipe. Each one is a JSON file in the behavior pack, and each one has a type that decides which fields it needs and which station can use it. This page is a quick reference for all seven, with a Ruby example for each.
New to recipes? Read Crafting and furnace recipes first. It explains patterns, keys, item tags, the recipe book (unlock) and priority step by step. This page does not repeat those parts.
The files
All recipes go in one folder. The file names are up to you, and you can make subfolders to keep things tidy.
BP/
recipes/
ruby_block.json
ruby_from_block.json
smelt_raw_ruby.json
brew_ruby_strength.json
brew_ruby_splash.json
ruby_sword_upgrade.jsonThe seven types at a glance
| Type | Station | What it does |
|---|---|---|
minecraft:recipe_shaped | Crafting table | Items in a set pattern make a result |
minecraft:recipe_shapeless | Crafting table, stonecutter, cartography table | Items in any position make a result |
minecraft:recipe_furnace | Furnace, blast furnace, smoker, campfires | One item cooks into another |
minecraft:recipe_brewing_mix | Brewing stand | Changes the effect of a potion |
minecraft:recipe_brewing_container | Brewing stand | Changes the kind of bottle, like potion to splash potion |
minecraft:recipe_smithing_transform | Smithing table | Upgrades an item into another, keeping its enchantments |
minecraft:recipe_smithing_trim | Smithing table | Adds a colored trim pattern to armor |
Every type shares the same outer shape:
{
"format_version": "1.20.10",
"minecraft:recipe_shaped": {
"description": {
"identifier": "wiki:ruby_block"
},
"tags": ["crafting_table"]
}
}- The key under the root (here
minecraft:recipe_shaped) is the type. description.identifieris the recipe's own ID. It must be unique, and it is not the item ID.tagslists the stations that accept it. See The tags field below.
Shaped
Items must sit in a pattern.
{
"format_version": "1.20.10",
"minecraft:recipe_shaped": {
"description": {
"identifier": "wiki:ruby_block"
},
"tags": ["crafting_table"],
"pattern": [
"RRR",
"RRR",
"RRR"
],
"key": {
"R": { "item": "wiki:ruby" }
},
"unlock": [{ "item": "wiki:ruby" }],
"result": { "item": "wiki:ruby_block" }
}
}| Field | What it holds |
|---|---|
pattern | Up to 3 rows of up to 3 characters. A space is an empty slot. |
key | What each character means: an item or an item tag |
result | The item you get, with an optional count |
assume_symmetry | Optional. Whether the mirrored pattern also works. It does by default. |
priority | Optional. Which recipe wins when two match |
result can also be a list. The first item goes to the output slot, and the others are given back too. Vanilla cake does this: you get the cake and your three empty buckets back.
"result": [
{ "item": "wiki:ruby_cake" },
{ "item": "minecraft:bucket", "count": 3 }
]Shapeless
Only the ingredients count, not where they go.
{
"format_version": "1.20.10",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "wiki:ruby_from_block"
},
"tags": ["crafting_table"],
"ingredients": [
{ "item": "wiki:ruby_block" }
],
"unlock": [{ "item": "wiki:ruby_block" }],
"result": { "item": "wiki:ruby", "count": 9 }
}
}| Field | What it holds |
|---|---|
ingredients | A list of items (or item tags), each with an optional count |
result | The item you get |
priority | Optional. Which recipe wins when two match |
Stonecutter recipes are shapeless too
The stonecutter has no type of its own. It uses shapeless recipes with one ingredient and the stonecutter tag:
{
"format_version": "1.20.10",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "wiki:ruby_bricks_stonecutting"
},
"tags": ["stonecutter"],
"ingredients": [{ "item": "wiki:ruby_block" }],
"unlock": [{ "item": "wiki:ruby_block" }],
"result": { "item": "wiki:ruby_bricks", "count": 1 }
}
}Each choice in the stonecutter menu is a separate recipe file. Vanilla has hundreds of these.
Furnace
One item goes in, another comes out. It has no result: it uses input and output instead.
{
"format_version": "1.20.10",
"minecraft:recipe_furnace": {
"description": {
"identifier": "wiki:smelt_raw_ruby"
},
"tags": ["furnace", "blast_furnace"],
"input": "wiki:raw_ruby",
"output": "wiki:ruby"
}
}| Field | What it holds |
|---|---|
input | The item to cook |
output | The item that comes out |
The fuel is not part of the recipe. Any normal fuel works.
Brewing mix
A brewing mix turns one potion effect into another. The bottle stays the same kind: a potion stays a potion, a splash potion stays a splash potion.
{
"format_version": "1.20.10",
"minecraft:recipe_brewing_mix": {
"description": {
"identifier": "wiki:brew_ruby_strength"
},
"tags": ["brewing_stand"],
"input": "minecraft:potion_type:awkward",
"reagent": "wiki:ruby",
"output": "minecraft:potion_type:strength"
}
}| Field | What it holds |
|---|---|
input | The potion in the bottom slots, as minecraft:potion_type:<name> |
reagent | The item in the top slot. This can be your own item. |
output | The potion you get, as minecraft:potion_type:<name> |
Here, a ruby turns an Awkward Potion into a Potion of Strength, just like blaze powder does.
Potion names are lower case, with _ between words. Some useful ones: water, awkward, mundane, thick, strength, swiftness, healing, regeneration, fire_resistance, slow_falling, water_breathing, invisibility and leaping. Night vision is written nightvision. Longer versions start with long_ (long_strength) and stronger ones with strong_ (strong_strength).
Brewing container
A brewing container recipe changes the bottle, and keeps the effect. Vanilla uses it for gunpowder (potion to splash potion) and dragon's breath (splash potion to lingering potion).
{
"format_version": "1.20.10",
"minecraft:recipe_brewing_container": {
"description": {
"identifier": "wiki:brew_ruby_splash"
},
"tags": ["brewing_stand"],
"input": "minecraft:potion",
"reagent": "wiki:ruby_dust",
"output": "minecraft:splash_potion"
}
}| Field | What it holds |
|---|---|
input | The bottle item going in, like minecraft:potion |
reagent | The item in the top slot |
output | The bottle item coming out, like minecraft:splash_potion or minecraft:lingering_potion |
Smithing transform
Upgrades one item into another at the smithing table. The enchantments, name and damage of the old item carry over to the new one. Vanilla uses it to turn diamond gear into netherite.
{
"format_version": "1.20.10",
"minecraft:recipe_smithing_transform": {
"description": {
"identifier": "wiki:ruby_sword_upgrade"
},
"tags": ["smithing_table"],
"template": "wiki:ruby_upgrade_template",
"base": "minecraft:diamond_sword",
"addition": "wiki:ruby",
"result": "wiki:ruby_sword"
}
}| Field | Slot | Needs this item tag |
|---|---|---|
template | Left: the smithing template | minecraft:transform_templates |
base | Middle: the item to upgrade | minecraft:transformable_items |
addition | Right: the material | minecraft:transform_materials |
result | The upgraded item | none |
The item tags are not optional
The smithing table only lets an item into a slot if it has the tag in the table above. Vanilla diamond gear already has minecraft:transformable_items. For your own template and material, add the tags with the minecraft:tags item component, or the slots stay locked.
"minecraft:tags": {
"tags": ["minecraft:transform_templates"]
}Only one of each template and material is used up, even if the stack is bigger.
Smithing trim
Adds a trim pattern to armor. It has no result: the armor comes back with the trim on it. Here is what one looks like:
{
"format_version": "1.20.10",
"minecraft:recipe_smithing_trim": {
"description": {
"identifier": "wiki:ruby_armor_trim"
},
"tags": ["smithing_table"],
"template": { "tag": "minecraft:trim_templates" },
"base": { "tag": "minecraft:trimmable_armors" },
"addition": { "tag": "minecraft:trim_materials" }
}
}| Field | Slot | Needs this item tag |
|---|---|---|
template | The trim pattern | minecraft:trim_templates |
base | The armor piece | minecraft:trimmable_armors |
addition | The material that sets the color | minecraft:trim_materials |
Each field takes an item, or an item tag like above. This is the same shape as the single trim recipe vanilla uses: because it only uses tags, it covers every template, armor and material at once.
Trimming custom armor
You usually do not need a trim recipe at all. Give your armor pieces the minecraft:trimmable_armors tag and the vanilla recipe already accepts them. See Armor for making the armor itself.
The tags field
tags is a list of the stations that can use a recipe. Each type only makes sense with certain tags:
| Recipe type | Tags it accepts |
|---|---|
| Shaped | crafting_table |
| Shapeless | crafting_table, stonecutter, cartography_table |
| Furnace | furnace, blast_furnace, smoker, campfire, soul_campfire |
| Brewing mix and container | brewing_stand |
| Smithing transform and trim | smithing_table |
A few rules:
- List every station you want. A furnace recipe tagged only
furnacedoes not work in a smoker. - Mix freely within a type. Food usually lists
furnace,smoker,campfireandsoul_campfiretogether. - Ignore
deprecated. Some vanilla files use this tag to keep old recipes around without showing them. Your recipes do not need it.
More about each station, and the 2x2 inventory grid, is in Crafting and furnace recipes.
When something goes wrong
| What you see | Most likely cause |
|---|---|
| The recipe never shows up | The tags list does not include that station |
| A smithing slot will not take my item | The item is missing the item tag the slot needs |
| A brewing recipe does nothing | The potion name is wrong, or minecraft:potion_type: is missing |
| The stonecutter ignores my recipe | It has more than one ingredient, or it is not shapeless |
| Two recipes share an ID | Every description.identifier must be unique, across all types |
More help is in Troubleshooting. Need items to use in your recipes? Start with Your first custom item.