Recipe

This article is about the Java and Bedrock Edition recipe system. For crafting recipes, see Crafting § Complete recipe list. For smelting recipes, see Smelting § Recipes. For brewing recipes, see Brewing § Recipes. For the command, see Commands/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, cartography tables and 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. Using the recipe automatically makes the player discover it. Recipes can also be granted using the /recipe command or as a reward for completing an advancement. In Java Edition, there are multiple advancements that grant recipes which trigger when, for example, the player obtains an item required in the recipe.

In Java Edition, 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.

Usage

Main article: 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 doLimitedCrafting game rule is enabled.

Recipes appear only if the player is using the recipe book in a block associated to the recipe's type; for example, furnace recipes appear only when the player uses the recipe book in the furnace GUI. When the player is using the recipe book in the inventory, crafting recipes appear that can fit into the player's 2×2 inventory crafting grid.

JSON format

This feature is exclusive to Java Edition.
 

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: blocks and misc. Defaults to misc.
    • [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.

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.

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, and redstone. Defaults to misc.
    • [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.
      • [String][NBT List / JSON Array] (A key): An item that corresponds to this key. 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. Falls back to 1 if the field is absent.
      • [NBT Compound / JSON Object] components: Optional. Additional information about the item. See item components.

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, and redstone. Defaults to misc.
    • [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.
      • [String][NBT List / JSON Array]: An entry made of a single ingredient or a list of acceptable ingredients. 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.

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, and redstone. Defaults to misc.
    • [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.

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, 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_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_star
  • crafting_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, and redstone. Defaults to misc.

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, and misc. Defaults to misc.
    • [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.

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.

The resulting item copies the components of the base item.

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.

Adds NBT Tags for the trim to the base item.

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 to food.
    • [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.

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.

History

Java Edition
1.1217w13aIntroduced the recipe system for most crafting recipes.
17w16aAdded 'group' key to the recipe json format.
1.1317w47aRemoved 'data' key from the recipe json format.
17w48aCustom 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.
17w49aAdded 'tag' key to the recipe json format.
18w06aSmelting recipes now use the recipe system.
Added smelting to type.
Added a string result.
Added experience.
Added cookingtime.
1.1418w43aAdded a recipe type crafting_special_suspiciousstew.
18w48aRemoved these 2 recipe types.
18w50aAdded recipe types blasting and smoking.
19w02aAdded a recipe type campfire_cooking.
19w04aAdded a recipe type stonecutting.
1.14.3pre3Re-added the recipe type crafting_special_repairitem.
1.16pre1Added the recipe type smithing.
1.18.1?Result count is mandatory in this version.
1.19.322w42aRecipe book categories are now defined for each recipe individually in the default datapack.
1.19.4
Experiment
Update 1.20
23w04aRemoved the recipe serializer smithing and replaced it with smithing_transform, and smithing_trim.
23w07aAdded a new recipe serializer crafting_decorated_pot for the new decorated pot recipe.
Added show_notification field to recipes.
1.20Pre-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.524w10aCan now specify item component.
1.21.224w33aThe 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).
24w38aThe 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.525w02aThe crafting_transmute result field now supports specifying a count and a components patch to apply to the result.
25w04asmithing_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.0beta 1.12.0.2Introduced the recipe system for most crafting recipes.
1.19.40Preview 1.19.40.22Added tag key to the recipe JSON format.
1.20.10Preview 1.20.10.20Added 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

Navigation