Difference between revisions of "Registry Data"

From wiki.vg
Jump to navigation Jump to search
(Draft proposal for a registry data page)
 
(Generalized redundant information & performed some clean-up)
Line 1: Line 1:
= Registry Data =
+
Registries are repositories of data that contain entries pertaining to certain aspects of the game, such as the world, the player, among others.
  
Registries representing definitions of certain concepts that are sent to the client with the [[Protocol#Registry_Data|Registry Data]] packet.
+
The server sends these registries to the client via [[Protocol#Registry_Data|Registry Data]] packet during the configuration phase.
  
 
== Format ==
 
== Format ==
 
Stub.
 
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 18: Line 16:
 
  | rowspan="1"| Configuration
 
  | rowspan="1"| Configuration
 
  | rowspan="1"| Client
 
  | rowspan="1"| Client
  | Registry Codec
+
  | Registry Data
 
  | [[NBT|NBT Tag Compound]]
 
  | [[NBT|NBT Tag Compound]]
 
  | Information included below.
 
  | Information included below.
 
  |}
 
  |}
  
The '''Registry Codec''' NBT Tag Compound ([https://gist.github.com/rj00a/f2970a8ce4d09477ec8f16003b9dce86 Default value in JSON as of 1.19], [https://gist.github.com/nikes/aff59b758a807858da131a1881525b14 1.19.2], [https://pastebin.com/guryvw56 1.20.1]) includes three registries: "minecraft:dimension_type", "minecraft:worldgen/biome", and "minecraft:chat_type".
+
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:
 
 
{| class="wikitable"
 
!Name
 
!Type
 
!style="width: 250px;" colspan="2"| Notes
 
|-
 
| minecraft:dimension_type
 
| TAG_Compound
 
| The dimension type registry (see below).
 
|-
 
| minecraft:worldgen/biome
 
| TAG_Compound
 
| The biome registry (see below).
 
|-
 
| minecraft:chat_type
 
| TAG_Compound
 
| The chat type registry (see below).
 
|}
 
 
 
== Vanilla Registries ==
 
 
 
=== Armor Trim Material ===
 
 
 
The <code>minecraft:trim_material</code> registry.
 
 
 
=== Armor Trim Pattern ===
 
 
 
The <code>minecraft:trim_pattern</code> registry.
 
  
=== Biome ===
+
<syntaxhighlight lang="java">
 +
{
 +
    "minecraft:dimension_type": { /* Registry */ },
 +
    "minecraft:worldgen/biome": { /* Registry */ },
 +
    "minecraft:chat_type": { /* Registry */ },
 +
    ...
 +
}
 +
</syntaxhighlight>
  
The <code>minecraft:worldgen/biome</code> registry.
+
=== Registry ===
  
Represents certain registries that are sent from the server and are applied on the client.
+
The Registry [[NBT#Specification:compound_tag|Compound Tag]] specifies the type of the registry, and a list of [[#Registry_Entry|registry entries]].
  
Biome registry:
+
{{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 name of the registry. Always "minecraft:worldgen/biome".
+
  | The type of the registry.
 
  |-
 
  |-
 
  | value
 
  | value
  | TAG_List
+
  | TAG_List of TAG_Compound
  | List of biome registry entries (see below).
+
  | List of [[#Registry_Entry|registry entries]].
 
  |}
 
  |}
  
Biome registry entry:
+
=== 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 biome (for example, "minecraft:ocean").
+
  | The name of the entry.
 
  |-
 
  |-
 
  | id
 
  | id
 
  | TAG_Int
 
  | TAG_Int
  | The protocol ID of the biome (matches the index of the element in the registry list).
+
  | The protocol ID of the entry.
 
  |-
 
  |-
 
  | element
 
  | element
 
  | TAG_Compound
 
  | TAG_Compound
  | The biome properties (see below).
+
  | 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 registry:
 
 
 
{| class="wikitable"
 
!Name
 
!Type
 
!style="width: 250px;" colspan="2"| Notes
 
|-
 
| type
 
| TAG_String
 
| The name of the registry. Always "minecraft:chat_type".
 
|-
 
| value
 
| TAG_List
 
| List of chat type registry entries (see below).
 
|}
 
 
 
Chat type:
 
 
 
{| class="wikitable"
 
!Name
 
!Type
 
!style="width: 250px;" colspan="2"| Notes
 
|-
 
| name
 
| TAG_String
 
| The type's name (eg "minecraft:chat")
 
|-
 
| id
 
| TAG_Int
 
|
 
|-
 
| elements
 
| TAG_Compound
 
| "chat" and "narration" TAG_Compound's (see below)
 
|}
 
  
 
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 registry:
 
 
 
{| class="wikitable"
 
!Name
 
!Type
 
!style="width: 250px;" colspan="2"| Notes
 
|-
 
| type
 
| TAG_String
 
| The name of the registry. Always "minecraft:dimension_type".
 
|-
 
| value
 
| TAG_List
 
| List of dimension types registry entries (see below).
 
|}
 
 
 
Dimension type registry entry:
 
 
 
{| class="wikitable"
 
!Name
 
!Type
 
!style="width: 250px;" colspan="2"| Notes
 
|-
 
| name
 
| TAG_String
 
| The name of the dimension type (for example, "minecraft:overworld").
 
|-
 
| id
 
| TAG_Int
 
| The protocol ID of the dimension (matches the index of the element in the registry list).
 
|-
 
| element
 
| TAG_Compound
 
| The dimension type (see below).
 
|}
 
  
 
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.

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.

Warning.png 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.

Warning.png 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.

Warning.png 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: