Minecraft 26.1.2 transmits a number of dynamic registries from the server to the client during the Configuration state. These registries describe data-driven content that the client must know about (biomes, dimension types, chat formatting, damage types, mob variants, paintings, enchantments, instruments, jukebox songs, dialogs, etc.) and that the server may have customized via data packs.
This page specifies how the dynamic registry sync works on the wire, the bootstrap "Known Packs" handshake, the list of registries that participate, and the NBT shape of the most important entries.
Dynamic registries are synchronized after Login and before Play, while the connection is in the Configuration state. The server sends one Registry Data packet per registry to be synchronized. Each packet carries:
| Field | Type | Notes |
|---|---|---|
| Registry ID | Identifier | The registry being transmitted (e.g. minecraft:worldgen/biome). |
| Entries | Array of ([Identifier](./data-types#identifier), Optional [NBT](./data-types#nbt)) |
Every entry the client should add to that registry. |
Each entry contains:
| Field | Type | Notes |
|---|---|---|
| Entry ID | Identifier | The registry-key for the entry (e.g. minecraft:plains). |
| Has data | Boolean | Whether the NBT payload follows. |
| Data | NBT (network NBT, no name) | Only present when Has data = true. |
If Has data is false, the client uses its own built-in vanilla copy of that entry as supplied by the matching known pack. If Has data is true, the supplied NBT replaces (or defines) the entry.
The order of Registry Data packets is significant: they must be received before Update Tags (see ./tags) for the same registries, and before Finish Configuration.
Before sending any Registry Data, the server sends Select Known Packs (clientbound). The client replies with Select Known Packs (serverbound) listing the data packs it already knows. A pack is identified by:
| Field | Type | Notes |
|---|---|---|
| Namespace | String | Pack namespace; vanilla uses "minecraft". |
| ID | String | Pack identifier (e.g. "core"). |
| Version | String | Pack version, typically the game version (e.g. "1.21.10"). |
For every entry in a registry that comes from a pack the client claims to have, the server is allowed to omit the NBT payload (Has data = false) and rely on the client to materialize the entry locally. In practice this means a vanilla client that reports the minecraft:core pack only receives NBT for non-vanilla entries, drastically reducing bandwidth at login.
If the client claims no packs, every entry must be sent with full NBT.
The set of registries that must be sent (when their entries are not entirely covered by known packs) is:
minecraft:worldgen/biomeminecraft:chat_typeminecraft:trim_patternminecraft:trim_materialminecraft:wolf_variantminecraft:wolf_sound_variantminecraft:pig_variantminecraft:pig_sound_variantminecraft:frog_variantminecraft:cat_variantminecraft:cat_sound_variantminecraft:cow_variantminecraft:cow_sound_variantminecraft:chicken_variantminecraft:chicken_sound_variantminecraft:zombie_nautilus_variantminecraft:painting_variantminecraft:dimension_typeminecraft:damage_typeminecraft:banner_patternminecraft:enchantmentminecraft:jukebox_songminecraft:instrumentminecraft:test_environmentminecraft:test_instanceminecraft:dialogminecraft:world_clockminecraft:timelineOther registries (blocks, items, entity types, fluids, particles, sound events, recipes, etc.) are not transmitted because their IDs are part of the protocol contract for a given version and are baked into the client.
The NBT schema is the network codec of each registry's element (which can differ from its on-disk codec; some fields are stripped because they are server-only).
minecraft:worldgen/biome| Field | Type | Notes |
|---|---|---|
attributes |
Compound (optional) | Environment attribute overrides; defaults to empty. |
effects |
Compound | Visual/audio effects: fog_color, water_color, water_fog_color, sky_color, optional foliage_color, grass_color, optional grass_color_modifier, optional particle, optional ambient_sound, optional mood_sound, optional additions_sound, optional music. |
The non-network (data-pack) codec also has has_precipitation, temperature, temperature_modifier, downfall, spawners, spawn_costs, carvers, and features, but these are not sent over the wire.
minecraft:dimension_type| Field | Type | Notes |
|---|---|---|
has_fixed_time |
Boolean (optional, default false) | If true, time is fixed at fixed_time. |
fixed_time |
Long (optional) | Daytime tick when has_fixed_time is true. |
has_skylight |
Boolean | Whether the dimension has skylight. |
has_ceiling |
Boolean | Whether the dimension has a solid ceiling (Nether). |
has_ender_dragon_fight |
Boolean | Whether to spawn the dragon fight. |
coordinate_scale |
Double | Coordinate scaling factor (Nether = 8.0). |
min_y |
Int | Minimum world Y. |
height |
Int | Total Y range (multiple of 16). |
logical_height |
Int | Maximum Y for portals/teleporters. |
infiniburn |
Identifier | Tag (#namespace:path) of always-burning blocks. |
ambient_light |
Float | Constant added to computed light. |
monster_settings |
Compound | monster_spawn_light_level (int provider) + monster_spawn_block_light_limit (int 0–15). |
skybox |
Compound (optional) | Sky rendering preset. |
cardinal_light |
String enum (optional) | Cardinal light type. |
attributes |
Compound (optional) | Environment attribute overrides. |
timelines |
Holder set (optional) | List/tag of timeline references. |
default_clock |
Compound (optional) | World clock override. |
minecraft:chat_type| Field | Type | Notes |
|---|---|---|
chat |
Compound | Decoration applied to in-chat rendering. |
narration |
Compound | Decoration applied to narration. |
Each decoration has:
| Field | Type | Notes |
|---|---|---|
translation_key |
String | Translation key, e.g. "chat.type.text". |
parameters |
List of String | Ordered list of parameter names ("sender", "target", "content"). |
style |
Compound (optional) | Text style applied to the rendered output. |
See ./chat for how chat types are bound to messages.
minecraft:damage_type| Field | Type | Notes |
|---|---|---|
message_id |
String | Translation key suffix used by death messages. |
scaling |
String enum | "never", "when_caused_by_living_non_player", or "always". |
exhaustion |
Float | Hunger exhaustion induced. |
effects |
String enum (optional) | Hurt sound class: "hurt", "thorns", "drowning", "burning", "poking", "freezing". Default "hurt". |
death_message_type |
String enum (optional) | "default", "fall_variants", "intentional_game_design". |
minecraft:painting_variant| Field | Type | Notes |
|---|---|---|
asset_id |
Identifier | Texture identifier. |
width |
Int (1–16) | Painting width in blocks. |
height |
Int (1–16) | Painting height in blocks. |
title |
Component (optional) | Display title. |
author |
Component (optional) | Display author. |
minecraft:wolf_variant (and other mob variants)The mob-variant registries (wolf_variant, cat_variant, frog_variant, pig_variant, cow_variant, chicken_variant, zombie_nautilus_variant) all follow the same shape over the wire — they reduce to a list of model assets:
| Field | Type | Notes |
|---|---|---|
assets |
Compound | Asset references for the model variant; structure is variant-specific (e.g. wolf has wild, tame, angry). |
The data-pack form additionally carries a spawn_conditions list and biome tag, but those are server-only and not in the network codec.
minecraft:enchantment| Field | Type | Notes |
|---|---|---|
description |
Component | Display name. |
exclusive_set |
Holder set (optional) | Items mutually exclusive with this enchantment. |
supported_items |
Holder set | Items that may carry this enchantment. |
primary_items |
Holder set (optional) | Items eligible from the table. |
weight |
Int | Selection weight. |
max_level |
Int | Maximum level. |
min_cost / max_cost |
Compound | Anvil/table cost ranges. |
anvil_cost |
Int | Combine cost. |
slots |
List of String | Equipment slots in which the enchantment is active. |
effects |
Compound | Component-style effect map. |
minecraft:jukebox_song| Field | Type | Notes |
|---|---|---|
sound_event |
Holder/Identifier | Sound to play; either a registry holder or inline SoundEvent. |
description |
Component | Display name shown in the jukebox tooltip. |
length_in_seconds |
Float | Track length. |
comparator_output |
Int (0–15) | Redstone signal strength. |
minecraft:instrument| Field | Type | Notes |
|---|---|---|
sound_event |
Holder/Identifier | Sound emitted when used. |
use_duration |
Float | Use animation duration in seconds. |
range |
Float | Audible range in blocks. |
description |
Component | Display name. |
minecraft:trim_pattern / minecraft:trim_materialtrim_pattern:
| Field | Type | Notes |
|---|---|---|
asset_id |
Identifier | Texture identifier. |
description |
Component | Display name (used in tooltip). |
decal |
Boolean | Whether the trim is rendered as a decal. |
trim_material:
| Field | Type | Notes |
|---|---|---|
assets |
Compound | Per-armor-material override map. |
description |
Component | Tooltip display component. |
minecraft:banner_pattern| Field | Type | Notes |
|---|---|---|
asset_id |
Identifier | Texture identifier. |
translation_key |
String | Translation key for the tooltip. |
minecraft:dialogA self-contained UI dialog definition (introduced in 1.21.6+). The schema is large and deeply nested (buttons, body items, action lists). Treat the payload as an opaque NBT compound on the wire and decode it with the dialog codec.
minecraft:test_environment and minecraft:test_instanceGame-test definitions used by the /test command. Sent for parity with the integrated server and may be empty in production deployments.
NOTE: For registries whose network codec equals their data codec (
DIRECT_CODEC), the on-disk JSON shape underdata/<namespace>/<registry path>/translates field-for-field into the wire NBT.
Source: net/minecraft/resources/RegistryDataLoader.java, net/minecraft/core/RegistrySynchronization.java, net/minecraft/core/registries/Registries.java, net/minecraft/network/protocol/configuration/ClientboundRegistryDataPacket.java, net/minecraft/network/protocol/configuration/ClientboundSelectKnownPacks.java, net/minecraft/network/protocol/configuration/ServerboundSelectKnownPacks.java, net/minecraft/server/packs/repository/KnownPack.java, net/minecraft/world/level/biome/Biome.java, net/minecraft/world/level/dimension/DimensionType.java, net/minecraft/network/chat/ChatType.java, net/minecraft/world/damagesource/DamageType.java, net/minecraft/world/entity/decoration/PaintingVariant.java, net/minecraft/world/item/enchantment/Enchantment.java, net/minecraft/world/item/JukeboxSong.java, net/minecraft/world/item/Instrument.java.