![]() |
VOOZH | about |
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. Recipes are data driven and can be configured by data packs.
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. Advancements can be configured to award recipes when triggered; in vanilla, there are many 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. Discovered recipes are stored in the player's [NBT Compound / JSON Object] recipeBook NBT.
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.
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. The recipe book can also be used in the furnace, showing exclusively smelting recipes.
The anvil, cartography table, loom, brewing stand, and grindstone don't use the recipe system; they use different, hardcoded systems for their mechanics.
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.
Represents a recipe in a blast furnace.
minecraft:blastingblocks and misc. Defaults to misc.#, or an [NBT List / JSON Array] array containing IDs.100.Usage example json:
{ "type":"minecraft:blasting", "category":"misc", "cookingtime":100, "experience":0.1, "group":"coal", "ingredient":"minecraft:coal_ore", "result":{ "id":"minecraft:coal" } }
Represents a recipe in a campfire.
minecraft:campfire_cookingfood. Defaults to food.#, or an [NBT List / JSON Array] array containing IDs.100.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.
Represents an armor dyeing recipe in a crafting table, the survival inventory and the crafter.
minecraft:crafting_dyeequipment, building, misc, and redstone. Defaults to misc.#, or an [NBT List / JSON Array] array containing IDs.
minecraft:dye component is required on matching items for the whole recipe to matchtrue.#, or an [NBT List / JSON Array] array containing IDs.Usage example json:
{ "type":"minecraft:crafting_dye", "category":"misc", "dye":"#minecraft:dyes", "group":"dyed_armor", "result":{ "id":"minecraft:leather_horse_armor" }, "target":"minecraft:leather_horse_armor" }
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.
minecraft:crafting_shapedequipment, building, misc, and redstone. Defaults to misc.true.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" } }
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.
minecraft:crafting_shapelessequipment, building, misc, and redstone. Defaults to misc.1.Usage example json:
{ "type":"minecraft:crafting_shapeless", "category":"equipment", "ingredients":[ "minecraft:iron_ingot", "minecraft:flint" ], "result":{ "count":1, "id":"minecraft:flint_and_steel" } }
If the recipe contains the same 9 ingredients, it turns into minecraft:crafting_shaped recipe.
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.
minecraft:crafting_transmuteequipment, building, misc, and redstone. Defaults to misc.#, or an [NBT List / JSON Array] array containing IDs.#, or an [NBT List / JSON Array] array containing IDs.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" } }
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.
equipment, building, misc, and redstone. Defaults to misc.Unlike most other recipe types, they do not have a group field and cannot be displayed in recipe books.
crafting_special_armordyecrafting_special_bannerduplicatecrafting_special_bookcloningcrafting_special_firework_rocketcrafting_special_firework_starcrafting_special_firework_star_fadecrafting_special_mapcloningcrafting_special_mapextendingcrafting_special_repairitemcrafting_special_shielddecorationcrafting_special_tippedarrowThe decorated pot recipe in a crafting table and a crafter.
minecraft:crafting_decorated_potequipment, building, misc, and redstone. Defaults to misc.Represents a recipe in a furnace.
minecraft:smeltingfood, blocks, and misc. Defaults to misc.#, or an [NBT List / JSON Array] array containing IDs.200.Usage example json:
{ "type":"minecraft:smelting", "category":"blocks", "cookingtime":200, "experience":0.1, "ingredient":"minecraft:stone_bricks", "result":{ "id":"minecraft:cracked_stone_bricks" } }
Represents a upgrading recipe in a smithing table.
minecraft:smithing_transform#, or an [NBT List / JSON Array] array containing IDs.#, or an [NBT List / JSON Array] array containing IDs.#, or an [NBT List / JSON Array] array containing IDs.1.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" }
Represents a trimming recipe in a smithing table.
minecraft:smithing_trim#, or an [NBT List / JSON Array] array containing IDs.#, or an [NBT List / JSON Array] array containing IDs.#, or an [NBT List / JSON Array] array containing IDs.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" }
Represents a recipe in a smoker.
minecraft:smokingfood. Defaults to food.#, or an [NBT List / JSON Array] array containing IDs.100.Usage example json:
{ "type":"minecraft:smoking", "category":"food", "cookingtime":100, "experience":0.35, "ingredient":"minecraft:beef", "result":{ "id":"minecraft:cooked_beef" } }
Represents a recipe in a stonecutter.
minecraft:stonecutting#, or an [NBT List / JSON Array] array containing IDs.1.Usage example json:
{ "type":"minecraft:stonecutting", "ingredient":"minecraft:cobbled_deepslate", "result":{ "count":1, "id":"minecraft:cobbled_deepslate_stairs" } }
| 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. | |||||||
| 26.1 | snap3 | result field should now be more consistent across all recipe types that contain it. | |||||
| It will now accept short form. | |||||||
For recipe types smelting, blasting, smoking and campfire_cooking this field now also accepts count field. | |||||||
| snap5 | minecraft:crafting_special_mapcloning recipe type has been removed, functionality has been absorbed by minecraft:crafting_transmute. | ||||||
New show_notification fields with the same functionality as existing one in minecraft:crafting_shaped have been added to several existing recipe types. | |||||||
Removed unused group field from recipes without a recipe book. | |||||||
| Renamed several stonecutter recipes, along with the relevant advancement. | |||||||
Added recipe type minecraft:crafting_dye, replacing the minecraft:crafting_special_armordye recipe. | |||||||
Issues relating to "Recipe (Java Edition)" are maintained on the bug tracker. Issues should be reported and viewed there.