Difference between revisions of "Registry Data"

From wiki.vg
Jump to navigation Jump to search
(Generalized redundant information & performed some clean-up)
(Added placeholder for missing fields)
Line 25: Line 25:
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
 
{
 
{
 +
    "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:dimension_type": { /* Registry */ },
    "minecraft:worldgen/biome": { /* Registry */ },
 
 
     "minecraft:chat_type": { /* Registry */ },
 
     "minecraft:chat_type": { /* Registry */ },
 
     ...
 
     ...
Line 49: Line 65:
 
  | value
 
  | value
 
  | TAG_List of TAG_Compound
 
  | TAG_List of TAG_Compound
  | List of [[#Registry_Entry|registry entries]].
+
  | List of [[#Registry_Entry|registry entries]]. The format of the entries is defined by the value of the previous field.  
 
  |}
 
  |}
  
Line 75: Line 91:
 
  |}
 
  |}
  
== Required Registries ==
+
== 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 82: Line 98:
  
 
The <code>minecraft:trim_material</code> registry.
 
The <code>minecraft:trim_material</code> registry.
 +
 +
{| class="wikitable"
 +
! colspan="3"|Name
 +
! colspan="2"|Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! colspan="2"|Values
 +
|-
 +
| colspan="3"| asset_name
 +
| colspan="2"| TAG_String
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| ingredient
 +
| colspan="2"| TAG_String
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| item_model_index
 +
| colspan="2"| TAG_Float
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| override_armor_materials
 +
| colspan="2"| Optional TAG_Compound
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| description
 +
| colspan="2"| TAG_Compound or TAG_String
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|}
  
 
=== Armor Trim Pattern ===
 
=== Armor Trim Pattern ===
  
 
The <code>minecraft:trim_pattern</code> registry.
 
The <code>minecraft:trim_pattern</code> registry.
 +
 +
{| class="wikitable"
 +
! colspan="3"|Name
 +
! colspan="2"|Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! colspan="2"|Values
 +
|-
 +
| colspan="3"| asset_id
 +
| colspan="2"| TAG_String
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| template_item
 +
| colspan="2"| TAG_String
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| description
 +
| colspan="2"| TAG_Compound or TAG_String
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|-
 +
| colspan="3"| decal
 +
| colspan="2"| TAG_Byte
 +
| colspan="2"| <tba>
 +
| colspan="2"| <tba>
 +
|}
  
 
=== Biome ===
 
=== Biome ===
Line 92: Line 167:
  
 
{{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.}}
 
{{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:
 
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 101: Line 174:
 
  ! colspan="2"|Values
 
  ! colspan="2"|Values
 
  |-
 
  |-
  | colspan="3"|has_precipitation
+
  | colspan="3"| has_precipitation
  | colspan="2"|TAG_Byte
+
  | colspan="2"| TAG_Byte
 
  | colspan="2"| Determines whether or not the biome has precipitation.
 
  | colspan="2"| Determines whether or not the biome has precipitation.
 
  | colspan="2"| 1: true, 0: false.  
 
  | colspan="2"| 1: true, 0: false.  
Line 209: Line 282:
 
=== Chat Type ===
 
=== Chat Type ===
  
The <code>minecraft:chat_type</code> registry. <add some explanation here>
+
The <code>minecraft:chat_type</code> registry.
  
Chat type "chat" and "narration":
+
{| class="wikitable"
 +
! colspan="3"|Name
 +
! colspan="2"|Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! colspan="2"|Values
 +
|-
 +
| colspan="3"| chat
 +
| colspan="2"| TAG_Compound
 +
| colspan="2"| The chat decoration
 +
| colspan="2"| See below.
 +
|-
 +
| colspan="3"| narration
 +
| colspan="2"| TAG_Compound
 +
| colspan="2"| The narration decoration
 +
| colspan="2"| See below.
 +
|}
 +
 
 +
Decoration [[NBT#Specification:compound_tag|Compound Tag]]:
  
 
{| class="wikitable"
 
{| class="wikitable"
  !Name
+
  ! colspan="3"|Name
  !Type
+
  ! colspan="2"|Type
  !style="width: 250px;" colspan="2"| Notes
+
  !style="width: 250px;" colspan="2"| Meaning
 +
! colspan="2"|Values
 
  |-
 
  |-
  | translation_key
+
  | colspan="3"| translation_key
  | TAG_String
+
  | colspan="2"| TAG_String
  |  
+
  | colspan="2"| <tba>
 +
| colspan="2"| <tba>
 
  |-
 
  |-
  | style
+
  | colspan="3"| style
  | TAG_Compound
+
  | colspan="2"| Optional TAG_Compound
  | Similar to Chat JSON (only present in "chat" TAG_Compound)
+
  | colspan="2"| <tba>
 +
| colspan="2"| Similar to Chat JSON (only present in "chat" TAG_Compound)
 
  |-
 
  |-
  | parameters
+
  | colspan="3"| parameters
  | TAG_List of TAG_String
+
  | colspan="2"| TAG_List of TAG_String
  | Values can be "sender", "target" and "content"
+
  | colspan="2"| <tba>
 +
| colspan="2"| Values can be "sender", "target" and "content"
 
  |}
 
  |}
  
Line 234: Line 328:
  
 
The <code>minecraft:damage_type</code> registry.
 
The <code>minecraft:damage_type</code> registry.
 +
 +
{| class="wikitable"
 +
! Name
 +
! Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! Values
 +
|-
 +
| message_id
 +
| TAG_String
 +
| colspan="2"| <tba>
 +
| <tba>
 +
|-
 +
| scaling
 +
| TAG_String
 +
| colspan="2"| <tba>
 +
| <tba>
 +
|-
 +
| exhaustion
 +
| TAG_Float
 +
| colspan="2"| <tba>
 +
| <tba>
 +
|-
 +
| effects
 +
| Optional TAG_String
 +
| colspan="2"| <tba>
 +
| <tba>
 +
|-
 +
| death_message_type
 +
| Optional TAG_String
 +
| colspan="2"| <tba>
 +
| <tba>
 +
|}
  
 
=== Dimension Type ===
 
=== 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.
 
Dimension type:
 
  
 
{| class="wikitable"
 
{| class="wikitable"

Revision as of 01:12, 19 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: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.

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. The format of the entries is defined by the value of the previous field.

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.

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.

Armor Trim Material

The minecraft:trim_material registry.

Name Type Meaning Values
asset_name TAG_String <tba> <tba>
ingredient TAG_String <tba> <tba>
item_model_index TAG_Float <tba> <tba>
override_armor_materials Optional TAG_Compound <tba> <tba>
description TAG_Compound or TAG_String <tba> <tba>

Armor Trim Pattern

The minecraft:trim_pattern registry.

Name Type Meaning Values
asset_id TAG_String <tba> <tba>
template_item TAG_String <tba> <tba>
description TAG_Compound or TAG_String <tba> <tba>
decal TAG_Byte <tba> <tba>

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.

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.

Name Type Meaning Values
chat TAG_Compound The chat decoration See below.
narration TAG_Compound The narration decoration See below.

Decoration Compound Tag:

Name Type Meaning Values
translation_key TAG_String <tba> <tba>
style Optional TAG_Compound <tba> Similar to Chat JSON (only present in "chat" TAG_Compound)
parameters TAG_List of TAG_String <tba> Values can be "sender", "target" and "content"

Damage Type

The minecraft:damage_type registry.

Name Type Meaning Values
message_id TAG_String <tba> <tba>
scaling TAG_String <tba> <tba>
exhaustion TAG_Float <tba> <tba>
effects Optional TAG_String <tba> <tba>
death_message_type Optional TAG_String <tba> <tba>

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.

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: