Item & equipment registries
Data-driven registries that define what items are and how they can be enchanted, trimmed and decorated.
Overview
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
| Field | Type | Presence in vanilla |
|---|---|---|
anvil_cost | integer | required e.g. 4 |
description | object | required |
max_cost | object | required |
max_level | integer | required e.g. 1 |
min_cost | object | required |
slots | list | required |
supported_items | string | required e.g. #minecraft:enchantable/head_armor |
weight | integer | required e.g. 2 |
effects | object | 42/43 entries |
exclusive_set | string | 18/43 entries e.g. #minecraft:exclusive_set/damage |
primary_items | string | 5/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
| Field | Type | Presence in vanilla |
|---|---|---|
type | string | required e.g. minecraft:single |
enchantment | string | 6/7 entries e.g. minecraft:silk_touch |
level | integer | 6/7 entries e.g. 1 |
enchantments | string | 1/7 entries e.g. #minecraft:on_mob_spawn_equipment |
max_cost_span | integer | 1/7 entries e.g. 17 |
min_cost | integer | 1/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
| Field | Type | Presence in vanilla |
|---|---|---|
description | object | required |
palette_id | string | required 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
| Field | Type | Presence in vanilla |
|---|---|---|
asset_id | string | required e.g. minecraft:bolt |
decal | boolean | required e.g. False |
description | object | required |
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
| Field | Type | Presence in vanilla |
|---|---|---|
asset_id | string | required e.g. minecraft:base |
translation_key | string | required 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
| Field | Type | Presence in vanilla |
|---|---|---|
asset_id | string | required 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
| Field | Type | Presence in vanilla |
|---|---|---|
description | object | required |
range | float | required e.g. 256.0 |
sound_event | string | required e.g. minecraft:item.goat_horn.sound.4 |
use_duration | float | required 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
| Field | Type | Presence in vanilla |
|---|---|---|
comparator_output | integer | required e.g. 11 |
description | object | required |
length_in_seconds | float | required e.g. 71.0 |
sound_event | string | required 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"
}