Difference between revisions of "Registry Data"
(Added link to NBT types) |
(Adjusted headers) |
||
Line 3: | Line 3: | ||
The ability for the server to send customized registries to the client was introduced in 1.16.3, which allows for a great deal of customization over certain features of the game. | The ability for the server to send customized registries to the client was introduced in 1.16.3, which allows for a great deal of customization over certain features of the game. | ||
− | + | = Format = | |
The server sends these registries to the client via [[Protocol#Registry_Data|Registry Data]] packet during the configuration phase. | The server sends these registries to the client via [[Protocol#Registry_Data|Registry Data]] packet during the configuration phase. | ||
Line 50: | Line 50: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | == Registry == | |
The Registry [[NBT#Specification:compound_tag|Compound Tag]] specifies the type of the registry, and a list of [[#Registry_Entry|registry entries]]. | The Registry [[NBT#Specification:compound_tag|Compound Tag]] specifies the type of the registry, and a list of [[#Registry_Entry|registry entries]]. | ||
Line 70: | Line 70: | ||
|} | |} | ||
− | + | == Registry Entry == | |
The Registry Entry [[NBT#Specification:compound_tag|Compound Tag]] specifies a single entry of a [[#Registry|Registry]]. | The Registry Entry [[NBT#Specification:compound_tag|Compound Tag]] specifies a single entry of a [[#Registry|Registry]]. | ||
Line 93: | Line 93: | ||
|} | |} | ||
− | + | = Available Registries = | |
The current release specification allows for six different registries to be sent to the client, six of which are required. A brief explanation of each of them is presented below, along with the format of their entries' element field. | The current release specification allows for six different registries to be sent to the client, six of which are required. A brief explanation of each of them is presented below, along with the format of their entries' element field. | ||
Line 99: | Line 99: | ||
'''Fields marked in <span style="border: solid 1px black; background: #d4ecfc; color: #d4ecfc;">__</span> blue represent data for server-side exclusive operations, and thus have no visible impact on the client.''' | '''Fields marked in <span style="border: solid 1px black; background: #d4ecfc; color: #d4ecfc;">__</span> blue represent data for server-side exclusive operations, and thus have no visible impact on the client.''' | ||
− | + | == Armor Trim Material == | |
The <code>minecraft:trim_material</code> registry. It defines various visual properties of trim materials in armors. | The <code>minecraft:trim_material</code> registry. It defines various visual properties of trim materials in armors. | ||
Line 147: | Line 147: | ||
|} | |} | ||
− | + | == Armor Trim Pattern == | |
− | |||
− | |||
The <code>minecraft:trim_pattern</code> registry. It defines various visual properties of trim patterns in armors. | The <code>minecraft:trim_pattern</code> registry. It defines various visual properties of trim patterns in armors. | ||
Line 184: | Line 182: | ||
|} | |} | ||
− | + | == Biome == | |
− | |||
− | |||
The <code>minecraft:worldgen/biome</code> registry. It defines several aesthetic characteristics of the biomes present in the game. | The <code>minecraft:worldgen/biome</code> registry. It defines several aesthetic characteristics of the biomes present in the game. | ||
Line 230: | Line 226: | ||
|} | |} | ||
− | + | === Effects === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 307: | Line 303: | ||
|} | |} | ||
− | + | === Particle === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 326: | Line 322: | ||
|} | |} | ||
− | + | === Particle options === | |
{{Need Info|The extra data specified in the [[Protocol#Particle|Particle]] definitions is missing information to allow the particle to be successfully serialized as NBT.<br>Is it here the best place to define them, or somewhere else?}} | {{Need Info|The extra data specified in the [[Protocol#Particle|Particle]] definitions is missing information to allow the particle to be successfully serialized as NBT.<br>Is it here the best place to define them, or somewhere else?}} | ||
Line 347: | Line 343: | ||
|} | |} | ||
− | + | === Ambient sound === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 366: | Line 362: | ||
|} | |} | ||
− | + | === Mood sound === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 396: | Line 392: | ||
|} | |} | ||
− | + | === Additions sound === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 415: | Line 411: | ||
|} | |} | ||
− | + | === Music === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 444: | Line 440: | ||
|} | |} | ||
− | + | == Chat Type == | |
− | |||
− | |||
The <code>minecraft:chat_type</code> registry. It defines the different types of in-game chat and how they're formatted. | The <code>minecraft:chat_type</code> registry. It defines the different types of in-game chat and how they're formatted. | ||
Line 469: | Line 463: | ||
|} | |} | ||
− | + | === Decoration === | |
{| class="wikitable" | {| class="wikitable" | ||
Line 497: | Line 491: | ||
|} | |} | ||
− | + | == Damage Type == | |
− | |||
− | |||
The <code>minecraft:damage_type</code> registry. It defines the different types of damage an entity can sustain. | The <code>minecraft:damage_type</code> registry. It defines the different types of damage an entity can sustain. | ||
Line 549: | Line 541: | ||
|} | |} | ||
− | + | == Dimension Type == | |
− | |||
− | |||
The <code>minecraft:dimension_type</code> registry. It defines the types of dimension that can be attributed to a world, along with all their characteristics. | The <code>minecraft:dimension_type</code> registry. It defines the types of dimension that can be attributed to a world, along with all their characteristics. | ||
Line 667: | Line 657: | ||
|} | |} | ||
− | + | === Integer distribution === | |
Integer providers can be either declared as constants with a [[NBT#Specification:int_tag|Int Tag]], or in a structured [[NBT#Specification:compound_tag|Compound Tag]]s for specific distribution types. For the latter, the following format is used. | Integer providers can be either declared as constants with a [[NBT#Specification:int_tag|Int Tag]], or in a structured [[NBT#Specification:compound_tag|Compound Tag]]s for specific distribution types. For the latter, the following format is used. | ||
Line 696: | Line 686: | ||
|} | |} | ||
− | + | = Default Registries = | |
The default registries in the JSON format is available for the following versions: | The default registries in the JSON format is available for the following versions: |
Revision as of 04:27, 31 October 2023
Registries are repositories of data that contain entries pertaining to certain aspects of the game, such as the world, the player, among others.
The ability for the server to send customized registries to the client was introduced in 1.16.3, which allows for a great deal of customization over certain features of the game.
Format
The server sends these registries to the client via Registry Data packet during the configuration phase.
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x05 | Configuration | Client | Registry Data | Compound Tag | Information included below. |
The Registry Data field represents a list of all available registries in the form of a Compound Tag. Elements in this compound are defined by the registry information, associated with the registry's name, as shown in the example below:
{
"minecraft:worldgen/biome": {
"type": "minecraft:worldgen/biome",
"value": [
{
"name": "minecraft:ocean",
"id": 0,
"element": { /* Element */ }
},
{
"name": "minecraft:plains",
"id": 1,
"element": { /* Element */ }
},
{ /* Registry Entry */ }
...
]
},
"minecraft:dimension_type": { /* Registry */ },
"minecraft:chat_type": { /* Registry */ },
...
}
Registry
The Registry Compound Tag specifies the type of the registry, and a list of registry entries.
The name of the registry in the Registry Data is always the same to the registry type in the Notchian implementation.
Name | Type | Notes | |
---|---|---|---|
type | String Tag | The type of the registry. | |
value | List Tag of Compound Tag | List of registry entries. |
Registry Entry
The Registry Entry Compound Tag specifies a single entry of a Registry.
Name | Type | Notes | |
---|---|---|---|
name | String Tag | The name of the entry. | |
id | Int Tag | The protocol ID of the entry. | |
element | Compound Tag | The actual data of the entry.
This field is context-dependent and is based on the type field of its Registry. |
Available Registries
The current release specification allows for six different registries to be sent to the client, six of which are required. A brief explanation of each of them is presented below, along with the format of their entries' element field.
Fields marked in __ blue represent data for server-side exclusive operations, and thus have no visible impact on the client.
Armor Trim Material
The minecraft:trim_material
registry. It defines various visual properties of trim materials in armors.
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
asset_name | String Tag | The trim color model to be rendered on top of the armor.
The Notchian client uses the corresponding asset located at |
Example: "minecraft:amethyst". | |||||
ingredient | String Tag | The ingredient used.
This has the visual effect of showing the trimmed armor model on the Smithing Table when the correct item is placed. |
Example: "minecraft:copper_ingot". | |||||
item_model_index | Float Tag | Color index of the trim on the armor item when in the inventory. | Default values vary between 0.1 and 1.0. | |||||
override_armor_materials | Optional Compound Tag | Asset for different types of armor materials, which overrides the value specified in the asset_name field.
The Notchian client uses this to give a darker color shade when a trim material is applied to armor of the same material, such as iron applied to iron armor. |
The key can be either:
The value is the same as asset_name. | |||||
description | Compound Tag or String Tag | The name of the trim material to be displayed on the armor tool-tip.
Any styling used in this component is also applied to the trim pattern description. |
See Chat. |
Armor Trim Pattern
The minecraft:trim_pattern
registry. It defines various visual properties of trim patterns in armors.
The following information needs to be added to this page: | |
The decal field seems to exist to prevent overlapping between the armor model and the trim model. What exact effect does it have?
|
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
asset_id | String Tag | The trim pattern model to be rendered on top of the armor.
The Notchian client uses the corresponding asset located at |
Example: "minecraft:coast". | |||||
template_item | String Tag | The template item used for this trim.
This has the visual effect of showing the trimmed armor model on the Smithing Table when the correct item is placed. |
Example: "minecraft:coast_armor_trim_smithing_template". | |||||
description | Compound Tag or String Tag | The name of the trim pattern to be displayed on the armor tool-tip. | See Chat. | |||||
decal | Byte Tag | Whether this trim is a decal. | 1: true, 0: false. |
Biome
The minecraft:worldgen/biome
registry. It defines several aesthetic characteristics of the biomes present in the game.
Biome entries are referenced in the Chunk Biomes and Chunk Data and Update Light packets.
A registry entry for each biome implemented in the client must exist in the Biome registry, otherwise the client will crash with an exception due to the missing biome.
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
has_precipitation | Byte Tag | Determines whether or not the biome has precipitation. | 1: true, 0: false. | |||||
temperature | Float Tag | The temperature factor of the biome.
Affects foliage and grass color if they are not explicitly set. |
The default values vary between -0.5 and 2.0. | |||||
temperature_modifier | Optional String Tag | Modifier that affects the resulting temperature. | Can be either:
| |||||
downfall | Float Tag | The downfall factor of the biome.
Affects foliage and grass color if they are not explicitly set. |
The default values vary between 0.0 and 1.0. | |||||
effects | Compound Tag | Biome special effects. | See Effects. |
Effects
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
fog_color | Int Tag | The color of the fog effect when looking past the view distance. | Example: 8364543, which is #7FA1FF in RGB. | |||||
water_color | Int Tag | The tint color of the water blocks. | Example: 8364543, which is #7FA1FF in RGB. | |||||
water_fog_color | Int Tag | The color of the fog effect when looking past the view distance when underwater. | Example: 8364543, which is #7FA1FF in RGB. | |||||
sky_color | Int Tag | The color of the sky. | Example: 8364543, which is #7FA1FF in RGB. | |||||
foliage_color | Optional Int Tag | The tint color of leaves.
If not specified, the foliage color is calculated based on biome |
Example: 8364543, which is #7FA1FF in RGB. | |||||
grass_color | Optional Int Tag | The tint color of the grass.
If not specified, the grass color is calculated based on biome |
Example: 8364543, which is #7FA1FF in RGB. | |||||
grass_color_modifier | Optional String Tag | Modifier that affects the resulting grass color. | Can be either:
| |||||
particle | Optional Compound Tag | Ambient visual particles. | See Particle. | |||||
ambient_sound | Optional String Tag or Compound Tag | Ambient soundtrack that starts playing when entering the biome, and fades out when exiting it. | Can be either:
| |||||
mood_sound | Optional Compound Tag | Additional ambient sound that plays in moody situations. Moodiness increases when blocks around the player are at both sky and block light level zero, and decreases otherwise.
The moodiness calculation happens once per tick, and after reaching a certain value, the ambient mood sound is played. |
See Mood sound. | |||||
additions_sound | Optional Compound Tag | Additional ambient sound that has a chance of playing randomly every tick. | See Additions sound. | |||||
music | Optional Compound Tag | Music properties for the biome. | See Music. |
Particle
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
options | Compound Tag | Particle type and related options. | See Particle options. | |||||
probability | Float Tag | The chance for the particle to be spawned. Ambient particles are attempted to be spawned multiple times every tick. | The default values vary between 0.0 and 1.0. |
Particle options
The following information needs to be added to this page: | |
The extra data specified in the Particle definitions is missing information to allow the particle to be successfully serialized as NBT. Is it here the best place to define them, or somewhere else? |
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
type | String Tag | The name of the particle. | See protocol particle data. | |||||
value | Optional Varies | Any necessary extra data to fully define the particle. | See protocol particle data. |
Ambient sound
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
sound_id | String Tag | The ID of a soundtrack | Example: "minecraft:ambient.basalt_deltas.loop" | |||||
range | Optional Float Tag | The range of the sound. If not specified, the volume is used to calculate the effective range. |
Mood sound
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
sound | String Tag | The ID of a soundtrack. | Example: "minecraft:ambient.basalt_deltas.mood" | |||||
tick_delay | Int Tag | Defines the rate at which the moodiness increase, and also the minimum time between plays. | The default value is always 6000. | |||||
block_search_extent | Int Tag | The radius used for the block search around the player during moodiness calculation. | The default value is always 8. | |||||
offset | Double Tag | The distance offset from the player when playing the sound.
The sound plays in the direction of the selected block during moodiness calculation, and is magnified by the offset. |
The default value is always 2.0. |
Additions sound
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
sound | String Tag | The ID of a soundtrack. | Example: "minecraft:ambient.basalt_deltas.additions" | |||||
tick_chance | Double Tag | The chance of the sound playing during the tick. | The default value is always 0.0111. |
Music
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
sound | String Tag | The ID of a soundtrack. | Example: "minecraft:music.nether.basalt_deltas" | |||||
min_delay | Int Tag | The minimum time in ticks since the last music finished for this music to be able to play. | The default value is always 12000. | |||||
max_delay | Int Tag | The maximum time in ticks since the last music finished for this music to be able to play. | The default value is always 24000. | |||||
replace_current_music | Byte Tag | Whether this music can replace the current one. | 1: true, 0: false. |
Chat Type
The minecraft:chat_type
registry. It defines the different types of in-game chat and how they're formatted.
Chat type entries are referenced in the Disguised Chat Message and Player Chat Message packets.
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
chat | Compound Tag | The chat decoration. | See Decoration. | |||||
narration | Compound Tag | The narration decoration. | See Decoration. |
Decoration
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
translation_key | String Tag | The translation key representing the chat format. It can also be a formatting string directly. | Example: "chat.type.text", which translates to "<%s> %s". | |||||
style | Optional Compound Tag | Optional styling to be applied on the final message.
Not present in the narration decoration. |
See Chat styling. | |||||
parameters | List Tag of String Tag | Placeholders used when formatting the string given by the translation_key field. | Can be either:
|
Damage Type
The minecraft:damage_type
registry. It defines the different types of damage an entity can sustain.
Damage type entries are referenced in the Damage Event packet.
Name | Type | Meaning | Values |
---|---|---|---|
message_id | String Tag | Id of the death message. The full message is displayed as death.attack.<message_id> .
|
Example: "onFire". |
scaling | String Tag | Whether the damage taken scales with the difficulty. | Can be either:
|
exhaustion | Float Tag | The amount of exhaustion caused when suffering this type of damage. | Default values are either 0.0 or 0.1. |
effects | Optional String Tag | Effect played when the player suffers this damage, including the sound that is played. | Can be either:
|
death_message_type | Optional String Tag | Defines how the death message is constructed. | Can be either:
|
Dimension Type
The minecraft:dimension_type
registry. It defines the types of dimension that can be attributed to a world, along with all their characteristics.
Dimension type entries are referenced in the Login (play) and Respawn packets.
Name | Type | Meaning | Values |
---|---|---|---|
fixed_time | Optional Long Tag | If set, the time of the day fixed to the specified value. | Allowed values vary between 0 and 24000. |
has_skylight | Byte Tag | Whether the dimension has skylight access or not. | 1: true, 0: false. |
has_ceiling | Byte Tag | Whether the dimension has a bedrock ceiling or not. When true, causes lava to spread faster. | 1: true, 0: false. |
ultrawarm | Byte Tag | Whether the dimensions behaves like the nether (water evaporates and sponges dry) or not. Also causes lava to spread thinner. | 1: true, 0: false. |
natural | Byte Tag | When false, compasses spin randomly. When true, nether portals can spawn zombified piglins. | 1: true, 0: false. |
coordinate_scale | Double Tag | The multiplier applied to coordinates when traveling to the dimension. | Allowed values vary between 1e-5 (0.00001) and 3e7 (30000000). |
bed_works | Byte Tag | Whether players can use a bed to sleep. | 1: true, 0: false. |
respawn_anchor_works | Byte Tag | Whether players can charge and use respawn anchors. | 1: true, 0: false. |
min_y | Int Tag | The minimum Y level. | Allowed values vary between -2032 and 2031, and must also be a multiple of 16. |
height | Int Tag | The maximum height. | Allowed values vary between 16 and 4064, and must also be a multiple of 16. |
logical_height | Int Tag | The maximum height to which chorus fruits and nether portals can bring players within this dimension. (Must be lower than height) | Allowed values vary between 0 and 4064, and must also be a multiple of 16. |
infiniburn | String Tag | A resource location defining what block tag to use for infiniburn. | "#" or minecraft resource "#minecraft:...". |
effects | String Tag | Defines special dimensional effects, which includes:
|
Can be either:
|
ambient_light | Float Tag | How much light the dimension has. Used as interpolation factor when calculating the brightness generated from sky light. | The default values are 0.0 and 0.1, 0.1 for the nether and 0.0 for the other dimensions. |
piglin_safe | Byte Tag | Whether piglins shake and transform to zombified piglins. | 1: true, 0: false. |
has_raids | Byte Tag | Whether players with the Bad Omen effect can cause a raid. | 1: true, 0: false. |
monster_spawn_light_level | Int Tag or Compound Tag | During a monster spawn attempt, this is the maximum allowed light level for it to succeed. It can be either a fixed value, or one of several types of distributions. | Can be either:
|
monster_spawn_block_light_limit | Int Tag | Maximum allowed block light level monster spawn attempts to happen. | Allowed values vary between 0 and 15.
The default values are 0 and 15, 15 for the nether (where monsters can spawn anywhere) and 0 for other dimensions (where monsters can only spawn naturally in complete darkness). |
Integer distribution
Integer providers can be either declared as constants with a Int Tag, or in a structured Compound Tags for specific distribution types. For the latter, the following format is used.
Name | Type | Meaning | Values |
---|---|---|---|
type | String Tag | The type of distribution. | Can be either:
|
value | Compound Tag | Extra data pertaining to the type of distribution. | Depends on the type of distribution. |
Default Registries
The default registries in the JSON format is available for the following versions: