Registry Data
Configuration 0x07, server → client.
config · 0x07 · clientbound (server → client)
Sends the contents of one dynamic registry (dimension types, biomes, damage types, chat types, wolf variants, and so on) as a list of ids with optional NBT entries. One packet is sent per registry, after SelectKnownPacks. Entries without data must be known to the client from a selected pack.
Sent by the server, read by the client. Listen for it with client.on("RegistryData", (data) => …) on the receiving side.
Fields
| Field | Type | Notes |
|---|---|---|
registryId |
Identifier | |
entries |
Array | Shape: Array<{ entryId: string; data?: unknown }>. |
Send it
// Server side with autoInit: false. One packet per registry.
await client.sendPacket("RegistryData", {
registryId: "minecraft:dimension_type",
entries: [
{ entryId: "minecraft:overworld", data: { /* dimension type NBT */ } },
{ entryId: "minecraft:the_nether", data: null }, // null: client uses its own copy
],
});
data is optional NBT for each entry; null means the client already has the entry from a known pack. The vanilla client needs every synchronised registry (dimension_type, worldgen/biome, chat_type, damage_type, wolf_variant, and so on) before FinishConfiguration. With autoInit: true the server sends the full vanilla set, so most servers never build this by hand.
Field aliases listed under Notes are accepted as alternative keys when writing.
Source: src/Core/Versions/776/Packets/config/clientbound/RegistryData.ts