Item & equipment registries

Data-driven registries that define what items are and how they can be enchanted, trimmed and decorated.

Overview

📌 Note

Each field table below is inferred from every vanilla definition in the game data rather than transcribed, so “required” means the field appears in all vanilla entries and a fraction means it is optional in practice. Examples are real vanilla files. Regenerate with tools/registry_pages.py.

This page documents 8 registries. For the complete list of ids in every registry see Every registry; for the component system these often plug into see Item data components.

enchantment 1.21+

A full enchantment definition: which items it applies to, its weight, level curve, cost and the effects it grants. Enchantments became fully data-driven in 1.21 - you can add, retune or remove them without a mod.

The enchantment registry itself is present as far back as 1.14 (the oldest version sampled, so it may be older still); the version chip above is when it became data-pack writable. Measured from game data — see Registry version matrix.

Vanilla ships 43 enchantment definitions. Files live at data/<namespace>/enchantment/<name>.json.

Fields

FieldTypePresence in vanilla
anvil_costintegerrequired e.g. 4
descriptionobjectrequired
max_costobjectrequired
max_levelintegerrequired e.g. 1
min_costobjectrequired
slotslistrequired
supported_itemsstringrequired e.g. #minecraft:enchantable/head_armor
weightintegerrequired e.g. 2
effectsobject42/43 entries
exclusive_setstring18/43 entries e.g. #minecraft:exclusive_set/damage
primary_itemsstring5/43 entries e.g. #minecraft:enchantable/melee_weapon

Vanilla example

data/minecraft/enchantment/aqua_affinity.json

{
  "anvil_cost": 4,
  "description": {
    "translate": "enchantment.minecraft.aqua_affinity"
  },
  "effects": {
    "minecraft:attributes": [
      {
        "amount": {
          "type": "minecraft:linear",
          "base": 4.0,
          "per_level_above_first": 4.0
        },
        "attribute": "minecraft:submerged_mining_speed",
        "id": "minecraft:enchantment.aqua_affinity",
        "operation": "add_multiplied_total"
      }
    ]
  },
  "max_cost": {
    "base": 41,
    "per_level_above_first": 0
  },
  "max_level": 1,
  "min_cost": {
    "base": 1,
    "per_level_above_first": 0
  },
  "slots": [
    "head"
  ],
  "supported_items": "#minecraft:enchantable/head_armor",
  "weight": 2
}

enchantment_provider 1.21+

A rule for handing out enchantments, used by mob equipment and trades. Controls how randomly-enchanted gear is rolled, including trade rebalancing.

Confirmed against game data: the registry first appears in 1.21. See Registry version matrix.

Vanilla ships 7 enchantment_provider definitions. Files live at data/<namespace>/enchantment_provider/<name>.json.

Fields

FieldTypePresence in vanilla
typestringrequired e.g. minecraft:single
enchantmentstring6/7 entries e.g. minecraft:silk_touch
levelinteger6/7 entries e.g. 1
enchantmentsstring1/7 entries e.g. #minecraft:on_mob_spawn_equipment
max_cost_spaninteger1/7 entries e.g. 17
min_costinteger1/7 entries e.g. 5

Vanilla example

data/minecraft/enchantment_provider/enderman_loot_drop.json

{
  "type": "minecraft:single",
  "enchantment": "minecraft:silk_touch",
  "level": 1
}

trim_material 1.20+

An armour-trim material: its ingredient, colour palette and description. Half of the armour-trim system; the other half is the pattern.

Confirmed against game data: the registry first appears in 1.20. See Registry version matrix.

Vanilla ships 11 trim_material definitions. Files live at data/<namespace>/trim_material/<name>.json.

Fields

FieldTypePresence in vanilla
descriptionobjectrequired
palette_idstringrequired e.g. minecraft:trim/amethyst

Vanilla example

data/minecraft/trim_material/amethyst.json

{
  "description": {
    "color": "#9A5CC6",
    "translate": "trim_material.minecraft.amethyst"
  },
  "palette_id": "minecraft:trim/amethyst"
}

trim_pattern 1.20+

An armour-trim pattern: its template item, asset id and description. Custom trims need one of each, plus resource-pack assets.

Confirmed against game data: the registry first appears in 1.20. See Registry version matrix.

Vanilla ships 18 trim_pattern definitions. Files live at data/<namespace>/trim_pattern/<name>.json.

Fields

FieldTypePresence in vanilla
asset_idstringrequired e.g. minecraft:bolt
decalbooleanrequired e.g. False
descriptionobjectrequired

Vanilla example

data/minecraft/trim_pattern/bolt.json

{
  "asset_id": "minecraft:bolt",
  "decal": false,
  "description": {
    "translate": "trim_pattern.minecraft.bolt"
  }
}

banner_pattern 1.20.5+

A banner pattern and its translation key. Needed for custom banners and for the provides_banner_patterns component.

The banner_pattern registry itself is present as far back as 1.19; the version chip above is when it became data-pack writable. Measured from game data — see Registry version matrix.

Vanilla ships 43 banner_pattern definitions. Files live at data/<namespace>/banner_pattern/<name>.json.

Fields

FieldTypePresence in vanilla
asset_idstringrequired e.g. minecraft:base
translation_keystringrequired e.g. block.minecraft.banner.base

Vanilla example

data/minecraft/banner_pattern/base.json

{
  "asset_id": "minecraft:base",
  "translation_key": "block.minecraft.banner.base"
}

decorated_pot_pattern 26.3+

A sherd pattern used on decorated pots. The plural decorated_pot_patterns is in the registry list from 1.19.4; it was renamed to the singular form in 1.21, and vanilla first ships pattern files in 26.3. Pairs with the pot_decorations component.

The decorated_pot_pattern registry itself is present as far back as 1.21; the version chip above is when it became data-pack writable. Measured from game data — see Registry version matrix.

Vanilla ships 23 decorated_pot_pattern definitions. Files live at data/<namespace>/decorated_pot_pattern/<name>.json.

Fields

FieldTypePresence in vanilla
asset_idstringrequired e.g. minecraft:angler_pottery_pattern

Vanilla example

data/minecraft/decorated_pot_pattern/angler.json

{
  "asset_id": "minecraft:angler_pottery_pattern"
}

instrument 1.21.2+

A goat-horn instrument: its sound, use duration and range. Custom horns are a cheap way to give players a signalling item.

The instrument registry itself is present as far back as 1.19; the version chip above is when it became data-pack writable. Measured from game data — see Registry version matrix.

Vanilla ships 8 instrument definitions. Files live at data/<namespace>/instrument/<name>.json.

Fields

FieldTypePresence in vanilla
descriptionobjectrequired
rangefloatrequired e.g. 256.0
sound_eventstringrequired e.g. minecraft:item.goat_horn.sound.4
use_durationfloatrequired e.g. 7.0

Vanilla example

data/minecraft/instrument/admire_goat_horn.json

{
  "description": {
    "translate": "instrument.minecraft.admire_goat_horn"
  },
  "range": 256.0,
  "sound_event": "minecraft:item.goat_horn.sound.4",
  "use_duration": 7.0
}

jukebox_song 1.21+

A music disc entry: the sound event, description, length and comparator output. Adding a disc is now a data-pack file plus a sound, not a mod.

Confirmed against game data: the registry first appears in 1.21. See Registry version matrix.

Vanilla ships 22 jukebox_song definitions. Files live at data/<namespace>/jukebox_song/<name>.json.

Fields

FieldTypePresence in vanilla
comparator_outputintegerrequired e.g. 11
descriptionobjectrequired
length_in_secondsfloatrequired e.g. 71.0
sound_eventstringrequired e.g. minecraft:music_disc.11

Vanilla example

data/minecraft/jukebox_song/11.json

{
  "comparator_output": 11,
  "description": {
    "translate": "jukebox_song.minecraft.11"
  },
  "length_in_seconds": 71.0,
  "sound_event": "minecraft:music_disc.11"
}

Sources