Basic Recipes

Introduction

How to Make a Recipe File

First go to <your server location>\plugins\RecipeManager\recipes folder and create a text file (.txt extension).

Then you can open that file with a text editor and start writing recipes.

Recipe Files

You can have as many recipe files and recipes per file as you want. You can also create folders for organization.

Comments and Spacing

Default supported comments: //, /* */ and #

// This is a comment
#  This is also a comment
/* Multi line comments
   are also supported
*/

The text in recipe files can be any letter case and can have any amount of spaces, tabs and new lines.

// Recipe files support any casing
craft
cobblestone
= cobblestone

// Add any amount of new lines between recipes

CRAFT
COBBLESTONE
= COBBLESTONE

  // Space/Tabs at the beginning are fine as well
  CrAfT
  cobbleSTONE
  = COBBLEstone

  // Spacing does not need to be consistent
  craft
    cobblestone
      = cobblestone

Required and Optional

Required fields are surrounded by < >
Optional fields are surrounded by [ ]

craft [recipe name] // A recipe name is optional and can be skipped
<material> // This material is required
= <material> // The result material is also required

// Do not type <, >, [ or ]
craft [my recipe]
<cobblestone>
= <cobblestone>

// Correct way to write the above recipe
// Note that characters outside of <, >, [ and ] are constants and never change
craft my recipe // 'craft' is a constant here
cobblestone
= cobblestone

Special Characters

NOTE: If you are having issues with special characters not showing up:
- Make sure that your recipe files are saved as UTF-8 and
- Include the following flag: " -Dfile.encoding=UTF-8" in your startup script.

Defining Items

Item / Ingredient formats:

material // Material name or alias. See name index.html and 'item aliases.yml'.

// Material and data
// 'data' is the damage/durability of an item if it has any (tools, weapons, etc.) or a data name defined in 'item aliases.yml', defaults to 0
material:data

// Material Choice (Multiple material options for a single slot)
material[, ..]
// '..' means that the format can be repeated as seen below
material, material2, material3

Tags and aliases:

// Material can also be defined by tags and aliases, which act as a material choice without having to write all materials
// Tags (see 'name index.html')
tag:tagname
t:tagname

// Aliases are RecipeManager's equivalent to tags, but you can define them yourself in 'choice aliases.yml'
alias:aliasname
a:aliasname

Tag Example:

// tag:sand is equivalent to 'sand, red_sand'
craft
tag:sand
= cobblestone
Sand
Red Sand
Shaped Workbench
Cobblestone

Result formats:

// Simple material
= material

// Material and data
// 'data' is the damage/durability of an item if it has any (tools, weapons, etc.) or a data name defined in 'item aliases.yml', defaults to 0
= material:data

// Material with data and stack amount
// 'amount' is stack amount, defaults to 1
= material:data:amount

Flags

Flags are how you can modify an ingredient or result. See advanced recipes.html and recipe flags.html for more examples.

craft
cobblestone
= cobblestone
@ingredientcondition cobblestone | name Old Cobble
@name Test Cobblestone
@lore Test Lore
@lore <red>Now in red
Old Cobble
Shaped Workbench
Test Cobblestone
Test Lore
Now in red

Multi-results

Certain recipes support having multiple results.

Only one result type can be crafted at one time, therefore each result has a set chance of success.

Pattern Format
Simple Format
craft
pattern aaa | aba | aaa
a dirt
b grass_block
= wheat_seeds
= pumpkin_seeds
= melon_seeds
= beetroot_seeds
craft
dirt + dirt + dirt
dirt + grass_block + dirt
dirt + dirt + dirt
= wheat_seeds
= pumpkin_seeds
= melon_seeds
= beetroot_seeds
Dirt
Dirt
Dirt
Dirt
Grass Block
Dirt
Dirt
Dirt
Dirt
Shaped Workbench
25%
Wheat Seeds
25%
Pumpkin Seeds
25%
Melon Seeds
25%
Beetroot Seeds

Additionally you can set 'air' as result to make the recipe fail by that chance, which gives no result item but still decreases ingredients.

Pattern Format
Simple Format
craft
pattern aaa | aba | aaa
a t:sand
b air
= 40% bone
= 10% quartz
= .1% diamond
= air
craft
t:sand + t:sand + t:sand
t:sand + air + t:sand
t:sand + t:sand + t:sand
= 40% bone
= 10% quartz
= .1% diamond
= air
Sand
Red Sand
Sand
Red Sand
Sand
Red Sand
Sand
Red Sand
Sand
Red Sand
Sand
Red Sand
Sand
Red Sand
Sand
Red Sand
Shaped Workbench
40%
Bone
10%
Quartz
0.1%
Diamond
49.9%

Chances must be a total of 100%, if you do not define the chance for one or more items the chance will be evenly calculated for the remaining chance up to 100%.

The options for this can be extended even more with flags, be sure to see the advanced recipes.html file after reading this one.

Recipe Names

Recipe names are used by recipe books.

If you define a custom name it must be unique and between 3 and 32 characters long (18 recommended).

The custom name will be displayed in the books if defined, otherwise it will use the result.

In the 'books/*.yml' files the recipe names (custom or auto-generated) are used to add and sort recipes in the books.

More about recipe books...

Recipe Syntaxes

Craft/Shaped Workbench Recipe

Pattern Format
Simple Format
CRAFT [recipe name]
[@ recipe flags]
[group name]
pattern abc | def | ghi
<letter> <material:[data][, ...]>
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]
[... more results]

The [group name] defines the knowledge book group this recipe belongs to.

The pattern line defines the shape of the recipe grid.

  • Each row is separated by a pipe character: |
  • Each letter represent one or more ingredients that are defined in the ingredients section.
  • Letters can be in any order and can be any valid character a-z
  • Valid examples:
    • abc | def | ghi = full 3x3 grid
    • a | b | c = three tall column of ingredients
    • z | q | r = same as above, but with different letters
    • ab = two wide recipe
    • aaa | bbb | ccc = 3x3 recipe with each row having the same ingredients

<letter> must be a letter that is defined in the pattern line above

Ingredients can be defined by a material with an optional data.

[@ ingredient flags] supports any flags that directly modify an ingredient. This allows for customization of ingredients.

Multiple ingredients can be defined in two ways:

  1. Adding a comma after the first material:data, such as "iron_sword:2, cobblestone"
  2. Adding another declaration of <letter> material:data, allowing different ingredients, including flag metadata to be used for the same recipe.

 

As for the result the 'chance%' part is optional and if defined then 'chance' must be a number between 0.0 and 100.0 (yes, accepts decimals)

The '[...]' part means that you can repeat the previous statement, so you can define more than one result and the recipe will randomly pick one of the results.

You can avoid defining the chance number or use *% even to allow it to be calculated.

You can also add a chance of failure to the recipe by using fail, air or 0 as one of the results.

Examples:
// this is just a comment by the way
// a hoe craftable in player inventory
craft
pattern aa | b
a oak_planks
b stick
= wood_hoe
Oak Planks
Oak Planks
Stick
Shaped Workbench
Wooden Hoe
// fragile bowl named recipe
craft   Bowl craft attempt
pattern aba | ca
a stick
b oak_planks
c air
= bowl // undefined chance, will be calculated
= 25% fail // 'fail' is alias for 'air'
Stick
Oak Planks
Stick
Stick
Shaped Workbench
75%
Bowl
25%
// Multiple ingredients that can match. Each ingredient can have as many material choices as you'd like,
// as long as the combination of ingredients is still unique to each recipe
craft
pattern ab
a cobblestone, stone
b dirt, grass_block
= light_gray_terracotta
Cobblestone
Stone
Dirt
Grass Block
Shaped Workbench
Light Gray Terracotta
CRAFT [recipe name]
[group name]
<material[, ...]> + [material[, ...]] + [material[, ...]]
[material[, ...]] + [material[, ...]] + [material[, ...]]
[material[, ...]] + [material[, ...]] + [material[, ...]]
= [chance]% <material:[data]:[amount]>
[...]

The [group name] defines the knowledge book group this recipe belongs to.

The ingredients are in the shape of the recipe grid, it will also work if horizontally mirrored.

NOTE: The recipe is exactly the same if you place the ingredients reversed horizontally, it's how the game works.

Number of ingredients is optional, you can specify only 1 or all 9 of them if you want.

Specifying a square of 4 or smaller makes it work in player's inventory crafting.

The '[, ...]' part means that you can add multiple ingredients as matches for that grid item.

 

As for the result the 'chance%' part is optional and if defined then 'chance' must be a number between 0.0 and 100.0 (yes, accepts decimals)

The '[...]' part means that you can repeat the previous statement, so you can define more than one result and the recipe will randomly pick one of the results.

You can avoid defining the chance number or use *% even to allow it to be calculated.

You can also add a chance of failure to the recipe by using fail, air or 0 as one of the results.

Examples:
// this is just a comment by the way
// a hoe craftable in player inventory
craft
oak_planks + oak_planks
stick
= wood_hoe
Oak Planks
Oak Planks
Stick
Shaped Workbench
Wooden Hoe
// fragile bowl named recipe
craft   Bowl craft attempt
stick + oak_planks + stick
air + stick
= bowl // undefined chance, will be calculated
= 25% fail // 'fail' is alias for 'air'
Stick
Oak Planks
Stick
Stick
Shaped Workbench
75%
Bowl
25%
// Multiple ingredients that can match. Each ingredient can have as many material choices as you'd like,
// as long as the combination of ingredients is still unique to each recipe
craft
cobblestone,stone + dirt,grass_block
= light_gray_terracotta
Cobblestone
Stone
Dirt
Grass Block
Shaped Workbench
Light Gray Terracotta

Combine/Shapeless Workbench Recipe

Pattern Format
Simple Format
COMBINE [recipe name]
[@ recipe flags]
[group name]
pattern abcdefghi
<letter> <material:[data][, ...]>
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]
[... more results]

Unlike shaped recipe, this recipe's ingredients can be placed in any order anywhere on the grid.

The [group name] defines the knowledge book group this recipe belongs to.

The pattern line defines the pattern of the recipe grid, where similar characters means an item is used more than once.

  • Each letter represent one or more ingredients that are defined in the ingredients section.
  • Up to 9 letters are supported to fill a 3x3 grid
  • Letters can be in any order and can be any valid character a-z
  • Valid examples:
    • abcdefghi = full 3x3 grid
    • abc = three ingredients
    • zqr = same as above, but with different letters
    • ab = two ingredients
    • aaabbbccc = 3x3 recipe with three different types of ingredients

This recipe also supports multiple results just like shaped recipe, read above for information.

Examples:
// 3 sulphur + 2 sand = 2 TNT
combine
pattern aaabb
a sulphur
b sand
= TNT:0:2
Gunpowder
Gunpowder
Gunpowder
Sand
Sand
Shapeless Workbench
2
TNT
// smash 2 diamonds and pray for something good
combine Smash 2 diamonds and pray
pattern aa
a diamond
= 0.1% diamond:0:32
= coal:0:4 // let it calculate the chance evenly for this and the next two
= iron_ingot
= gold_ingot
= 75% fail
Diamond
Diamond
Shapeless Workbench
32
0.1%
Diamond
4
8.3%
Coal
8.3%
Iron Ingot
8.3%
Gold Ingot
75%
COMBINE [recipe name]
[group name]
<material[, ...]:[amount]> + [...]
= [chance]% <material:[data]:[amount]>
[...]

Unlike shaped recipe, this recipe's ingredients can be placed in any order anywhere on the grid.

The [group name] defines the knowledge book group this recipe belongs to.

You can specify up to 9 items added up.

The optional amount can only be added at the end of a list of materials

EXAMPLE: cobblestone,stone:5 would be valid and expect the recipe to have 5 ingredients of either cobblestone OR stone

This recipe also supports multiple results just like shaped recipe, read above for information.

Examples:
// 3 sulphur + 2 sand = 2 TNT
combine
sulphur:0:3 + sand + sand
= TNT:0:2
Gunpowder
Gunpowder
Gunpowder
Sand
Sand
Shapeless Workbench
2
TNT
// smash 2 diamonds and pray for something good
combine Smash 2 diamonds and pray
diamond + diamond
= 0.1% diamond:0:32
= coal:0:4 // let it calculate the chance evenly for this and the next two
= iron_ingot
= gold_ingot
= 75% fail
Diamond
Diamond
Shapeless Workbench
32
0.1%
Diamond
4
8.3%
Coal
8.3%
Iron Ingot
8.3%
Gold Ingot
75%

Smelt/Furnace Recipe

SMELT [recipe name]
[@ recipe flags]
[group name]
[xp amount]
<material:[data][, ...]> % [time]
[@ ingredient flags]
[... more ingredients]
& [material:[data]]
= [chance]% <material:[data]:[amount]>
[@ result flags]
// one result max!

The [group name] defines the knowledge book group this recipe belongs to.

The [xp amount] defines the amount of xp given for the furnace recipe. Can be a decimal value. Examples ("xp 2", "xp .5", "xp 1.1"). Defaults to 0.

The first '<material[, ...]>' is the ingredient.

(optional) '% [time]' can be the time to smelt, 'time' should be a 'instant', a float number or a range of float numbers separated by a dash. Default time: 10

(optional) '& [material:[data]]' can be an item to act as the ONLY fuel for this recipe (no need to have a fuel recipe for the item!)

And '= [chance]% <material:[data]:[amount]>' is the result with optional success chance but this recipe type only supports 1 result!

Examples:
// smelt gold_ingot to ore
smelt
gold_ingot
= gold_ore
Gold Ingot
Furnace
10s
Gold Ore
// glowstone and bottle as fuel makes an exp bottle
smelt Exp Bottle Alchemy
glowstone % 20.5-30 // random cook time between 20.5 and 30 seconds
& bottle // fuel
= 25% exp_bottle // 25% chance to get the result, rest 75% will result in nothing
Glowstone
Bottle
Furnace
20.5 - 30s
25%
Bottle of Enchanting
75%

Blasting/Blast Furnace Recipe

BLASTING [recipe name]
[@ recipe flags]
[group name]
[xp amount]
<material[, ...]>:[data] % [time]
[@ ingredient flags]
[... more ingredients]
& [material:[data]]
= [chance]% <material:[data]:[amount]>
[@ result flags]
// one result max!

Works the same as SMELT RECIPES, but for BLAST FURNACES

Default time: 5

See SMELT RECIPE for examples

Smoking/Smoker Recipe

SMOKING [recipe name]
[@ recipe flags]
[group name]
[xp amount]
<material[, ...]>:[data] % [time]
[@ ingredient flags]
[... more ingredients]
& [material:[data]]
= [chance]% <material:[data]:[amount]>
[@ result flags]
// one result max!

Works the same as SMELT RECIPES, but for SMOKERS

Default time: 5

See SMELT RECIPE for examples

Furnace Fuel Recipe

FUEL [recipe name]
<material:data> % <time>
...

Adds a fuel with the specified burn time.

'time' is required and can be a float number or a range of float numbers separated by a dash.

The '...' part means you can specify more than one item, they are all added just like individual fuel recipes.

Example:
FUEL
sulphur % 0.75 // see advanced recipes.html for how to make this EXPLODE!
jackolantern % 20 // 'jackolantern' is alias for 'jack_o_lantern'
Gunpowder
.75s
Jack O' Lantern
20s

Campfire Recipe

CAMPFIRE [recipe name]
[@ recipe flags]
[group name]
[xp amount]
<material[, ...]>:[data] % [time]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

The [group name] defines the knowledge book group this recipe belongs to.

The [xp amount] defines the amount of xp given for the furnace recipe. Can be a decimal value. Examples ("xp 2", "xp .5", "xp 1.1"). Defaults to 0.

The first '<material[, ...]>' is the ingredient.

(optional) '% [time]' can be the time to cook, 'time' should be a 'instant', a float number or a range of float numbers separated by a dash. Default time: 30

NOTE: Due to API limitations, random cook times will only be set random on server start for campfire recipes.

And '= [chance]% <material:[data]:[amount]>' is the result with optional success chance.

Stonecutting/Stonecutter Recipe

STONECUTTING [recipe name]
[group name]
<material[, ...]>:[data]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

The [group name] defines the knowledge book group this recipe belongs to.

The first '<material[, ...]>' is the ingredient.

Multiple recipes can be added with the same ingredient as long as the result is different for each.

Limited Flag support

Compost/Composter Recipe

COMPOST [recipe name]
[@ recipe flags]
<material[, ...]>:[data] % [chance per level] % [levels]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

The first '<material[, ...]>' is the ingredient.

(optional) '% [chance per level]' is the percentage chance that the level will be increased by [levels]. Value can be a float number >0 and <=100. Default is 100.

(optional) '% [levels]' is the levels to add to the composter. Value can be a float number >0 and <=7. Default is 1.

While the composter is being used for a recipe, it will be locked to that recipe (or the same result from another recipe), so no conflicting recipes can be made.

Anvil Recipe

Pattern Format
Simple Format
ANVIL [recipe name]
[@ ingredient flags]
<letter> <material>:[data][, ...] % [experience levels] % [allowrename or true] % [anvil damage chance]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

Anvils have an implied pattern of "ab". You do not need to set a pattern like you would in a craft/combine recipe.

An ingredient with a letter of "a" is the left ingredient.

An ingredient with a letter of "b" is the right ingredient.

(optional) '% [experience levels]' is the experience levels per craft and shown in the anvil.

(optional) '% [allowrename or true]' will enable renaming. Will add an extra experience level to the cost and set the name after all flags. Defaults to false.

(optional) '% [anvil damage chance]' will adjust the chance to damage the anvil on craft. Default is 12. Allowed values from 0-300. Over 100 will damage multiple levels. Ex: 150 will damage 1 level with a 50% chance of damaging a second.

ANVIL [recipe name]
<material[, ...]> + <material[, ...]> % [experience levels] % [allowrename or true] % [anvil damage chance]
= [chance]% <material:[data]:[amount]>

The first '<material[, ...]>' is the left ingredient.

The second '<material[, ...]>' is the right ingredient.

(optional) '% [experience levels]' is the experience levels per craft and shown in the anvil.

(optional) '% [allowrename or true]' will enable renaming. Will add an extra experience level to the cost and set the name after all flags. Defaults to false.

(optional) '% [anvil damage chance]' will adjust the chance to damage the anvil on craft. Default is 12. Allowed values from 0-300. Over 100 will damage multiple levels. Ex: 150 will damage 1 level with a 50% chance of damaging a second.

Grindstone Recipe

Pattern Format
Simple Format
GRINDSTONE [recipe name]
[@ ingredient flags]
<letter> <material>:[data][, ...]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

Grindstones have an implied pattern of "ab". You do not need to set a pattern like you would in a craft/combine recipe.

An ingredient with a letter of "a" is the top ingredient.

An ingredient with a letter of "b" is the bottom ingredient.

GRINDSTONE [recipe name]
<material[, ...]> + <material[, ...]>
= [chance]% <material:[data]:[amount]>

The first '<material[, ...]>' is the top ingredient.

The second '<material[, ...]>' is the bottom ingredient.

Cartography Recipe

Pattern Format
Simple Format
CARTOGRAPHY [recipe name]
[@ ingredient flags]
<letter> <material>:[data][, ...]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

Cartography Tables have an implied pattern of "ab". You do not need to set a pattern like you would in a craft/combine recipe.

An ingredient with a letter of "a" is the top ingredient.

An ingredient with a letter of "b" is the bottom ingredient.

CARTOGRAPHY [recipe name]
<material[, ...]> + <material[, ...]>
= [chance]% <material:[data]:[amount]>

The first '<material[, ...]>' is the top ingredient.

The second '<material[, ...]>' is the bottom ingredient.

Brew/Brewing Stand Recipe

This is an experimental feature. Expect bugs and frequent changes.

Pattern Format
Simple Format
BREW [recipe name]
[@ ingredient flags]
<letter> <material>:[data][, ...]
[@ ingredient flags]
[... more ingredients]
= [chance]% <material:[data]:[amount]>
[@ result flags]

Brewing Stands have an implied pattern of "ab". You do not need to set a pattern like you would in a craft/combine recipe.

An ingredient with a letter of "a" is the main ingredient.

An ingredient with a letter of "b" is the potion.

And '= [chance]% <material:[data]:[amount]>' is the result with optional success chance.

Note: Currently requires a vanilla brewing recipe, but can have customized items.

Example:
brew
a nether_wart
b potion
= stone
@name <red>Test Stone. Please Ignore
@ingredientcondition nether_wart | name &cTest
@ingredientcondition potion | potion type water
BREW [recipe name]
<material:[data]:[amount]> // ingredient
<material:[data]> // potion
= [chance]% <material:[data]:[amount]>
[...]

The first '<material>:[data]' is the ingredient with optional data and amount.

The second '<material>:[data]' is the potion with optional data.

And '= [chance]% <material:[data]:[amount]>' is the result with optional success chance.

Note: Currently requires a vanilla brewing recipe, but can have customized items.

Example:
brew
nether_wart
potion
= stone
@name <red>Test Stone. Please Ignore
@ingredientcondition nether_wart | name &cTest
@ingredientcondition potion | potion type water

For more customization options and examples see advanced recipes.html.

If you don't get these instructions, please stop by Discord and ask for assistance. Please be as descriptive as possible in your questions.