Minecraft:Recipe (Bedrock Edition): Difference between revisions
More actions
Fix template calls: add MC/ prefix |
Sync: updated from Minecraft |
||
| Line 1: | Line 1: | ||
{{About|the ''Bedrock Edition'' recipe system|the ''Java Edition'' recipe system|Recipe (Java Edition)|the command|Commands/recipe|other uses|Recipe}} | {{About|the ''Bedrock Edition'' recipe system|the ''Java Edition'' recipe system|Recipe (Java Edition)|the command|Commands/recipe|other uses|Recipe}} | ||
'''Recipes''' provide a structured way for players to perform item and block transformations in-game. Every [[Minecraft:crafting]], smelting, [[Minecraft:brewing]], [[Minecraft:Blast Furnace#Smelting|blasting]], [[Minecraft:Campfire#Cooking|campfire cooking]], [[Minecraft:Smoker#Cooking|smoking]], [[Minecraft:Stonecutter#Usage|stonecutting]] and smithing recipe uses this system. Recipes are data driven and can be configured by [[Minecraft:add-on]]s. | '''Recipes''' provide a structured way for players to perform item and block transformations in-game. Every [[Minecraft:crafting]], [[Minecraft:smelting]], [[Minecraft:brewing]], [[Minecraft:Blast Furnace#Smelting|blasting]], [[Minecraft:Campfire#Cooking|campfire cooking]], [[Minecraft:Smoker#Cooking|smoking]], [[Minecraft:Stonecutter#Usage|stonecutting]] and [[Minecraft:smithing]] recipe uses this system. Recipes are data driven and can be configured by [[Minecraft:add-on]]s. | ||
== Obtaining == | == 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 {{ | 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 {{cmd|recipe}} command. | ||
Once a recipe has been discovered, it is added to the player's recipe book. | Once a recipe has been discovered, it is added to the player's [[Minecraft:recipe book]]. | ||
== Usage == | == Usage == | ||
{{ | {{main|Recipe book}} | ||
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 {{gmr|doLimitedCrafting}} game rule is enabled. The game rule {{gmr|recipesUnlock}} can be used to disable the unlocking of recipes, making them all accessible and visible. | Discovered recipes can be found in the player's [[Minecraft:recipe book]]. However, recipes do not need to be discovered for the player to be able to use them, unless the {{gmr|doLimitedCrafting}} game rule is enabled. The game rule {{gmr|recipesUnlock}} can be used to disable 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. | 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 [[Minecraft:crafting table]]. | ||
The [[Minecraft:anvil]], cartography table, [[Minecraft:loom]], and [[Minecraft:grindstone]] don't use the recipe system; they use different, hardcoded systems for their mechanics. | The [[Minecraft:anvil]], [[Minecraft:cartography table]], [[Minecraft:loom]], and [[Minecraft:grindstone]] don't use the recipe system; they use different, hardcoded systems for their mechanics. | ||
== JSON format == | == JSON format == | ||
Vanilla recipes are stored as separate [[Minecraft:JSON]] files in the {{ | Vanilla recipes are stored as separate [[Minecraft:JSON]] files in the {{code|behavior_packs/vanilla/recipes}} or {{code|behavior_packs/<version> /recipes}} within the game files. | ||
Vanilla recipes can be easily accessed in the {{ | Vanilla recipes can be easily accessed in the {{code|behavior_pack/recipes}} folder on the [https://github.com/mojang/bedrock-samples official sample github] for addons. | ||
Custom recipe files are stored in the {{ | Custom recipe files are stored in the {{code|behavior_packs/<add-on name>/recipes}} in a [[Minecraft: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 JSON files have different structures depending on their type. These types are listed below. | ||
=== recipe_shaped === | === recipe_shaped === | ||
Represents a crafting recipe with shape in a crafting table, the [[Minecraft:inventory]], and the [[Minecraft:crafter]]. | Represents a crafting recipe with shape in a [[Minecraft:crafting table]], the [[Minecraft:inventory]], and the [[Minecraft:crafter]]. | ||
The key used in the pattern can be any single character except the space character <code> </code>, 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. | The key used in the pattern can be any single character except the space character <code> </code>, 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. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_shaped}}: Used to define the recipe type. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. This can be a {{code|crafting_table}} or a custom crafting table tag. | ||
*** {{ | *** {{nbt|string|group}}: Optional used only for information as it has no known use. | ||
*** {{ | *** {{nbt|list|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|key}}: All keys used for this crafting recipe with shape. | ||
**** {{ | **** {{nbt|compound|A key}}: | ||
***** {{ | ***** {{nbt|string|item}}: Used to define an item or block with the id example {{code|minecraft:emerald_block}}. | ||
***** {{ | ***** {{nbt|string|data}}: Optional. Integer or [[Minecraft:Molang]] expression for dynamic variants. | ||
***** {{ | ***** {{nbt|string|tag}}: Used to define an [[Minecraft:Item tag (Bedrock Edition)|item tag]] example {{code|minecraft:planks}} also accepts custom tags. | ||
*** {{ | *** {{nbt|list|unlock}}: Defines the items that unlock the recipe when caught. | ||
**** {{ | **** {{nbt|compound}}: | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block that unlocks the recipe. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or Molang expression for dynamic variants. | ||
**** {{ | **** {{nbt|string|tag}}: Used to set an item tag that unlocks the recipe, also accepts custom tags. | ||
**** {{ | **** {{nbt|string|context}}: Used to unlock recipes with context currently only known values are {{cd|AlwaysUnlocked}} and {{cd|PlayerInWater}}. | ||
*** {{ | *** {{nbt|compound|result}}: Defines the recipe result. | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block that you will receive when crafting the recipe. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or Molang expression for dynamic variants. | ||
**** {{ | **** {{nbt|int|count}}: Optional. Number of items manufactured example {{code|3}}. | ||
*** {{ | *** {{nbt|int|priority}}: Optional, used to give priority if the same recipe exists in duplicate. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 126: | Line 126: | ||
=== recipe_shapeless === | === recipe_shapeless === | ||
Represents a shapeless crafting recipe in a crafting table, [[Minecraft:inventory]] and the [[Minecraft:crafter]], and is also used for the [[Minecraft:stonecutter]]. | Represents a shapeless crafting recipe in a [[Minecraft:crafting table]], [[Minecraft:inventory]] and the [[Minecraft:crafter]], and is also used for the [[Minecraft:stonecutter]]. | ||
The ingredient list must have at least one and a maximum of nine entries. Unlike a recipe shaped, multiple results are not possible. | The ingredient list must have at least one and a maximum of nine entries. Unlike a recipe shaped, multiple results are not possible. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_shapeless}}: Used to set the type recipe shapeless. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. This can be {{code|crafting_table}} for the crafting table, {{code|stonecutter}} for the [[Minecraft:stonecutter]], or a custom crafting table tag. | ||
*** {{ | *** {{nbt|string|group}}: Optional used only for information as it has no known use. | ||
*** {{ | *** {{nbt|list|ingredients}}: All items used for this shapeless crafting recipe. | ||
**** {{ | **** {{nbt|compound}}: | ||
***** {{ | ***** {{nbt|string|item}}: Used to define an item or block with the id example {{code|minecraft:emerald_block}}. | ||
***** {{ | ***** {{nbt|string|data}}: Optional. Integer or [[Minecraft:Molang]] expression for dynamic variants. | ||
***** {{ | ***** {{nbt|string|tag}}: Used to define an [[Minecraft:Item tag (Bedrock Edition)|item tag]] example {{code|minecraft:planks}} also accepts custom tags. | ||
*** {{ | *** {{nbt|list|unlock}}: Defines the items that unlock the recipe when purchased. | ||
**** {{ | **** {{nbt|compound}}: | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block that unlocks the recipe. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or Molang expression for dynamic variants. | ||
**** {{ | **** {{nbt|string|tag}}: Used to set an item tag that unlocks the recipe, also accepts custom tags. | ||
**** {{ | **** {{nbt|string|context}}: Used to unlock recipes with context currently only known values are {{cd|AlwaysUnlocked}} and {{cd|PlayerInWater}}. | ||
*** {{ | *** {{nbt|compound|result}}: Defines the result of the recipe. | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block that you will receive when crafting the recipe. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or Molang expression for dynamic variants. | ||
**** {{ | **** {{nbt|int|count}}: Optional. Number of items produced example {{code|3}}. | ||
*** {{ | *** {{nbt|int|priority}}: Optional, used to give priority if the same recipe exists in duplicate. | ||
</div> | </div> | ||
'''Crafting table example json:''' | '''Crafting table example json:''' | ||
| Line 240: | Line 240: | ||
=== recipe_furnace === | === recipe_furnace === | ||
Represents a smelting recipe in a [[Minecraft:furnace]], blast furnace, [[Minecraft:smoker]], [[Minecraft:campfire]] and the soul campfire. | Represents a [[Minecraft:smelting]] recipe in a [[Minecraft:furnace]], [[Minecraft:blast furnace]], [[Minecraft:smoker]], [[Minecraft:campfire]] and the [[Minecraft:soul campfire]]. | ||
It is not possible to set the amount of experience you will receive when smelting the item. | It is not possible to set the amount of [[Minecraft:experience]] you will receive when smelting the item. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_furnace}}: Used to set the type of smelting recipe. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. It can be {{code|furnace}} for the standard furnace, {{code|blast_furnace}} for the blast furnace, {{code|smoker}} for the smoker, {{code|campfire}} for the campfire and {{code|soul_campfire}} for the soul campfire. Unlike it does not support custom tags. | ||
*** {{ | *** {{nbt|string|group}}: Optional used only for information as it has no known use. | ||
*** {{ | *** {{nbt|compound|input}}: All items used for this smelting recipe. | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block with the id example {{code|minecraft:diamond_chestplate}}. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or [[Minecraft:Molang]] expression for dynamic variants. | ||
**** {{ | **** {{nbt|string|tag}}: Used to define an [[Minecraft:Item tag (Bedrock Edition)|item tag]] example {{code|minecraft:planks}} also accepts custom tags. | ||
*** {{ | *** {{nbt|list|unlock}}: Defines the items that unlock the recipe. | ||
**** {{ | **** {{nbt|compound}}: | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block that unlocks the recipe. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or Molang expression for dynamic variants. | ||
**** {{ | **** {{nbt|string|tag}}: Used to set an item tag that unlocks the recipe, also accepts custom tags. | ||
**** {{ | **** {{nbt|string|context}}: Used to unlock recipes with context currently only known values are {{cd|AlwaysUnlocked}} and {{cd|PlayerInWater}}. | ||
*** {{ | *** {{nbt|compound|output}}: Defines the result of the recipe. | ||
**** {{ | **** {{nbt|string|item}}: Used to define an item or block that you will receive when crafting the recipe. | ||
**** {{ | **** {{nbt|string|data}}: Optional. Integer or Molang expression for dynamic variants. | ||
**** {{ | **** {{nbt|int|count}}: Optional. Number of items manufactured example {{code|3}}. | ||
*** {{ | *** {{nbt|int|priority}}: Optional, used to give priority if the same recipe exists in duplicate. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 304: | Line 304: | ||
=== recipe_smithing_trim === | === recipe_smithing_trim === | ||
Represents a smithing recipe at a smithing table for adding trims. | Represents a [[Minecraft:smithing]] recipe at a [[Minecraft:smithing table]] for adding [[Minecraft:Smithing#Trimming|trims]]. | ||
It is not possible to create a custom one this is for documentation purposes only. | It is not possible to create a custom one this is for documentation purposes only. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_smithing_trim}}: Used to set the type of smithing recipe. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. It can be {{code|smithing_table}} it does not support custom tags. | ||
*** {{ | *** {{nbt|compound|template}}: Used to define a [[Minecraft:Smithing#Template|template]]. | ||
**** {{ | **** {{nbt|string|tag}}: Used to set an [[Minecraft:Item tag (Bedrock Edition)|item tag]] using {{code|minecraft:trim_templates}} but has no effect on custom items with that tag. | ||
*** {{ | *** {{nbt|compound|base}}: Defines the base items that will be used. | ||
**** {{ | **** {{nbt|string|tag}}: Used to set an item tag for the recipe being used {{code|minecraft:trimmable_armors}} Using this tag on a custom item allows the custom armor to be trimmed. | ||
*** {{ | *** {{nbt|compound|addition}}: Used to define a [[Minecraft:Smithing#Material|material]]. | ||
**** {{ | **** {{nbt|string|tag}}: Used to set an item tag for the recipe being used {{code|minecraft:trim_materials}} using this tag on a custom item has no effect. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 346: | Line 346: | ||
{{Smithing | {{Smithing | ||
|head=1 | |head=1 | ||
|ingredients=Any Armor Trim +<br>Any [[Minecraft:Armor]] Piece +<br>Any Material | |ingredients=Any [[Minecraft:Armor Trim]] +<br>Any [[Minecraft:Armor]] Piece +<br>Any [[Minecraft:Smithing#Material|Material]] | ||
|Any Armor Trim Smithing Template | |Any Armor Trim Smithing Template | ||
|Netherite Helmet; Iron Chestplate; Golden Leggings; Diamond Boots; Copper Boots; Chainmail Chestplate; Leather Pants; Turtle Shell; Netherite Helmet; Iron Chestplate; Golden Leggings; Copper Boots; Diamond Boots; Chainmail Chestplate; Leather Pants; Turtle Shell; Netherite Helmet | |Netherite Helmet; Iron Chestplate; Golden Leggings; Diamond Boots; Copper Boots; Chainmail Chestplate; Leather Pants; Turtle Shell; Netherite Helmet; Iron Chestplate; Golden Leggings; Copper Boots; Diamond Boots; Chainmail Chestplate; Leather Pants; Turtle Shell; Netherite Helmet | ||
| Line 357: | Line 357: | ||
=== recipe_smithing_transform === | === recipe_smithing_transform === | ||
Represents a smithing recipe at a smithing table to perform a upgrading. | Represents a [[Minecraft:smithing]] recipe at a [[Minecraft:smithing table]] to perform a [[Minecraft:Smithing#Upgrading|upgrading]]. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_smithing_transform}}: Used to set the type of smithing recipe. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. It can be {{code|smithing_table}} it does not support custom tags. | ||
*** {{ | *** {{nbt|string|template}}: Used to define a [[Minecraft:netherite upgrade]] accepting custom items if they have the [[Minecraft:Item tag (Bedrock Edition)|item tag]] {{code|minecraft:transform_templates}}. | ||
*** {{ | *** {{nbt|string|base}}: Defines the base items that will be used, the custom item needs to have the item tag {{code|minecraft:transformable_items}}. | ||
*** {{ | *** {{nbt|string|addition}}: Used to define a base material, custom items with the {{code|minecraft:transform_materials}} tag can be placed. | ||
*** {{ | *** {{nbt|string|result}}: Used to set an item as a recipe result. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 400: | Line 400: | ||
=== recipe_brewing_mix === | === recipe_brewing_mix === | ||
Represents a [[Minecraft:brewing]] recipe on a brewing stand. | Represents a [[Minecraft:brewing]] recipe on a [[Minecraft:brewing stand]]. | ||
Vanilla potions use this system {{ | Vanilla potions use this system {{code|minecraft:potion_type:<potion_effect>}} can be added {{cd|long_}} or {{cd|strong_}} for other types like {{cd|minecraft:potion_type:strong_poison}} also accepted is {{cd|minecraft:potion}}, {{cd|minecraft:splash_potion}} and {{cd|minecraft:lingering_potion}}. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_brewing_mix}}: Used to set the fermentation recipe type. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. {{code|brewing_stand}} does not support custom tags. | ||
*** {{ | *** {{nbt|string|input}}: Item used for this brew recipe, supports custom items and vanilla items in the format mentioned above. | ||
*** {{ | *** {{nbt|string|reagent}}: Used to define an item or block that is used as an ingredient also supports custom items. | ||
*** {{ | *** {{nbt|string|output}}: Recipe result item, supports custom items and vanilla items in the format mentioned above. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 443: | Line 443: | ||
=== recipe_brewing_container === | === recipe_brewing_container === | ||
Represents a [[Minecraft:brewing]] recipe focused on changing one type into another in a brewing stand. | Represents a [[Minecraft:brewing]] recipe focused on changing one type into another in a [[Minecraft:brewing stand]]. | ||
Vanilla potions use this system {{ | Vanilla potions use this system {{code|minecraft:potion_type:<potion_effect>}} can be added {{cd|long_}} or {{cd|strong_}} for other types like {{cd|minecraft:potion_type:strong_poison}} also accepted is {{cd|minecraft:potion}}, {{cd|minecraft:splash_potion}} and {{cd|minecraft:lingering_potion}}. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_brewing_container}}: Used to set the fermentation recipe type. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string}}{{nbt|list|tags}}: Defines where the recipe can be used. {{code|brewing_stand}} does not support custom tags. | ||
*** {{ | *** {{nbt|string|input}}: Item used for this brewing recipe, unlike the mix only supports vanilla potions items in the format mentioned above. | ||
*** {{ | *** {{nbt|string|reagent}}: Used to define an item or block that is used as an ingredient also supports custom items. | ||
*** {{ | *** {{nbt|string|output}}: Recipe result item, supports custom items and vanilla items in the format mentioned above. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 486: | Line 486: | ||
=== recipe_material_reduction === | === recipe_material_reduction === | ||
{{ | {{education feature}} | ||
Represents a [[Minecraft:Minecraft Education]] recipe in a material reducer. | Represents a [[Minecraft:Minecraft Education]] recipe in a [[Minecraft:material reducer]]. | ||
<div class="treeview"> | <div class="treeview"> | ||
* {{ | * {{nbt|compound}}: The root tag. | ||
** {{ | ** {{nbt|string|format_version}}: Used to set the version your recipe should work on e.g. {{cd|1.20.10}}. | ||
** {{ | ** {{nbt|compound|minecraft:recipe_material_reduction}}: Used to set the recipe type of the material reducer. | ||
*** {{ | *** {{nbt|compound|description}}: Required in any type of recipe, it contains the identifier of a recipe. | ||
**** {{ | **** {{nbt|string|identifier}}: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts. | ||
*** {{ | *** {{nbt|string|tags}}: Defines where the recipe can be used. {{code|material_reducer}} does not support custom tags. | ||
*** {{ | *** {{nbt|string|input}}: Item used for this recipe. | ||
*** {{ | *** {{nbt|list|output}}: Defines the result of the recipe. | ||
**** {{ | **** {{nbt|compound}}: | ||
***** {{ | ***** {{nbt|int|count}}: Optional. Number of items as result example {{code|3}}. | ||
***** {{ | ***** {{nbt|string|item}}: Used to define an item or block that you will receive when crafting the recipe. | ||
</div> | </div> | ||
'''Usage example json:''' | '''Usage example json:''' | ||
| Line 532: | Line 532: | ||
== History == | == History == | ||
{{HistoryTable | {{HistoryTable | ||
|{{ | |{{HistoryLine|bedrock}} | ||
|{{ | |{{HistoryLine||1.12.0|dev=beta 1.12.0.2|Introduced the recipe system for most crafting recipes.}} | ||
|{{ | |{{HistoryLine||1.19.40|dev=Preview 1.19.40.22|Added <code>tag</code> key to the recipe JSON format.}} | ||
|{{ | |{{HistoryLine||1.20.10|dev=Preview 1.20.10.20|Added <code>unlock</code> field to the recipe JSON format.}} | ||
|{{HistoryLine||26.40|dev=Preview 26.40.30|{{cd|minecraft:recipe_smithing_transform}} now accepts items tagged with {{cd|minecraft:transform_materials}} in its {{cd|addition}} field instead of just [[Minecraft:netherite ingot]].}} | |||
}} | }} | ||
== Issues == | == Issues == | ||
{{ | {{Issue list}} | ||
== External links == | == External links == | ||
| Line 545: | Line 546: | ||
== Navigation == | == Navigation == | ||
{{ | {{Navbox Bedrock Edition}} | ||
Revision as of 11:15, 4 August 2026
|
For the {{{Description}}} of the same name, see [[{{{Destination}}}]]. |
Recipes provide a structured way for players to perform item and block transformations in-game. Every Minecraft:crafting, Minecraft:smelting, Minecraft:brewing, blasting, campfire cooking, smoking, stonecutting and Minecraft:smithing recipe uses this system. Recipes are data driven and can be configured by Minecraft:add-ons.
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 Template:Cmd command.
Once a recipe has been discovered, it is added to the player's Minecraft:recipe book.
Usage
Discovered recipes can be found in the player's Minecraft:recipe book. However, recipes do not need to be discovered for the player to be able to use them, unless the Template:Gmr game rule is enabled. The game rule Template:Gmr can be used to disable 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 Minecraft:crafting table.
The Minecraft:anvil, Minecraft:cartography table, Minecraft:loom, and Minecraft:grindstone don't use the recipe system; they use different, hardcoded systems for their mechanics.
JSON format
Vanilla recipes are stored as separate Minecraft:JSON files in the Template:Code or Template:Code within the game files.
Vanilla recipes can be easily accessed in the Template:Code folder on the official sample github for addons.
Custom recipe files are stored in the Template:Code in a Minecraft: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 Minecraft:crafting table, the Minecraft:inventory, and the Minecraft: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.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to define the recipe type.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. This can be a Template:Code or a custom crafting table tag.
- Template:Nbt: Optional used only for information as it has no known use.
- Template:Nbt: 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.
- Template:Nbt: All keys used for this crafting recipe with shape.
- Template:Nbt:
- Template:Nbt: Used to define an item or block with the id example Template:Code.
- Template:Nbt: Optional. Integer or Minecraft:Molang expression for dynamic variants.
- Template:Nbt: Used to define an item tag example Template:Code also accepts custom tags.
- Template:Nbt:
- Template:Nbt: Defines the items that unlock the recipe when caught.
- Template:Nbt:
- Template:Nbt: Used to define an item or block that unlocks the recipe.
- Template:Nbt: Optional. Integer or Molang expression for dynamic variants.
- Template:Nbt: Used to set an item tag that unlocks the recipe, also accepts custom tags.
- Template:Nbt: Used to unlock recipes with context currently only known values are Template:Cd and Template:Cd.
- Template:Nbt: Defines the recipe result.
- Template:Nbt: Used to define an item or block that you will receive when crafting the recipe.
- Template:Nbt: Optional. Integer or Molang expression for dynamic variants.
- Template:Nbt: Optional. Number of items manufactured example Template:Code.
- Template:Nbt: Optional, used to give priority if the same recipe exists in duplicate.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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
]
}
} </syntaxhighlight>
recipe_shapeless
Represents a shapeless crafting recipe in a Minecraft:crafting table, Minecraft:inventory and the Minecraft:crafter, and is also used for the Minecraft:stonecutter.
The ingredient list must have at least one and a maximum of nine entries. Unlike a recipe shaped, multiple results are not possible.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the type recipe shapeless.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. This can be Template:Code for the crafting table, Template:Code for the Minecraft:stonecutter, or a custom crafting table tag.
- Template:Nbt: Optional used only for information as it has no known use.
- Template:Nbt: All items used for this shapeless crafting recipe.
- Template:Nbt:
- Template:Nbt: Used to define an item or block with the id example Template:Code.
- Template:Nbt: Optional. Integer or Minecraft:Molang expression for dynamic variants.
- Template:Nbt: Used to define an item tag example Template:Code also accepts custom tags.
- Template:Nbt:
- Template:Nbt: Defines the items that unlock the recipe when purchased.
- Template:Nbt:
- Template:Nbt: Used to define an item or block that unlocks the recipe.
- Template:Nbt: Optional. Integer or Molang expression for dynamic variants.
- Template:Nbt: Used to set an item tag that unlocks the recipe, also accepts custom tags.
- Template:Nbt: Used to unlock recipes with context currently only known values are Template:Cd and Template:Cd.
- Template:Nbt: Defines the result of the recipe.
- Template:Nbt: Used to define an item or block that you will receive when crafting the recipe.
- Template:Nbt: Optional. Integer or Molang expression for dynamic variants.
- Template:Nbt: Optional. Number of items produced example Template:Code.
- Template:Nbt: Optional, used to give priority if the same recipe exists in duplicate.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Crafting table example json: <syntaxhighlight lang="c++"> {
"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"
}
}
} </syntaxhighlight>
Stonecutter Example Json: <syntaxhighlight lang="c++"> {
"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
}
} </syntaxhighlight>
recipe_furnace
Represents a Minecraft:smelting recipe in a Minecraft:furnace, Minecraft:blast furnace, Minecraft:smoker, Minecraft:campfire and the Minecraft:soul campfire.
It is not possible to set the amount of Minecraft:experience you will receive when smelting the item.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the type of smelting recipe.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. It can be Template:Code for the standard furnace, Template:Code for the blast furnace, Template:Code for the smoker, Template:Code for the campfire and Template:Code for the soul campfire. Unlike it does not support custom tags.
- Template:Nbt: Optional used only for information as it has no known use.
- Template:Nbt: All items used for this smelting recipe.
- Template:Nbt: Used to define an item or block with the id example Template:Code.
- Template:Nbt: Optional. Integer or Minecraft:Molang expression for dynamic variants.
- Template:Nbt: Used to define an item tag example Template:Code also accepts custom tags.
- Template:Nbt: Defines the items that unlock the recipe.
- Template:Nbt:
- Template:Nbt: Used to define an item or block that unlocks the recipe.
- Template:Nbt: Optional. Integer or Molang expression for dynamic variants.
- Template:Nbt: Used to set an item tag that unlocks the recipe, also accepts custom tags.
- Template:Nbt: Used to unlock recipes with context currently only known values are Template:Cd and Template:Cd.
- Template:Nbt: Defines the result of the recipe.
- Template:Nbt: Used to define an item or block that you will receive when crafting the recipe.
- Template:Nbt: Optional. Integer or Molang expression for dynamic variants.
- Template:Nbt: Optional. Number of items manufactured example Template:Code.
- Template:Nbt: Optional, used to give priority if the same recipe exists in duplicate.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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
}
} </syntaxhighlight>
recipe_smithing_trim
Represents a Minecraft:smithing recipe at a Minecraft:smithing table for adding trims.
It is not possible to create a custom one this is for documentation purposes only.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the type of smithing recipe.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. It can be Template:Code it does not support custom tags.
- Template:Nbt: Used to define a template.
- Template:Nbt: Used to set an item tag using Template:Code but has no effect on custom items with that tag.
- Template:Nbt: Defines the base items that will be used.
- Template:Nbt: Used to set an item tag for the recipe being used Template:Code Using this tag on a custom item allows the custom armor to be trimmed.
- Template:Nbt: Used to define a material.
- Template:Nbt: Used to set an item tag for the recipe being used Template:Code using this tag on a custom item has no effect.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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"
}
}
} </syntaxhighlight>
recipe_smithing_transform
Represents a Minecraft:smithing recipe at a Minecraft:smithing table to perform a upgrading.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the type of smithing recipe.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. It can be Template:Code it does not support custom tags.
- Template:Nbt: Used to define a Minecraft:netherite upgrade accepting custom items if they have the item tag Template:Code.
- Template:Nbt: Defines the base items that will be used, the custom item needs to have the item tag Template:Code.
- Template:Nbt: Used to define a base material, custom items with the Template:Code tag can be placed.
- Template:Nbt: Used to set an item as a recipe result.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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"
}
} </syntaxhighlight>
recipe_brewing_mix
Represents a Minecraft:brewing recipe on a Minecraft:brewing stand.
Vanilla potions use this system Template:Code can be added Template:Cd or Template:Cd for other types like Template:Cd also accepted is Template:Cd, Template:Cd and Template:Cd.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the fermentation recipe type.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. Template:Code does not support custom tags.
- Template:Nbt: Item used for this brew recipe, supports custom items and vanilla items in the format mentioned above.
- Template:Nbt: Used to define an item or block that is used as an ingredient also supports custom items.
- Template:Nbt: Recipe result item, supports custom items and vanilla items in the format mentioned above.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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" }
} </syntaxhighlight> Template:Brewing
recipe_brewing_container
Represents a Minecraft:brewing recipe focused on changing one type into another in a Minecraft:brewing stand.
Vanilla potions use this system Template:Code can be added Template:Cd or Template:Cd for other types like Template:Cd also accepted is Template:Cd, Template:Cd and Template:Cd.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the fermentation recipe type.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:NbtTemplate:Nbt: Defines where the recipe can be used. Template:Code does not support custom tags.
- Template:Nbt: Item used for this brewing recipe, unlike the mix only supports vanilla potions items in the format mentioned above.
- Template:Nbt: Used to define an item or block that is used as an ingredient also supports custom items.
- Template:Nbt: Recipe result item, supports custom items and vanilla items in the format mentioned above.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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" }
} </syntaxhighlight> Template:Brewing
recipe_material_reduction
Template:Education feature Represents a Minecraft:Minecraft Education recipe in a Minecraft:material reducer.
- Template:Nbt: The root tag.
- Template:Nbt: Used to set the version your recipe should work on e.g. Template:Cd.
- Template:Nbt: Used to set the recipe type of the material reducer.
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
- Template:Nbt: Required to detect the recipe in-game. The namespace can be omitted, but it is highly recommended to avoid conflicts.
- Template:Nbt: Defines where the recipe can be used. Template:Code does not support custom tags.
- Template:Nbt: Item used for this recipe.
- Template:Nbt: Defines the result of the recipe.
- Template:Nbt:
- Template:Nbt: Optional. Number of items as result example Template:Code.
- Template:Nbt: Used to define an item or block that you will receive when crafting the recipe.
- Template:Nbt:
- Template:Nbt: Required in any type of recipe, it contains the identifier of a recipe.
Usage example json: <syntaxhighlight lang="c++"> {
"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"
}
} </syntaxhighlight>