Difference between revisions of "Registry Data"
(Draft proposal for a registry data page) |
(Generalized redundant information & performed some clean-up) |
||
Line 1: | Line 1: | ||
− | + | Registries are repositories of data that contain entries pertaining to certain aspects of the game, such as the world, the player, among others. | |
− | + | The server sends these registries to the client via [[Protocol#Registry_Data|Registry Data]] packet during the configuration phase. | |
== Format == | == Format == | ||
− | |||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 18: | Line 16: | ||
| rowspan="1"| Configuration | | rowspan="1"| Configuration | ||
| rowspan="1"| Client | | rowspan="1"| Client | ||
− | | Registry | + | | Registry Data |
| [[NBT|NBT Tag Compound]] | | [[NBT|NBT Tag Compound]] | ||
| Information included below. | | Information included below. | ||
|} | |} | ||
− | The '''Registry | + | The '''Registry Data''' field represents a list of all available registries in the form of a [[NBT#Specification:compound_tag|Compound Tag]]. Elements in this compound are defined by the [[#Registry|registry information]], associated with the registry's name, as shown in the example below: |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | + | <syntaxhighlight lang="java"> |
+ | { | ||
+ | "minecraft:dimension_type": { /* Registry */ }, | ||
+ | "minecraft:worldgen/biome": { /* Registry */ }, | ||
+ | "minecraft:chat_type": { /* Registry */ }, | ||
+ | ... | ||
+ | } | ||
+ | </syntaxhighlight> | ||
− | + | === Registry === | |
− | + | The Registry [[NBT#Specification:compound_tag|Compound Tag]] specifies the type of the registry, and a list of [[#Registry_Entry|registry entries]]. | |
− | + | {{warning|The name of the registry in the Registry Data is always the same to the registry type in the Notchian implementation.}} | |
{| class="wikitable" | {| class="wikitable" | ||
Line 68: | Line 45: | ||
| type | | type | ||
| TAG_String | | TAG_String | ||
− | | The | + | | The type of the registry. |
|- | |- | ||
| value | | value | ||
− | | TAG_List | + | | TAG_List of TAG_Compound |
− | | List of | + | | List of [[#Registry_Entry|registry entries]]. |
|} | |} | ||
− | + | === Registry Entry === | |
+ | |||
+ | The Registry Entry [[NBT#Specification:compound_tag|Compound Tag]] specifies a single entry of a [[#Registry|Registry]]. | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 84: | Line 63: | ||
| name | | name | ||
| TAG_String | | TAG_String | ||
− | | The name of the | + | | The name of the entry. |
|- | |- | ||
| id | | id | ||
| TAG_Int | | TAG_Int | ||
− | | The protocol ID of the | + | | The protocol ID of the entry. |
|- | |- | ||
| element | | element | ||
| TAG_Compound | | TAG_Compound | ||
− | | The | + | | The actual data of the entry. |
+ | {{warning|This field is context-dependent and is based on the '''type''' field of its [[#Registry|Registry]].}} | ||
|} | |} | ||
+ | |||
+ | == Required 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. | ||
+ | |||
+ | === Armor Trim Material === | ||
+ | |||
+ | The <code>minecraft:trim_material</code> registry. | ||
+ | |||
+ | === Armor Trim Pattern === | ||
+ | |||
+ | The <code>minecraft:trim_pattern</code> registry. | ||
+ | |||
+ | === Biome === | ||
+ | |||
+ | The <code>minecraft:worldgen/biome</code> registry. It defines several aesthetic characteristics of the biomes present in the game. | ||
+ | |||
+ | {{warning|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.}} | ||
Biome properties: | Biome properties: | ||
Line 211: | Line 209: | ||
=== Chat Type === | === Chat Type === | ||
− | The <code>minecraft:chat_type</code> registry. | + | The <code>minecraft:chat_type</code> registry. <add some explanation here> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Chat type "chat" and "narration": | Chat type "chat" and "narration": | ||
Line 275: | Line 237: | ||
=== Dimension Type === | === Dimension Type === | ||
− | The <code>minecraft:dimension_type</code> registry. | + | 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. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Dimension type: | Dimension type: | ||
Line 411: | Line 337: | ||
| 1: true, 0: false. | | 1: true, 0: false. | ||
|} | |} | ||
+ | |||
+ | == Default Registries == | ||
+ | |||
+ | The default registries in the JSON format is available for the following versions: | ||
+ | * [https://pastebin.com/guryvw56 1.20.1] | ||
+ | * [https://gist.github.com/nikes/aff59b758a807858da131a1881525b14 1.19.2] | ||
+ | * [https://gist.github.com/rj00a/f2970a8ce4d09477ec8f16003b9dce86 1.19] |
Revision as of 04:50, 18 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 server sends these registries to the client via Registry Data packet during the configuration phase.
Contents
Format
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x05 | Configuration | Client | Registry Data | NBT Tag Compound | 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:dimension_type": { /* Registry */ },
"minecraft:worldgen/biome": { /* 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 | TAG_String | The type of the registry. | |
value | TAG_List of TAG_Compound | List of registry entries. |
Registry Entry
The Registry Entry Compound Tag specifies a single entry of a Registry.
Name | Type | Notes | |
---|---|---|---|
name | TAG_String | The name of the entry. | |
id | TAG_Int | The protocol ID of the entry. | |
element | TAG_Compound | The actual data of the entry.
This field is context-dependent and is based on the type field of its Registry. |
Required 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.
Armor Trim Material
The minecraft:trim_material
registry.
Armor Trim Pattern
The minecraft:trim_pattern
registry.
Biome
The minecraft:worldgen/biome
registry. It defines several aesthetic characteristics of the biomes present in the game.
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.
Biome properties:
Name | Type | Meaning | Values | |||||
---|---|---|---|---|---|---|---|---|
has_precipitation | TAG_Byte | Determines whether or not the biome has precipitation. | 1: true, 0: false. | |||||
depth | Optional TAG_Float | The depth factor of the biome. | The default values vary between 1.5 and -1.8. | |||||
temperature | TAG_Float | The temperature factor of the biome. | The default values vary between 2.0 and -0.5. | |||||
scale | Optional TAG_Float | ? | The default values vary between 1.225 and 0.0. | |||||
downfall | TAG_Float | ? | The default values vary between 1.0 and 0.0. | |||||
category | Optional TAG_String | The category of the biome. | Known values are "ocean", "plains", "desert", "forest", "extreme_hills", "taiga", "swamp", "river", "nether", "the_end", "icy", "mushroom", "beach", "jungle", "mesa", "savanna", and "none". | |||||
temperature_modifier | Optional TAG_String | ? | The only known value is "frozen". | |||||
effects | sky_color | TAG_Compound | TAG_Int | The color of the sky. | Example: 8364543, which is #7FA1FF in RGB. | |||
water_fog_color | TAG_Int | Possibly the tint color when swimming. | Example: 8364543, which is #7FA1FF in RGB. | |||||
fog_color | TAG_Int | Possibly the color of the fog effect when looking past the view distance. | Example: 8364543, which is #7FA1FF in RGB. | |||||
water_color | TAG_Int | The tint color of the water blocks. | Example: 8364543, which is #7FA1FF in RGB. | |||||
foliage_color | Optional TAG_Int | The tint color of the grass. | Example: 8364543, which is #7FA1FF in RGB. | |||||
grass_color | Optional TAG_Int | ? | Example: 8364543, which is #7FA1FF in RGB. | |||||
grass_color_modifier | Optional TAG_String | Unknown, likely affects foliage color. | If set, known values are "swamp" and "dark_forest". | |||||
music | Optional TAG_Compound | Music properties for the biome. | If present, contains the fields: replace_current_music (TAG_Byte), sound (TAG_String), max_delay (TAG_Int), min_delay (TAG_Int). | |||||
ambient_sound | Optional TAG_String | Ambient soundtrack. | If present, the ID of a soundtrack. Example: "minecraft:ambient.basalt_deltas.loop". | |||||
additions_sound | Optional TAG_Compound | Additional ambient sound that plays randomly. | If present, contains the fields: sound (TAG_String), tick_chance (TAG_Double). | |||||
mood_sound | Optional TAG_Compound | Additional ambient sound that plays at an interval. | If present, contains the fields: sound (TAG_String), tick_delay (TAG_Int), offset (TAG_Double), block_search_extent (TAG_Int). | |||||
particle | probability | Optional TAG_Compound | TAG_FLOAT | Particles that appear randomly in the biome. | Possibly the probability of spawning the particle. | ? | ||
options | TAG_COMPOUND | The properties of the particle to spawn. | Contains the field "type" (TAG_String), which identifies the particle type. |
Chat Type
The minecraft:chat_type
registry. <add some explanation here>
Chat type "chat" and "narration":
Name | Type | Notes | |
---|---|---|---|
translation_key | TAG_String | ||
style | TAG_Compound | Similar to Chat JSON (only present in "chat" TAG_Compound) | |
parameters | TAG_List of TAG_String | Values can be "sender", "target" and "content" |
Damage Type
The minecraft:damage_type
registry.
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:
Name | Type | Meaning | Values | |
---|---|---|---|---|
piglin_safe | TAG_Byte | Whether piglins shake and transform to zombified piglins. | 1: true, 0: false. | |
has_raids | TAG_Byte | Whether players with the Bad Omen effect can cause a raid. | 1: true, 0: false. | |
monster_spawn_light_level | TAG_Int or TAG_Compound | Possibly the light level(s) at which monsters can spawn. | When TAG_Int, 0 - 15. When TAG_Compound, contains the fields: type (TAG_String), appears to be always "minecraft:uniform", and value (TAG_Compound), which contains the fields: max_inclusive (TAG_Int), min_inclusive (TAG_Int). | |
monster_spawn_block_light_limit | TAG_Int | |||
natural | TAG_Byte | When false, compasses spin randomly. When true, nether portals can spawn zombified piglins. | 1: true, 0: false. | |
ambient_light | TAG_Float | How much light the dimension has. | 0.0 to 1.0. | |
fixed_time | Optional TAG_Long | If set, the time of the day is the specified value. | If set, 0 to 24000. | |
infiniburn | TAG_String | A resource location defining what block tag to use for infiniburn. | "#" or minecraft resource "#minecraft:...". | |
respawn_anchor_works | TAG_Byte | Whether players can charge and use respawn anchors. | 1: true, 0: false. | |
has_skylight | TAG_Byte | Whether the dimension has skylight access or not. | 1: true, 0: false. | |
bed_works | TAG_Byte | Whether players can use a bed to sleep. | 1: true, 0: false. | |
effects | TAG_String | ? | "minecraft:overworld", "minecraft:the_nether", "minecraft:the_end" or something else. | |
min_y | TAG_Int | The minimum Y level. | A multiple of 16. Example: -64 | |
height | TAG_Int | The maximum height. | A multiple of 16. Example: 256 | |
logical_height | TAG_Int | The maximum height to which chorus fruits and nether portals can bring players within this dimension. (Must be lower than height) | 0-384. | |
coordinate_scale | TAG_Double | The multiplier applied to coordinates when traveling to the dimension. | 0.00001 - 30000000.0 | |
ultrawarm | TAG_Byte | Whether the dimensions behaves like the nether (water evaporates and sponges dry) or not. Also causes lava to spread thinner. | 1: true, 0: false. | |
has_ceiling | TAG_Byte | Whether the dimension has a bedrock ceiling or not. When true, causes lava to spread faster. | 1: true, 0: false. |
Default Registries
The default registries in the JSON format is available for the following versions: