resourcepack.ai
DOCS

Content

Recipes

Recipes let players make your custom items with the game's own crafting table, furnaces, stonecutter, smithing table, brewing stand and anvil.

# recipes/gems.yml
ruby_block:
  type: shaped           # the default
  result: mypack:ruby_block   # a content ID or a vanilla material
  amount: 1              # how many it makes
  pattern: ["RRR", "RRR", "RRR"]
  keys:
    R: mypack:ruby       # a space in the pattern is an empty slot

Put recipes in a recipes/ folder of your content folder (here mypack) and run /rp reload. /rp recipes lists what loaded.

Types#

typeWhat it is
shapedA pattern and a key. The default
shapelessAn ingredients list, in any arrangement
smeltingA furnace
blasting · smoking · campfireThe three other cookers
stonecuttingOne in, several out
smithingA template, a base and an addition make the result
smithing_trimA template, a base and an addition trim the base
brewingA base in the bottle slots and an ingredient on top. Needs Paper
anvilA base and an optional addition make a result, or repair the base
sapphire_from_lapis:
  type: smelting
  result: mypack:sapphire
  ingredient: LAPIS_LAZULI
  experience: 0.5
  time: 100              # ticks; defaults to vanilla's time for that cooker
 
dust:
  type: shapeless
  result: mypack:dust
  ingredients: [mypack:ruby, FLINT]

Exact and loose ingredients#

A content ID matches that item and nothing else

An ordinary diamond won't fill a slot that calls for mypack:ruby, even if the ruby is a diamond underneath. A vanilla material matches loosely, as in vanilla: any LAPIS_LAZULI will do.

So your custom items can't be crafted around, and vanilla ingredients still behave like vanilla.

A vanilla potion is the material, a slash and the potion type: potion/awkward, splash_potion/healing. minecraft:diamond means the material, the same as DIAMOND.

Smithing#

ruby_sword:
  type: smithing
  template: NETHERITE_UPGRADE_SMITHING_TEMPLATE
  base: mypack:obsidian_sword
  addition: mypack:ruby
  result: mypack:ruby_sword
  copy-data: true        # the default
 
ruby_trim:
  type: smithing_trim    # no result: the base comes out trimmed
  template: mypack:ruby_template
  base: mypack:ruby_chestplate
  addition: AMETHYST_SHARD
  pattern: minecraft:silence

The base of an upgrade is usually something that has been used, so a worn or enchanted mypack:obsidian_sword still counts. The result is always your item, and with copy-data on it keeps the base's enchantments, wear and trim, the way a netherite upgrade does.

Versions

Before 1.20 the smithing table has two slots, so no template is asked for and trim recipes need 1.20. From 1.21.5 a trim recipe needs a pattern, unless its template is a vanilla trim template, which brings its own. Before 1.21.5 the game takes the pattern from the template, so only vanilla trim templates trim anything.

Brewing#

ruby_tonic:
  type: brewing
  base: potion/awkward   # the bottle slots
  ingredient: mypack:ruby_dust
  result: mypack:ruby_tonic

Brewing recipes need Paper, which adds them to the game's own brewing stand so they brew like vanilla potions. On Spigot they are skipped, and the console says how many.

Anvils#

sharpen:
  type: anvil
  base: mypack:dull_blade
  addition: mypack:whetstone  # optional: without it, the right slot must be empty
  addition-amount: 1
  result: mypack:sharp_blade
  cost: 3                # levels; 1 if left out
 
mend_ruby_sword:
  type: anvil
  base: mypack:ruby_sword
  addition: mypack:ruby
  repair: 25%            # per ruby, or a number of durability points

The game has no anvil recipes, so RP Engine runs these itself. Each use costs cost levels, one of the base and addition-amount of the addition, and wears the anvil as normal. A repair mends by repair for each addition-amount, using as many as it takes, like a vanilla material repair. Take the result with the mouse: number keys and dropping don't work for anvil recipes.

Vanilla recipes#

A custom item is a vanilla item underneath, but the game's own recipes don't treat it as one: a tomato made from paper won't make a book (at a crafting table or in a crafter), cook, go through a stonecutter or repair a tool on an anvil. A custom item can still be dyed, upgraded to netherite or decorated like its material, because what comes out is still that item.

To use a custom item in a recipe, name it in one of your own. To let one item count as its material in vanilla recipes too, say so on the item:

plain_stick:
  material: STICK
  vanilla-recipes: true   # still a stick to vanilla's recipes

items.vanilla-recipes: true in the config does the same for every item.

Replacing or removing a vanilla recipe#

To swap one of the game's recipes for your own, add replaces: with its ID:

better_sticks:
  type: shapeless
  result: STICK
  amount: 8
  ingredients: [OAK_PLANKS]
  replaces: minecraft:stick   # or a list; a bare name means minecraft:

While your recipe is loaded, the vanilla one is gone from the server. Delete yours and reload, and the vanilla one comes back. Without replaces:, a recipe with the same grid as a vanilla one doesn't win: both match and the game picks one. Any recipe can replace any other, so a crafting recipe can stand in for a smelting one.

The ID is the one /recipe give lists, which isn't always the item's name: iron from raw iron in a furnace is minecraft:iron_ingot_from_smelting_raw_iron. A wrong ID shows a warning when the pack loads. If your recipe fails to load, the vanilla one is left alone.

RP Engine can only take a vanilla recipe away by replacing it with one of yours: there is no option that just removes one. To remove a recipe outright, use a datapack or a plugin made for that.

Naming#

A recipe ID is not a content ID, so a recipe can be called ruby_block while an item has the same name. Two recipes can't share a name.

Recipes are cleared and re-added on every reload, so a recipe you delete stops working without a restart.