Minecraft Wiki
Advertisement
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 are a way to gradually guide new players into Minecraft by assisting them with the usage of crafting, smelting, and other block and item transformations in-game.

Recipes are data driven and be configured by data packs in Java Edition or add-ons in Bedrock Edition. 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. Cartography table[Java Edition only] and loom recipes cannot currently be controlled.

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. Vanilla survival has multiple advancements that grant recipes, which trigger when for example the player obtains an item required in the recipe.‌[Java Edition only]

Once a recipe has been discovered, it is added to the player's recipe book.‌[Java Edition only] Discovered recipes are stored in the player's  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 /gamerule doLimitedCrafting is set to true.

Recipes appear only if the player is using the recipe book in a block associated to the recipe's type; for example, furnace recipes only show up when the player use 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[]

Custom recipes in the data/(namespace)/recipes folder of a data pack store the recipe data for that world as separate JSON files.

A recipe with ID foo:path/to/file would have its JSON file located at data/foo/recipes/path/to/file.json within a data pack.

Recipe JSON files have different structures dependent on their type, but they all have a  type tag in its root tag.

List of recipe types[]

blasting[]

Represents a recipe in a blast furnace.

  • The root tag.
    • Tags common to all recipes
    • Tags common to all cooking recipes

The default cooking time is 100 ticks, or 5 seconds.

campfire_cooking[]

Represents a recipe in a campfire.

  • The root tag.
    • Tags common to all recipes
    • Tags common to all cooking recipes

The default cooking time is 100 ticks, or 5 seconds, even though all vanilla campfire cooking recipes have a cook time of 600 ticks, or 30 seconds. Campfire recipes do not trigger the recipe_unlocked criteria.

crafting_shaped[]

Represents a shaped crafting recipe in a crafting table.

The key used in the pattern may be any single character except , the space character, which is reserved for empty slots in a recipe.

Custom NBT data tags are not allowed for the recipe's output item.

  • The root tag.
    • Tags common to all recipes
    •  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.
    •  key: All keys used for this shaped crafting recipe.
      •  (A key): The ingredient corresponding to this key.
      •  (A key): The list of ingredients corresponding to this key.
    •  result: The output item of the recipe.
      •  count: Optional. The amount of the item. Falls back to 1 if the field is absent.
      •  item: An item ID.

crafting_shapeless[]

Represents a shapeless crafting recipe in a crafting table.

The ingredients list must have at least one and at most nine entries.

Custom NBT data tags are not allowed for the recipe's output item.

  • The root tag.
    • Tags common to all recipes
    •  ingredients: A list of entries for this shapeless crafting recipe. Must have 1 to 9 entries.
      • : An entry made of a single ingredient.
      • : An entry made of a list of acceptable ingredients.
    •  result: The output item of the recipe.
      •  count: Optional. The amount of the item. Falls back to 1 if the field is absent.
      •  item: An item ID.

crafting_special_*[]

Represents a crafting recipe in a crafting table that is handled with builtin logic instead of being data-driven.

When the "vanilla" data pack is disabled, they can be used to reenable desired builtin crafting recipes.

  • The root tag.
    •  type: A resource location indicating the type of serializer of the recipe.

Unlike most other recipe types, they do not have a "group" field and cannot be displayed in recipe books.

  • armordye
The armor dyeing recipe.
Regular recipes cannot handle multiple dyes.
  • bannerduplicate
The banner copying recipe.
Regular recipes cannot copy NBT data associated to the banner item.
  • 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.
  • 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.
  • firework_star
  • firework_star_fade
The firework star crafting and its fade addition recipes.
Regular recipes cannot handle inputs flexibly or add NBT data to the firework star.
  • mapcloning
The map copying recipe.
Regular recipes cannot copy NBT data associated to the map item.
  • mapextending
The map zooming recipe.
Regular recipes cannot update NBT data associated to the map item.
  • repairitem
The item repair recipe.
Regular recipes cannot update damage data associated to the tool item.
  • shielddecoration
The shield pattern application recipe.
Regular recipes cannot add NBT data from a banner item to a shield item.
  • shulkerboxcoloring
The shulker box dyeing recipe.
Regular recipes cannot copy NBT data from a shulker box item to a dyed shulker box item.
  • tippedarrow
The tipped arrow recipe.
Regular recipes cannot copy NBT data from a lingering potion item to a tipped arrow item.
  • suspiciousstew
The suspicious stew recipe.
Regular recipes cannot determine the status effect from the type of flower given.

smelting[]

Represents a recipe in a furnace.

  • The root tag.
    • Tags common to all recipes
    • Tags common to all cooking recipes

The default cooking time is 200 ticks, or 10 seconds.

smithing[]

Represents a recipe in a smithing table.

  • The root tag.
    • Tags common to all recipes
    •  base Ingredient specifying an item to be upgraded.
    •  addition Ingredient specifying an item to be added
    •  result Item specifying the resulting upgraded item.
    •  template Ingredient specifying an item to act as the template.

The resulting item copies the NBT tags of the base item.

smoking[]

Represents a recipe in a smoker.

  • The root tag.
    • Tags common to all recipes
    • Tags common to all cooking recipes

The default cooking time is 100 ticks, or 5 seconds.

stonecutting[]

Represents a recipe in a stonecutter.

  • The root tag.
    • Tags common to all recipes
    •  ingredient: The ingredient for the recipe.
    •  ingredient: The list of ingredients for the recipe.
    •  result: An item ID. The output item of the recipe.
    •  count: The amount of the output item.

Unlike the  count field in shaped and shapeless crafting recipes, this  count field here is required.

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.20
(Experimental)
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 will match 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.
Bedrock Edition
1.12.0beta 1.12.0.2Introduced the recipe system for most crafting recipes.
1.19.40beta 1.19.40.22Added tag key to the recipe JSON format.
1.20.10beta 1.20.10.20Added unlock field to the recipe JSON format.

Issues[]

Issues relating to "Recipe" are maintained on the bug tracker. Report issues there.

References[]


Advertisement