Recipe
Recipes provide a structured way for players to perform item and block transformations in-game. Every crafting, smelting, blasting, campfire cooking, smoking, stonecutting and smithing recipe uses this system. In Bedrock Edition, brewing recipes also use this system. Recipes are data driven and can be configured by data packs in Java Edition or add-ons in Bedrock Edition.
Obtaining
Recipes can be obtained in various ways. Acquiring an item from the recipe causes the player to automatically discover it. Recipes can also be granted using the /recipe command. In Java Edition, as a reward for completing an advancement, there are multiple advancements that grant recipes which trigger when, for example, the player obtains an item required in the recipe.
Once a recipe has been discovered, it is added to the player's recipe book. In Java Edition, discovered recipes are stored in the player's [NBT Compound / JSON Object] recipeBook NBT.
Usage
Discovered recipes can be found in the player's recipe book. However, recipes do not need to be discovered for the player to be able to use them, unless the doLimitedCrafting game rule is enabled. In Bedrock Edition there is the game rule recipesUnlock which disables the unlocking of recipes making them all accessible and visible.
Recipes appear in the inventory's recipe book if they are 2×2 in size, otherwise they will only appear if the player is using a crafting table. In Java Edition the recipe book can also be used in the furnace, showing exclusively smelting recipes.
Anvil, cartography table, loom, brewing stand[Java Edition only], and grindstone don't use a recipe system: they use another system.
Java Edition JSON format
Vanilla recipes are stored as separate JSON files in the data/minecraft/recipe folder in the .minecraft/versions/<version>/<version>.jar file. This folder can be found by changing the extension of the .jar file to .zip and navigating within it.
Custom recipe files are stored in the data/<namespace>/recipe folder of a data pack. A recipe with ID foo:path/to/file would have its JSON file located at data/foo/recipe/path/to/file.json within a data pack. Data packs that load later with a recipe file in same resource location replace the existing recipe.
Recipe JSON files have different structures dependent on their type, but they all have a [String] type tag in its root tag. These types are listed below.
blasting
Represents a recipe in a blast furnace.
- [NBT Compound / JSON Object] The root tag.
- [String] type:
minecraft:blasting - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
blocksandmisc. Defaults tomisc. - [String] group: Optional. A string identifier. Used to group multiple recipes together in the recipe book. Recipes with same group identifier but different categories splits into two different groups.
- [String][NBT List / JSON Array] ingredient: The ingredient for the recipe. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [Int] cookingtime: Optional. The cook time of the recipe in ticks. Defaults to
100. - [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [Double] experience: Optional. The output experience of the recipe.
- [String] type:
Usage example json:
{
"type": "minecraft:blasting",
"category": "misc",
"cookingtime": 100,
"experience": 0.1,
"group": "coal",
"ingredient": "minecraft:coal_ore",
"result": {
"id": "minecraft:coal"
}
}
| Name | Ingredients | Smelting recipe | Description |
|---|---|---|---|
| Coal | Coal Ore + Any fuel |
Illustrative recipe |
campfire_cooking
Represents a recipe in a campfire.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:campfire_cooking - [String][NBT List / JSON Array] ingredient: The ingredient for the recipe. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [Int] cookingtime: Optional. The cook time of the recipe in ticks. Defaults to
100. - [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [String] type:
Usage example json:
{
"type": "minecraft:campfire_cooking",
"category": "food",
"cookingtime": 600,
"experience": 0.35,
"ingredient": "minecraft:potato",
"result": {
"id": "minecraft:baked_potato"
}
}
Even though all vanilla campfire cooking recipes have a cook time of 600 ticks, the default is 100 ticks.
Campfire recipes do not trigger the recipe_unlocked criteria.
crafting_shaped
Represents a shaped crafting recipe in a crafting table, the survival inventory and the crafter.
The key used in the pattern may be any single character except , the space character, which is reserved for empty slots in a recipe.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:crafting_shaped - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
equipment,building,misc, andredstone. Defaults tomisc. - [String] group: Optional. A string identifier. Used to group multiple recipes together in the recipe book. Recipes with same group identifier but different categories splits into two different groups.
- [Boolean] show_notification: Optional. Determines if a notification is shown when unlocking the recipe. Defaults to
true. - [NBT List / JSON Array] pattern: A list of single-character keys used to describe a pattern for shaped crafting. Each row in the crafting grid is one string in this list containing 3 or less keys. All strings in this list need to have the same amount of keys. A space can be used to indicate an empty spot.
- [NBT Compound / JSON Object] key: All keys used for this shaped crafting recipe.
- [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [Int] count: Optional. The amount of the item. Falls back to 1 if the field is absent.
- [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [String] type:
Usage example json:
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": "minecraft:milk_bucket",
"B": "minecraft:sugar",
"C": "minecraft:wheat",
"E": "#minecraft:eggs"
},
"pattern": [
"AAA",
"BEB",
"CCC"
],
"result": {
"count": 1,
"id": "minecraft:cake"
}
}
| Ingredients | Crafting recipe | Description |
|---|---|---|
| Milk Bucket + Sugar + Any Egg + Wheat |
Illustrative recipe. |
crafting_shapeless
Represents a shapeless crafting recipe in a crafting table, the survival inventory and the crafter.
The ingredients list must have at least one and at most nine entries.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:crafting_shapeless - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
equipment,building,misc, andredstone. Defaults tomisc. - [String] group: Optional. A string identifier. Used to group multiple recipes together in the recipe book. Recipes with same group identifier but different categories splits into two different groups.
- [NBT List / JSON Array] ingredients: A list of entries for this shapeless crafting recipe. Must have 1 to 9 entries.
- [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [Int] count: Optional. The amount of the item. Defaults to
1. - [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [String] type:
Usage example json:
{
"type": "minecraft:crafting_shapeless",
"category": "equipment",
"ingredients": [
"minecraft:iron_ingot",
"minecraft:flint"
],
"result": {
"count": 1,
"id": "minecraft:flint_and_steel"
}
}
| Ingredients | Crafting recipe | Description |
|---|---|---|
| Iron Ingot + Flint |
Illustrative recipe. |
If the recipe contains same 9 ingredients, it turns into minecraft:crafting_shaped recipe.
crafting_transmute
Represents a crafting recipe in a crafting table, a crafter and the survival inventory.
When matched, output copies the input item stack, changing the item type but preserving all stack components.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:crafting_transmute - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
equipment,building,misc, andredstone. Defaults tomisc. - [String] group: Optional. A string identifier. Used to group multiple recipes together in the recipe book. Recipes with same group identifier but different categories splits into two different groups.
- [String][NBT List / JSON Array] input: Ingredient for item to copy. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [String][NBT List / JSON Array] material: Additional ingredient to use. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [String] result: The output item of the recipe. It keeps item components from the input.
- [String] type:
Usage example json:
{
"type": "minecraft:crafting_transmute",
"category": "misc",
"group": "shulker_box_dye",
"input": "#minecraft:shulker_boxes",
"material": "minecraft:blue_dye",
"result": {
"id": "minecraft:blue_shulker_box"
}
}
| Ingredients | Crafting recipe | Description |
|---|---|---|
| Any Shulker Box + Blue Dye |
Illustrative recipe. |
crafting_special_*
Represents a crafting recipe in a crafting table, a crafter and the survival inventory that is handled with built-in logic instead of being data-driven.
When the vanilla data pack is disabled, they can be used to re-enable desired built-in crafting recipes.
- [NBT Compound / JSON Object]: The root tag.
- [String] type: A resource location indicating the type of serializer of the recipe.
- [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
equipment,building,misc, andredstone. Defaults tomisc.
Unlike most other recipe types, they do not have a group field and cannot be displayed in recipe books.
crafting_special_armordye
- The armor dyeing recipe.
- Regular recipes cannot handle multiple dyes.
crafting_special_bannerduplicate
- The banner copying recipe.
- Regular recipes cannot copy NBT data associated to the banner item.
crafting_special_bookcloning
- The written book copying recipe.
- Regular recipes cannot copy NBT data associated to the written book item and cannot control the generation of copies.
crafting_special_firework_rocket
- The firework rocket recipe using firework stars.
- Regular recipes cannot handle inputs flexibly or add NBT data from a firework star to the firework rocket.
crafting_special_firework_starcrafting_special_firework_star_fade
- The firework star crafting recipes and their fade additions.
- Regular recipes cannot handle inputs flexibly or add NBT data to the firework star.
crafting_special_mapcloning
- The map copying recipe.
- Regular recipes cannot copy NBT data associated to the map item.
crafting_special_mapextending
- The map zooming recipe.
- Regular recipes cannot update NBT data associated to the map item.
crafting_special_repairitem
- The item repair recipe.
- Regular recipes cannot update damage data associated to the tool item.
crafting_special_shielddecoration
- The shield pattern application recipe.
- Regular recipes cannot add NBT data from a banner item to a shield item.
crafting_special_tippedarrow
- The tipped arrow recipe.
- Regular recipes cannot copy NBT data from a lingering potion item to a tipped arrow item.
crafting_decorated_pot
The decorated pot recipe in a crafting table and a crafter.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:crafting_decorated_pot - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
equipment,building,misc, andredstone. Defaults tomisc.
- [String] type:
smelting
Represents a recipe in a furnace.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:smelting - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
food,blocks, andmisc. Defaults tomisc. - [String] group: Optional. A string identifier. Used to group multiple recipes together in the recipe book. Recipes with same group identifier but different categories splits into two different groups.
- [String][NBT List / JSON Array] ingredient: The ingredient for the recipe. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [Int] cookingtime: Optional. The cook time of the recipe in ticks. Defaults to
200. - [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [Double] experience: Optional. The output experience of the recipe.
- [String] type:
Usage example json:
{
"type": "minecraft:smelting",
"category": "blocks",
"cookingtime": 200,
"experience": 0.1,
"ingredient": "minecraft:stone_bricks",
"result": {
"id": "minecraft:cracked_stone_bricks"
}
}
| Name | Ingredients | Smelting recipe | Description |
|---|---|---|---|
| Cracked Stone Bricks | Stone Bricks + Any fuel |
Illustrative recipe |
smithing_transform
Represents a upgrading recipe in a smithing table.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:smithing_transform - [String][NBT List / JSON Array] template: Optional. Ingredient specifying an item to act as the template. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [String][NBT List / JSON Array] base: Ingredient specifying an item to be upgraded. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [String][NBT List / JSON Array] addition: Optional. Ingredient specifying an item to be added. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [NBT Compound / JSON Object] result: Item specifying the resulting upgraded item.
- [String] id: An item ID.
- [Int] count: Optional. The amount of the item. Defaults to
1. - [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [String] type:
The resulting item copies the components of the base item. Usage example json:
{
"type": "minecraft:smithing_transform",
"addition": "#minecraft:netherite_tool_materials",
"base": "minecraft:diamond_axe",
"result": {
"id": "minecraft:netherite_axe"
},
"template": "minecraft:netherite_upgrade_smithing_template"
}
| Ingredients | Smithing recipe | Description |
|---|---|---|
| Netherite Upgrade + Diamond Axe + Netherite Ingot |
Illustrative recipe. |
smithing_trim
Represents a trimming recipe in a smithing table.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:smithing_trim - [String][NBT List / JSON Array] template: Optional. Ingredient specifying an item to act as the template. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [String][NBT List / JSON Array] base: Ingredient specifying an item to be trimmed. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [String][NBT List / JSON Array] addition: Optional. Ingredient specifying an item to be added. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs.
- [String] type:
Adds NBT Tags for the trim to the base item. Usage example json:
{
"type": "minecraft:smithing_trim",
"addition": "#minecraft:trim_materials",
"base": "#minecraft:trimmable_armor",
"pattern": "minecraft:silence",
"template": "minecraft:silence_armor_trim_smithing_template"
}
| Ingredients | Smithing recipe | Description |
|---|---|---|
| Silence Armor Trim + Any Armor Piece + Any Material |
Illustrative recipe. |
smoking
Represents a recipe in a smoker.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:smoking - [String] category: Optional. Controls to which recipe book category the recipe belongs to. Available values are:
food. Defaults tofood. - [String] group: Optional. A string identifier. Used to group multiple recipes together in the recipe book. Recipes with same group identifier but different categories splits into two different groups.
- [String][NBT List / JSON Array] ingredient: The ingredient for the recipe. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [Int] cookingtime: Optional. The cook time of the recipe in ticks. Defaults to
100. - [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [Double] experience: Optional. The output experience of the recipe.
- [String] type:
Usage example json:
{
"type": "minecraft:smoking",
"category": "food",
"cookingtime": 100,
"experience": 0.35,
"ingredient": "minecraft:beef",
"result": {
"id": "minecraft:cooked_beef"
}
}
| Name | Ingredients | Smelting recipe | Description |
|---|---|---|---|
| Steak | Raw Beef + Any fuel |
Illustrative recipe. |
stonecutting
Represents a recipe in a stonecutter.
- [NBT Compound / JSON Object]: The root tag.
- [String] type:
minecraft:stonecutting - [String][NBT List / JSON Array] ingredient: The ingredient for the recipe. Can be one of an [String] ID, a [String] tag with
#, or an [NBT List / JSON Array] array containing IDs. - [NBT Compound / JSON Object] result: The output item of the recipe.
- [String] id: An item ID.
- [Int] count: Optional. The amount of the item. Defaults to
1. - [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.
- [String] type:
Usage example json:
{
"type": "minecraft:stonecutting",
"ingredient": "minecraft:cobbled_deepslate",
"result": {
"count": 1,
"id": "minecraft:cobbled_deepslate_stairs"
}
}
| Ingredients | Cutting recipe | Description |
|---|---|---|
| Cobbled Deepslate | Illustrative recipe. |
Bedrock Edition JSON format
Vanilla recipes are stored as separate JSON files in the behavior_packs/vanilla/recipes or behavior_packs/<version> /recipes within the game files.
Vanilla recipes can be easily accessed in the behavior_pack/recipes folder on the official sample github for addons.
Custom recipe files are stored in the behavior_packs/<add-on name>/recipes in a add-on, but it is allowed to add the recipe to a subfolder, allowing the creation of new recipes and the editing of vanilla recipes.
Recipe JSON files have different structures depending on their type. These types are listed below.
recipe_shaped
Represents a crafting recipe with shape in a crafting table, the inventory, and the crafter.
The key used in the pattern can be any single character except the space character , which is reserved for empty slots in a recipe, can also be omitted to accept the recipe format in any location that has enough space. This format is the only format that accepts multiple results.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_shaped: Used to define the recipe type.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used. This can be a
crafting_tableor a custom crafting table tag. - [String] group: Optional used only for information as it has no known use.
- [NBT List / JSON Array] pattern: A list of single-character keys used to describe a pattern for creating shapes. Each row in the creation grid is a sequence in this list containing 3 or fewer keys. All strings in this list must have the same number of keys. A space can be used to indicate empty space.
- [NBT Compound / JSON Object] key: All keys used for this crafting recipe with shape.
- [NBT List / JSON Array] unlock: Defines the items that unlock the recipe when caught.
- [NBT Compound / JSON Object]:
- [String] item: Used to define an item or block that unlocks the recipe.
- [String] data: Optional. Integer or Molang expression for dynamic variants.
- [String] tag: Used to set an item tag that unlocks the recipe, also accepts custom tags.
- [String] context: Used to unlock recipes with context currently only known values are
AlwaysUnlockedandPlayerInWater.
- [NBT Compound / JSON Object] result: Defines the recipe result.
- [String] item: Used to define an item or block that you will receive when crafting the recipe.
- [String] data: Optional. Integer or Molang expression for dynamic variants.
- [Int] count: Optional. Number of items manufactured example
3.
- [Int] priority: Optional, used to give priority if the same recipe exists in duplicate.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version": "1.20.10",
"minecraft:recipe_shaped": {
"description": {
"identifier": "minecraft:cake"
},
"tags": [ "crafting_table" ],
"pattern": [
"AAA",
"BEB",
"CCC"
],
"key": {
"A": {
"item": "minecraft:bucket",
"data": 1
},
"B": {
"item": "minecraft:sugar"
},
"C": {
"item": "minecraft:wheat"
},
"E": {
"tag": "minecraft:egg"
}
},
"unlock": [
{
"tag": "minecraft:egg"
}
],
"result": {
"item": "minecraft:cake",
"count": 1
} // for single result
"result": [
{ "item": "minecraft:cake" },
{ "item": "minecraft:bucket", "count": 3, "data": 0 } // to have multiple results
]
}
}
| Ingredients | Crafting recipe | Description |
|---|---|---|
| Milk Bucket + Sugar + Any Egg + Wheat |
Illustrative recipe. |
recipe_shapeless
Represents a shapeless crafting recipe in a crafting table, inventory and the crafter, and is also used for the stonecutter.
The ingredient list must have at least one and a maximum of nine entries. Unlike a recipe shaped, multiple results are not possible.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_shapeless: Used to set the type recipe shapeless.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used. This can be
crafting_tablefor the crafting table,stonecutterfor the stonecutter, or a custom crafting table tag. - [String] group: Optional used only for information as it has no known use.
- [NBT List / JSON Array] ingredients: All items used for this shapeless crafting recipe.
- [NBT List / JSON Array] unlock: Defines the items that unlock the recipe when purchased.
- [NBT Compound / JSON Object]:
- [String] item: Used to define an item or block that unlocks the recipe.
- [String] data: Optional. Integer or Molang expression for dynamic variants.
- [String] tag: Used to set an item tag that unlocks the recipe, also accepts custom tags.
- [String] context: Used to unlock recipes with context currently only known values are
AlwaysUnlockedandPlayerInWater.
- [NBT Compound / JSON Object] result: Defines the result of the recipe.
- [String] item: Used to define an item or block that you will receive when crafting the recipe.
- [String] data: Optional. Integer or Molang expression for dynamic variants.
- [Int] count: Optional. Number of items produced example
3.
- [Int] priority: Optional, used to give priority if the same recipe exists in duplicate.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Crafting table example json:
{
"format_version": "1.20.10",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "minecraft:flint_and_steel"
},
"tags": [ "crafting_table" ],
"ingredients": [
{
"item": "minecraft:iron_ingot"
},
{
"item": "minecraft:flint"
}
],
"unlock": [
{
"item": "minecraft:flint"
},
{
"item": "minecraft:obsidian"
}
],
"result": {
"item": "minecraft:flint_and_steel"
}
}
}
| Ingredients | Crafting recipe | Description |
|---|---|---|
| Iron Ingot + Flint |
Illustrative recipe. |
Stonecutter Example Json:
{
"format_version": "1.20.10",
"minecraft:recipe_shapeless": {
"description": {
"identifier": "minecraft:polished_deepslate_stairs_from_cobbled_deepslate_stonecutting"
},
"tags": ["stonecutter"],
"ingredients": [
{
"data": 0,
"item": "minecraft:cobbled_deepslate"
}
],
"unlock": [
{
"item": "minecraft:cobbled_deepslate"
}
],
"result": {
"count": 1,
"data": 0,
"item": "minecraft:polished_deepslate_stairs"
},
"priority": 0
}
}
| Ingredients | Cutting recipe | Description |
|---|---|---|
| Cobbled Deepslate | Illustrative recipe. |
recipe_furnace
Represents a smelting recipe in a furnace, blast furnace, smoker, campfire and the soul campfire.
It is not possible to set the amount of experience you will receive when smelting the item.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_furnace: Used to set the type of smelting recipe.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used. It can be
furnacefor the standard furnace,blast_furnacefor the blast furnace,smokerfor the smoker,campfirefor the campfire andsoul_campfirefor the soul campfire. Unlike it does not support custom tags. - [String] group: Optional used only for information as it has no known use.
- [NBT Compound / JSON Object] input: All items used for this smelting recipe.
- [NBT List / JSON Array] unlock: Defines the items that unlock the recipe, but without use as there is no recipe book for smelting blocks.
- [NBT Compound / JSON Object]:
- [String] item: Used to define an item or block that unlocks the recipe.
- [String] data: Optional. Integer or Molang expression for dynamic variants.
- [String] tag: Used to set an item tag that unlocks the recipe, also accepts custom tags.
- [String] context: Used to unlock recipes with context currently only known values are
AlwaysUnlockedandPlayerInWater.
- [NBT Compound / JSON Object] output: Defines the result of the recipe.
- [String] item: Used to define an item or block that you will receive when crafting the recipe.
- [String] data: Optional. Integer or Molang expression for dynamic variants.
- [Int] count: Optional. Number of items manufactured example
3.
- [Int] priority: Optional, used to give priority if the same recipe exists in duplicate.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version": "1.20.10",
"minecraft:recipe_furnace": {
"description": {
"identifier": "minecraft:furnace_log"
},
"unlock": [
{
"tag": "minecraft:logs_that_burn"
}
],
"tags": ["furnace"],
"input": {
"tag": "minecraft:logs_that_burn"
},
"output": {
"item": "minecraft:charcoal",
"count": 1
},
"priority": -1
}
}
| Ingredients | Smelting recipe | Description |
|---|---|---|
| Any Log or Any Stripped Log + Any fuel |
Illustrative recipe. |
recipe_smithing_trim
Represents a smithing recipe at a smithing table for adding trims.
It is not possible to create a custom one this is for documentation purposes only.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_smithing_trim: Used to set the type of smithing recipe.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used. It can be
smithing_tableit does not support custom tags. - [NBT Compound / JSON Object] template: Used to define a template.
- [String] tag: Used to set an item tag using
minecraft:trim_templatesbut has no effect on custom items with that tag.
- [String] tag: Used to set an item tag using
- [NBT Compound / JSON Object] base: Defines the base items that will be used.
- [String] tag: Used to set an item tag for the recipe being used
minecraft:trimmable_armorsUsing this tag on a custom item allows the custom armor to be trimmed.
- [String] tag: Used to set an item tag for the recipe being used
- [NBT Compound / JSON Object] addition: Used to define a material.
- [String] tag: Used to set an item tag for the recipe being used
minecraft:trim_materialsusing this tag on a custom item has no effect.
- [String] tag: Used to set an item tag for the recipe being used
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version": "1.20.10",
"minecraft:recipe_smithing_trim": {
"description": {
"identifier": "minecraft:smithing_armor_trim"
},
"tags": [ "smithing_table" ],
"template": {
"tag": "minecraft:trim_templates"
},
"base": {
"tag": "minecraft:trimmable_armors"
},
"addition": {
"tag": "minecraft:trim_materials"
}
}
}
| Ingredients | Smithing recipe | Description |
|---|---|---|
| Any Armor Trim + Any Armor Piece + Any Material |
Illustrative recipe. |
recipe_smithing_transform
Represents a smithing recipe at a smithing table to perform a upgrading.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_smithing_transform: Used to set the type of smithing recipe.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used. It can be
smithing_tableit does not support custom tags. - [String] template: Used to define a netherite upgrade accepting custom items if they have the item tag
minecraft:transform_templates. - [String] base: Defines the base items that will be used, the custom item needs to have the item tag
minecraft:transformable_items. - [String] addition: Used to define a base material, custom items with the
minecraft:transform_materialstag can be placed, however it does not work. The only truly valid item is the netherite ingot with the idminecraft:netherite_ingot. - [String] result: Used to set an item as a recipe result.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version": "1.20.10",
"minecraft:recipe_smithing_transform": {
"description": {
"identifier": "minecraft:smithing_netherite_chestplate"
},
"tags": [ "smithing_table" ],
"template": "minecraft:netherite_upgrade_smithing_template",
"base": "minecraft:diamond_chestplate",
"addition": "minecraft:netherite_ingot",
"result": "minecraft:netherite_chestplate"
}
}
| Ingredients | Smithing recipe | Description |
|---|---|---|
| Netherite Upgrade + Diamond Chestplate + Netherite Ingot |
Illustrative recipe. |
recipe_brewing_mix
Represents a brewing recipe on a brewing stand.
Vanilla potions use this system minecraft:potion_type:<potion_effect> can be added long_ or strong_ for other types like minecraft:potion_type:strong_poison also accepted is minecraft:potion, minecraft:splash_potion and minecraft:lingering_potion.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_brewing_mix: Used to set the fermentation recipe type.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used.
brewing_standdoes not support custom tags. - [String] input: Item used for this brew recipe, supports custom items and vanilla items in the format mentioned above.
- [String] reagent: Used to define an item or block that is used as an ingredient also supports custom items.
- [String] output: Recipe result item, supports custom items and vanilla items in the format mentioned above.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version": "1.20.10",
"minecraft:recipe_brewing_mix": {
"description": {
"identifier": "minecraft:brew_awkward_poison"
},
"tags": [ "brewing_stand" ],
"input": "minecraft:potion_type:awkward",
"reagent": "minecraft:spider_eye",
"output": "minecraft:potion_type:poison"
}
}
| Ingredients | Brewing recipe | Description |
|---|---|---|
| Spider Eye + Awkward Potion |
Illustrative recipe. |
recipe_brewing_container
Represents a brewing recipe focused on changing one type into another in a brewing stand.
Vanilla potions use this system minecraft:potion_type:<potion_effect> can be added long_ or strong_ for other types like minecraft:potion_type:strong_poison also accepted is minecraft:potion, minecraft:splash_potion and minecraft:lingering_potion.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_brewing_container: Used to set the fermentation recipe type.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String][NBT List / JSON Array] tags: Defines where the recipe can be used.
brewing_standdoes not support custom tags. - [String] input: Item used for this brewing recipe, unlike the mix only supports vanilla potions items in the format mentioned above.
- [String] reagent: Used to define an item or block that is used as an ingredient also supports custom items.
- [String] output: Recipe result item, supports custom items and vanilla items in the format mentioned above.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version": "1.20.10",
"minecraft:recipe_brewing_container": {
"description": {
"identifier": "minecraft:brew_potion_sulphur"
},
"tags": [ "brewing_stand" ],
"input": "minecraft:potion",
"reagent": "minecraft:gunpowder",
"output": "minecraft:splash_potion"
}
}
| Ingredients | Brewing recipe | Description |
|---|---|---|
| Gunpowder + Any Potion |
Illustrative recipe. |
recipe_material_reduction
Represents a Minecraft Education recipe in a material reducer.
- [NBT Compound / JSON Object]: The root tag.
- [String] format_version: Used to set the version your recipe should work on e.g.
1.20.10. - [NBT Compound / JSON Object] minecraft:recipe_material_reduction: Used to set the recipe type of the material reducer.
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] identifier: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- [String] tags: Defines where the recipe can be used.
material_reducerdoes not support custom tags. - [String] input: Item used for this recipe.
- [NBT List / JSON Array] output: Defines the result of the recipe.
- [NBT Compound / JSON Object]:
- [Int] count: Optional. Number of items as result example
3. - [String] item: Used to define an item or block that you will receive when crafting the recipe.
- [Int] count: Optional. Number of items as result example
- [NBT Compound / JSON Object]:
- [NBT Compound / JSON Object] description: Required in any type of recipe, it contains the identifier of a recipe.
- [String] format_version: Used to set the version your recipe should work on e.g.
Usage example json:
{
"format_version" : "1.14",
"minecraft:recipe_material_reduction" : {
"description" : {
"identifier" : "minecraft:cobblestone_wall:4"
},
"input" : "minecraft:andesite_wall",
"output" : [
{
"count" : 33,
"item" : "minecraft:element_14"
},
{
"count" : 64,
"item" : "minecraft:element_8"
},
{
"count" : 3,
"item" : "minecraft:element_8"
}
],
"tags" : "material_reducer"
}
}
History
| Java Edition | |||||||
|---|---|---|---|---|---|---|---|
| 1.12 | 17w13a | Introduced the recipe system for most crafting recipes. | |||||
| 17w16a | Added 'group' key to the recipe json format. | ||||||
| 1.13 | 17w47a | Removed 'data' key from the recipe json format. | |||||
| 17w48a | Custom recipes can now be added to data packs. | ||||||
| Added these 13 recipe types. | |||||||
| Converted various special crafting recipes to the recipe system using the special recipe types. | |||||||
| 17w49a | Added 'tag' key to the recipe json format. | ||||||
| 18w06a | Smelting recipes now use the recipe system. | ||||||
Added smelting to type.
| |||||||
Added a string result.
| |||||||
Added experience.
| |||||||
Added cookingtime. | |||||||
| 1.14 | 18w43a | Added a recipe type crafting_special_suspiciousstew. | |||||
| 18w48a | Removed these 2 recipe types. | ||||||
| 18w50a | Added recipe types blasting and smoking. | ||||||
| 19w02a | Added a recipe type campfire_cooking. | ||||||
| 19w04a | Added a recipe type stonecutting. | ||||||
| 1.14.3 | pre3 | Re-added the recipe type crafting_special_repairitem. | |||||
| 1.16 | pre1 | Added the recipe type smithing. | |||||
| 1.18.1 | ? | Result count is mandatory in this version. | |||||
| 1.19.3 | 22w42a | Recipe book categories are now defined for each recipe individually in the default datapack. | |||||
| 1.19.4 Experiment | 23w04a | Removed the recipe serializer smithing and replaced it with smithing_transform, and smithing_trim. | |||||
| 23w07a | Added a new recipe serializer crafting_decorated_pot for the new decorated pot recipe. | ||||||
Added show_notification field to recipes. | |||||||
| 1.20 | Pre-release 2 | "item": "minecraft:air" can now be used to denote an ingredient that matches an empty slot. | |||||
| Pre-release 6 | "item": "minecraft:air" can no longer be used in data pack recipes. | ||||||
Ingredients in array form are now also allowed in smithing_trim, and smithing_transform recipes on fields template, base and addition. | |||||||
| 1.20.5 | 24w10a | Can now specify item component. | |||||
| 1.21.2 | 24w33a | The crafting_special_suspiciousstew recipe type has been removed. | |||||
| The format used for recipe ingredients has been simplified and aligned with other fields that accept item lists (like item predicates). | |||||||
| 24w38a | The crafting_special_shulkerboxcoloring recipe type has been removed. | ||||||
Instead it uses the newly added crafting_transmute, which can copy the input item stack, changing the item type but preserving all stack components. | |||||||
| 1.21.5 | 25w02a | The crafting_transmute result field now supports specifying a count and a components patch to apply to the result. | |||||
| 25w04a | smithing_transform recipe type: the base ingredient field is no longer optional. | ||||||
smithing_trim recipe type: the base, template, and addition ingredient fields are no longer optional, added new pattern field. | |||||||
| Bedrock Edition | |||||||
| 1.12.0 | beta 1.12.0.2 | Introduced the recipe system for most crafting recipes. | |||||
| 1.19.40 | Preview 1.19.40.22 | Added tag key to the recipe JSON format. | |||||
| 1.20.10 | Preview 1.20.10.20 | Added unlock field to the recipe JSON format. | |||||
Issues
Issues relating to "Recipe" are maintained on the bug tracker. Issues should be reported and viewed there.
External links
| |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||