|
|
(71 intermediate revisions by 7 users not shown) |
Line 1: |
Line 1: |
− | This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.20.1, protocol 763]]) to the current pre-release (currently [[Protocol version numbers|23w31a, protocol {{Snapshot PVN|1073741968}}]]). Note that this page contains bleeding-edge information that may not be completely or correctly documented. | + | This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.20.6, protocol 766]]) to the current pre-release (currently [[Protocol version numbers|1.21-pre2, protocol {{Snapshot PVN|1073742024}}]]). Note that this page contains bleeding-edge information that may not be completely or correctly documented. |
| | | |
| One who wishes to commandeer the merging of this into [[Protocol]] when an update is made must be sure to respect any changes that may have occurred to the respective packets there. | | One who wishes to commandeer the merging of this into [[Protocol]] when an update is made must be sure to respect any changes that may have occurred to the respective packets there. |
Line 9: |
Line 9: |
| === Data types === | | === Data types === |
| | | |
− | No changes so far. | + | No changes documented so far. |
| | | |
| === Packets === | | === Packets === |
| | | |
− | === Packets ===
| |
| {| class="wikitable" | | {| class="wikitable" |
| ! ID | | ! ID |
Line 19: |
Line 18: |
| !colspan="2"| Documentation | | !colspan="2"| Documentation |
| |- | | |- |
− | !colspan="4"| Configuration clientbound | + | !colspan="4"| Configuration clientbound |
− | {{PacketList|0x00|Plugin Message (configuration)|rel=added}} | + | {{PacketList|0x0F|Clientbound Report Details (configuration)|rel=added}} |
− | {{PacketList|0x01|Disconnect (configuration)|rel=added}} | + | {{PacketList|0x10|Clientbound Server Links (configuration)|rel=added}} |
− | {{PacketList|0x02|Finish Configuration|rel=added}}
| + | |- |
− | {{PacketList|0x03|Keep Alive (configuration)|rel=added}}
| + | !colspan="4"| Play clientbound |
− | {{PacketList|0x04|Ping (configuration)|rel=added}}
| + | {{PacketList|0x7A|Clientbound Report Details (play)|rel=added}} |
− | {{PacketList|0x05|Registry Data|rel=added}}
| + | {{PacketList|0x7B|Clientbound Server Links (play)|rel=added}} |
− | {{PacketList|0x06|Resource Pack (configuration)|rel=added}}
| + | |- |
− | {{PacketList|0x07|Feature Flags|rel=added}}
| |
− | {{PacketList|0x08|Update Tags|rel=added}}
| |
− | |- | |
− | !colspan="4"| Configuration serverbound | |
− | {{PacketList|0x00|Plugin Message (configuration)|rel=added}}
| |
− | {{PacketList|0x01|Finish Configuration|rel=added}}
| |
− | {{PacketList|0x02|Keep Alive (configuration)|rel=added}} | |
− | {{PacketList|0x03|Pong (configuration)|rel=added}} | |
− | {{PacketList|0x04|Resource Pack|rel=added}}
| |
| |} | | |} |
| | | |
− | == New/modified data types == | + | == Handshake == |
− | | |
− | No changes so far.
| |
− | | |
− | == Entity Metadata ==
| |
− | | |
− | No changes so far.
| |
− | | |
− | === Entity ===
| |
− | | |
− | No changes so far.
| |
− | | |
− | == Block Actions ==
| |
− | | |
− | No changes so far.
| |
− | | |
− | == Inventories ==
| |
− | | |
− | No changes so far.
| |
− | | |
− | == Plugin Channels ==
| |
− | | |
− | No changes so far.
| |
− | | |
− | == Play ==
| |
− | | |
− | === Clientbound ===
| |
− | | |
− | No changes so far.
| |
− | | |
− | === Serverbound ===
| |
| | | |
| No changes so far. | | No changes so far. |
| | | |
| == Status == | | == Status == |
− |
| |
− | === Clientbound ===
| |
− |
| |
− | No changes so far.
| |
− |
| |
− | === Serverbound ===
| |
| | | |
| No changes so far. | | No changes so far. |
| | | |
| == Login == | | == Login == |
− |
| |
− | === Clientbound ===
| |
− |
| |
− | No changes so far.
| |
− |
| |
− | === Serverbound ===
| |
| | | |
| No changes so far. | | No changes so far. |
Line 96: |
Line 44: |
| === Clientbound === | | === Clientbound === |
| | | |
− | ==== Plugin Message (configuration) ==== | + | ==== Clientbound Report Details (configuration) ==== |
− | | |
− | {{Main|Plugin channels}}
| |
− | | |
− | Mods and plugins can use this to send their data. Minecraft itself uses the <code>minecraft:payload</code> channel to send many types of payloads, which are documented [[Plugin_channels|here]].
| |
− | | |
− | More documentation on this: [https://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ https://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]
| |
| | | |
− | Note that the length of Data is known only from the packet length, since the packet has no length field of any kind.
| + | Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server. |
| | | |
− | {| class="wikitable" | + | {| class="wikitable" {{added}} |
| ! Packet ID | | ! Packet ID |
| ! State | | ! State |
| ! Bound To | | ! Bound To |
− | ! Field Name | + | ! colspan="2"| Field Name |
− | ! Field Type | + | ! colspan="2"| Field Type |
| ! Notes | | ! Notes |
| |- | | |- |
− | | rowspan="2"| 0x00 | + | | rowspan="3"| 0x0F |
− | | rowspan="2"| Configuration | + | | rowspan="3"| Configuration |
− | | rowspan="2"| Client | + | | rowspan="3"| Client |
− | | Channel | + | | colspan="2"| Details Count |
− | | Identifier
| + | | colspan="2"| {{Type|VarInt}} (32) |
− | | Name of the [[plugin channel]] used to send the data.
| + | | The number of details in the following array. |
− | |-
| |
− | | Payload
| |
− | | Byte Array (1048576)
| |
− | | Any data, depending on the channel. <code>minecraft:payload</code> payloads are documented [[plugin channel|here]]. The length of this array must be inferred from the packet length.
| |
− | |}
| |
− | | |
− | In Notchian client, the maximum data length is 1048576 bytes.
| |
− | | |
− | ==== Disconnect (configuration) ====
| |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
− | |-
| |
− | | 0x01
| |
− | | Configuration
| |
− | | Client
| |
− | | Reason
| |
− | | [[Chat]]
| |
− | | The reason why the player was disconnected.
| |
− | |}
| |
− | | |
− | ==== Finish Configuration ====
| |
− | | |
− | Sent by the server to notify the client that all the configuration has finish. The client answers with its own [[#Finish_Configuration_2|Finish Configuration]] whenever it is ready to continue.
| |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
− | |-
| |
− | | rowspan="1"| 0x02
| |
− | | rowspan="1"| Configuration
| |
− | | rowspan="1"| Client
| |
− | | colspan="3"| ''no fields'' | |
− | |}
| |
− | | |
− | ==== Keep Alive (configuration) ====
| |
− | | |
− | The server will frequently send out a keep-alive, each containing a random ID. The client must respond with the same payload (see [[#Keep Alive (configuration) 2|serverbound Keep Alive]]). If the client does not respond to them for over 30 seconds, the server kicks the client. Vice versa, if the server does not send any keep-alives for 20 seconds, the client will disconnect and yields a "Timed out" exception.
| |
− | | |
− | The Notchian server uses a system-dependent time in milliseconds to generate the keep alive ID value. | |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
| |- | | |- |
− | | 0x03 | + | | rowspan="2"| Details |
− | | Configuration | + | | Title |
− | | Client | + | | rowspan="2"| {{Type|Array}} |
− | | Keep Alive ID | + | | {{Type|String}} (128) |
− | | Long
| |
| | | | | |
− | |}
| |
− |
| |
− | ==== Ping (configuration) ====
| |
− |
| |
− | Packet is not used by the Notchian server. When sent to the client, client responds with a [[#Pong (configuration)|Pong]] packet with the same id.
| |
− |
| |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
| |- | | |- |
− | | 0x04 | + | | Description |
− | | Configuration | + | | {{Type|String}} (4096) |
− | | Client
| |
− | | ID
| |
− | | Int
| |
| | | | | |
− | |}
| + | |} |
| | | |
− | ==== Registry Data ==== | + | ==== Clientbound Server Links (configuration) ==== |
| | | |
− | Represents certain registries that are sent from the server and are applied on the client.
| + | This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text). |
| | | |
− | {| class="wikitable" | + | {| class="wikitable" {{added}} |
| ! Packet ID | | ! Packet ID |
| ! State | | ! State |
| ! Bound To | | ! Bound To |
− | ! Field Name | + | ! colspan="2"| Field Name |
− | ! Field Type | + | ! colspan="2"| Field Type |
| ! Notes | | ! Notes |
| |- | | |- |
− | | rowspan="1"| 0x05 | + | | rowspan="4"| 0x10 |
− | | rowspan="1"| Configuration | + | | rowspan="4"| Configuration |
− | | rowspan="1"| Client | + | | rowspan="4"| Client |
− | | Registry Codec | + | | colspan="2"| Links Count |
− | | [[NBT|NBT Tag Compound]] | + | | colspan="2"| {{Type|VarInt}} |
− | | Information included below.
| + | | The number of links in the following array. |
− | |} | |
− | | |
− | | |
− | 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". | |
− | | |
− | {| class="wikitable"
| |
− | !Name
| |
− | !Type
| |
− | !style="width: 250px;" colspan="2"| Notes
| |
| |- | | |- |
− | | minecraft:dimension_type | + | | rowspan="3"| Links |
− | | TAG_Compound | + | | Is built-in |
− | | The dimension type registry (see below). | + | | rowspan="3"| {{Type|Array}} |
| + | | {{Type|Boolean}} |
| + | | Determines if the following label is built-in (from enum) or custom (text component). |
| |- | | |- |
− | | minecraft:worldgen/biome | + | | Label |
− | | TAG_Compound | + | | {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}} |
− | | The biome registry (see below). | + | | See below. |
| |- | | |- |
− | | minecraft:chat_type | + | | URL |
− | | TAG_Compound | + | | {{Type|String}} |
− | | The chat type registry (see below). | + | | Valid URL. |
− | |}
| + | |} |
| | | |
− | Dimension type registry:
| |
| | | |
− | {| class="wikitable" | + | {| class="wikitable" {{added}} |
− | !Name
| + | ! ID |
− | !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:
| |
− | | |
− | {| class="wikitable"
| |
| ! Name | | ! Name |
− | ! Type | + | ! Notes |
− | !style="width: 250px;" colspan="2"| Meaning
| |
− | ! Values
| |
| |- | | |- |
− | | piglin_safe | + | | 0 |
− | | TAG_Byte
| + | | Bug Report |
− | | colspan="2"| Whether piglins shake and transform to zombified piglins. | + | | Displayed on connection error screen; included as a comment in the disconnection report. |
− | | 1: true, 0: false. | |
| |- | | |- |
− | | has_raids | + | | 1 |
− | | TAG_Byte
| + | | Community Guidelines |
− | | colspan="2"| Whether players with the Bad Omen effect can cause a raid. | + | | |
− | | 1: true, 0: false. | |
| |- | | |- |
− | | monster_spawn_light_level | + | | 2 |
− | | TAG_Int or TAG_Compound
| + | | Support |
− | | Possibly the light level(s) at which monsters can spawn. | + | | |
− | | colspan="2"| 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 | + | | 3 |
− | | TAG_Int | + | | Status |
− | | colspan="2"|
| + | | |
− | | | |
| |- | | |- |
− | | natural | + | | 4 |
− | | TAG_Byte | + | | Feedback |
− | | colspan="2"| When false, compasses spin randomly. When true, nether portals can spawn zombified piglins. | + | | |
− | | 1: true, 0: false.
| |
| |- | | |- |
− | | ambient_light | + | | 5 |
− | | TAG_Float | + | | Community |
− | | colspan="2"| How much light the dimension has. | + | | |
− | | 0.0 to 1.0.
| |
| |- | | |- |
− | | fixed_time | + | | 6 |
− | | Optional TAG_Long | + | | Website |
− | | colspan="2"| If set, the time of the day is the specified value. | + | | |
− | | If set, 0 to 24000.
| |
| |- | | |- |
− | | infiniburn | + | | 7 |
− | | TAG_String | + | | Forums |
− | | colspan="2"| A resource location defining what block tag to use for infiniburn. | + | | |
− | | "#" or minecraft resource "#minecraft:...".
| |
| |- | | |- |
− | | respawn_anchor_works | + | | 8 |
− | | TAG_Byte | + | | News |
− | | colspan="2"| Whether players can charge and use respawn anchors. | + | | |
− | | 1: true, 0: false.
| |
| |- | | |- |
− | | has_skylight | + | | 9 |
− | | TAG_Byte | + | | Announcements |
− | | colspan="2"| Whether the dimension has skylight access or not. | + | | |
− | | 1: true, 0: false.
| |
| |- | | |- |
− | | bed_works
| |
− | | TAG_Byte
| |
− | | colspan="2"| Whether players can use a bed to sleep.
| |
− | | 1: true, 0: false.
| |
− | |-
| |
− | | effects
| |
− | | TAG_String
| |
− | | colspan="2"| ?
| |
− | | "minecraft:overworld", "minecraft:the_nether", "minecraft:the_end" or something else.
| |
− | |-
| |
− | | min_y
| |
− | | TAG_Int
| |
− | | colspan="2"| The minimum Y level.
| |
− | | A multiple of 16. Example: -64
| |
− | |-
| |
− | | height
| |
− | | TAG_Int
| |
− | | colspan="2"| The maximum height.
| |
− | | A multiple of 16. Example: 256
| |
− | |-
| |
− | | logical_height
| |
− | | TAG_Int
| |
− | | colspan="2"| 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
| |
− | | colspan="2"| The multiplier applied to coordinates when traveling to the dimension.
| |
− | | 0.00001 - 30000000.0
| |
− | |-
| |
− | | ultrawarm
| |
− | | TAG_Byte
| |
− | | colspan="2"| 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
| |
− | | colspan="2"| Whether the dimension has a bedrock ceiling or not. When true, causes lava to spread faster.
| |
− | | 1: true, 0: false.
| |
| |} | | |} |
| | | |
− | Biome registry:
| + | === Serverbound === |
| | | |
− | {| class="wikitable"
| + | No changes so far. |
− | !Name
| |
− | !Type
| |
− | !style="width: 250px;" colspan="2"| Notes
| |
− | |-
| |
− | | type
| |
− | | TAG_String
| |
− | | The name of the registry. Always "minecraft:worldgen/biome".
| |
− | |-
| |
− | | value
| |
− | | TAG_List
| |
− | | List of biome registry entries (see below).
| |
− | |}
| |
| | | |
− | Biome registry entry:
| + | == Play == |
| | | |
− | {| class="wikitable"
| + | === Clientbound === |
− | !Name
| |
− | !Type
| |
− | !style="width: 250px;" colspan="2"| Notes
| |
− | |-
| |
− | | name
| |
− | | TAG_String
| |
− | | The name of the biome (for example, "minecraft:ocean").
| |
− | |-
| |
− | | id
| |
− | | TAG_Int
| |
− | | The protocol ID of the biome (matches the index of the element in the registry list).
| |
− | |-
| |
− | | element
| |
− | | TAG_Compound
| |
− | | The biome properties (see below).
| |
− | |}
| |
| | | |
− | Biome properties:
| + | ==== Clientbound Report Details (play) ==== |
| | | |
− | {| class="wikitable"
| + | Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server. |
− | ! colspan="3"|Name
| |
− | ! colspan="2"|Type
| |
− | !style="width: 250px;" colspan="2"| Meaning
| |
− | ! colspan="2"|Values
| |
− | |-
| |
− | | colspan="3"|has_precipitation
| |
− | | colspan="2"|TAG_Byte
| |
− | | colspan="2"| Determines whether or not the biome has precipitation.
| |
− | | colspan="2"| 1: true, 0: false.
| |
− | |-
| |
− | | colspan="3"| depth
| |
− | | colspan="2"| Optional TAG_Float
| |
− | | colspan="2"| The depth factor of the biome.
| |
− | | colspan="2"| The default values vary between 1.5 and -1.8.
| |
− | |-
| |
− | | colspan="3"| temperature
| |
− | | colspan="2"| TAG_Float
| |
− | | colspan="2"| The temperature factor of the biome.
| |
− | | colspan="2"| The default values vary between 2.0 and -0.5.
| |
− | |-
| |
− | | colspan="3"| scale
| |
− | | colspan="2"| Optional TAG_Float
| |
− | | colspan="2"| ?
| |
− | | colspan="2"| The default values vary between 1.225 and 0.0.
| |
− | |-
| |
− | | colspan="3"| downfall
| |
− | | colspan="2"| TAG_Float
| |
− | | colspan="2"| ?
| |
− | | colspan="2"| The default values vary between 1.0 and 0.0.
| |
− | |-
| |
− | | colspan="3"| category
| |
− | | colspan="2"| Optional TAG_String
| |
− | | colspan="2"| The category of the biome.
| |
− | | colspan="2"| Known values are "ocean", "plains", "desert", "forest", "extreme_hills", "taiga", "swamp", "river", "nether", "the_end", "icy", "mushroom", "beach", "jungle", "mesa", "savanna", and "none".
| |
− | |-
| |
− | | colspan="3"| temperature_modifier
| |
− | | colspan="2"| Optional TAG_String
| |
− | | colspan="2"| ?
| |
− | | colspan="2"| The only known value is "frozen".
| |
− | |-
| |
− | | rowspan="13"| effects
| |
− | | colspan="2"| sky_color
| |
− | | rowspan="11"| TAG_Compound
| |
− | | TAG_Int
| |
− | | colspan="2"| The color of the sky.
| |
− | | Example: 8364543, which is #7FA1FF in RGB.
| |
− | |-
| |
− | | colspan="2"| water_fog_color
| |
− | | TAG_Int
| |
− | | colspan="2"| Possibly the tint color when swimming.
| |
− | | Example: 8364543, which is #7FA1FF in RGB.
| |
− | |-
| |
− | | colspan="2"| fog_color
| |
− | | TAG_Int
| |
− | | colspan="2"| Possibly the color of the fog effect when looking past the view distance.
| |
− | | Example: 8364543, which is #7FA1FF in RGB.
| |
− | |-
| |
− | | colspan="2"| water_color
| |
− | | TAG_Int
| |
− | | colspan="2"| The tint color of the water blocks.
| |
− | | Example: 8364543, which is #7FA1FF in RGB.
| |
− | |-
| |
− | | colspan="2"| foliage_color
| |
− | | Optional TAG_Int
| |
− | | colspan="2"| The tint color of the grass.
| |
− | | Example: 8364543, which is #7FA1FF in RGB.
| |
− | |-
| |
− | | colspan="2"| grass_color
| |
− | | Optional TAG_Int
| |
− | | colspan="2"| ?
| |
− | | Example: 8364543, which is #7FA1FF in RGB.
| |
− | |-
| |
− | | colspan="2"| grass_color_modifier
| |
− | | Optional TAG_String
| |
− | | colspan="2"| Unknown, likely affects foliage color.
| |
− | | If set, known values are "swamp" and "dark_forest".
| |
− | |-
| |
− | | colspan="2"| music
| |
− | | Optional TAG_Compound
| |
− | | colspan="2"| 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).
| |
− | |-
| |
− | | colspan="2"| ambient_sound
| |
− | | Optional TAG_String
| |
− | | colspan="2"| Ambient soundtrack.
| |
− | | If present, the ID of a soundtrack. Example: "minecraft:ambient.basalt_deltas.loop".
| |
− | |-
| |
− | | colspan="2"| additions_sound
| |
− | | Optional TAG_Compound
| |
− | | colspan="2"| Additional ambient sound that plays randomly.
| |
− | | If present, contains the fields: sound (TAG_String), tick_chance (TAG_Double).
| |
− | |-
| |
− | | colspan="2"| mood_sound
| |
− | | Optional TAG_Compound
| |
− | | colspan="2"| 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).
| |
− | |-
| |
− | | rowspan="2"| particle
| |
− | | probability
| |
− | | rowspan="2"| Optional TAG_Compound
| |
− | | TAG_FLOAT
| |
− | | rowspan="2"| 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 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" {{added}} |
− | | |
− | {| 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":
| |
− | | |
− | {| class="wikitable"
| |
− | !Name
| |
− | !Type
| |
− | !style="width: 250px;" colspan="2"| 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"
| |
− | |}
| |
− | | |
− | ==== Resource Pack ====
| |
− | | |
− | {| class="wikitable"
| |
| ! Packet ID | | ! Packet ID |
| ! State | | ! State |
| ! Bound To | | ! Bound To |
− | ! Field Name | + | ! colspan="2"| Field Name |
− | ! Field Type | + | ! colspan="2"| Field Type |
| ! Notes | | ! Notes |
| |- | | |- |
− | | rowspan="5"| 0x06 | + | | rowspan="3"| 0x7A |
− | | rowspan="5"| Configuration | + | | rowspan="3"| Configuration |
− | | rowspan="5"| Client | + | | rowspan="3"| Client |
− | | URL | + | | colspan="2"| Details Count |
− | | String (32767) | + | | colspan="2"| {{Type|VarInt}} (32) |
− | | The URL to the resource pack. | + | | The number of details in the following array. |
| |- | | |- |
− | | Hash | + | | rowspan="2"| Details |
− | | String (40) | + | | Title |
− | | A 40 character hexadecimal and lowercase [[wikipedia:SHA-1|SHA-1]] hash of the resource pack file.<br />If it's not a 40 character hexadecimal string, the client will not use it for hash verification and likely waste bandwidth — but it will still treat it as a unique id | + | | rowspan="2"| {{Type|Array}} |
| + | | {{Type|String}} (128) |
| + | | |
| |- | | |- |
− | | Forced | + | | Description |
− | | Boolean | + | | {{Type|String}} (4096) |
− | | The notchian client will be forced to use the resource pack from the server. If they decline they will be kicked from the server.
| |
− | |-
| |
− | | Has Prompt Message
| |
− | | Boolean
| |
− | | <code>true</code> If the next field will be sent <code>false</code> otherwise. When <code>false</code>, this is the end of the packet
| |
− | |-
| |
− | | Prompt Message
| |
− | | Optional [[Chat]]
| |
− | | This is shown in the prompt making the client accept or decline the resource pack.
| |
− | |}
| |
− | | |
− | ==== Feature Flags ====
| |
− | | |
− | Used to enable and disable features, generally experimental ones, on the client.
| |
− | | |
− | {| class="wikitable" | |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
− | |-
| |
− | | rowspan="2"| 0x07
| |
− | | rowspan="2"| Configuration
| |
− | | rowspan="2"| Client
| |
− | | Total Features
| |
− | | VarInt
| |
− | | Number of features that appear in the array below.
| |
− | |-
| |
− | | Feature Flags
| |
− | | Identifier Array
| |
| | | | | |
− | |}
| + | |} |
− | | |
− | As of 23w31a, the following feature flags are available:
| |
| | | |
− | * minecraft:vanilla - enables vanilla features</li>
| + | ==== Clientbound Server Links (play) ==== |
− | * minecraft:bundle - enables support for the bundle</li>
| |
− | * minecraft:trade_rebalance - enables support for the rebalanced villager trades</li>
| |
| | | |
− | ==== Update Tags ====
| + | This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text). |
| | | |
− | {| class="wikitable" | + | {| class="wikitable" {{added}} |
| ! Packet ID | | ! Packet ID |
| ! State | | ! State |
Line 662: |
Line 206: |
| ! Notes | | ! Notes |
| |- | | |- |
− | | rowspan="3"| 0x08 | + | | rowspan="4"| 0x7B |
− | | rowspan="3"| Configuration | + | | rowspan="4"| Configuration |
− | | rowspan="3"| Client | + | | rowspan="4"| Client |
− | | colspan="2"| Length of the array | + | | colspan="2"| Links Count |
− | | colspan="2"| VarInt | + | | colspan="2"| {{Type|VarInt}} |
− | | | + | | The number of links in the following array. |
| + | |- |
| + | | rowspan="3"| Links |
| + | | Is built-in |
| + | | rowspan="3"| {{Type|Array}} |
| + | | {{Type|Boolean}} |
| + | | Determines if the following label is built-in (from enum) or custom (text component). |
| |- | | |- |
− | | rowspan="2"| Array of tags | + | | Label |
− | | Tag type | + | | {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}} |
− | | rowspan="2"| Array
| + | | See below. |
− | | Identifier
| |
− | | Tag identifier (Vanilla required tags are <code>minecraft:block</code>, <code>minecraft:item</code>, <code>minecraft:fluid</code>, <code>minecraft:entity_type</code>, and <code>minecraft:game_event</code>) | |
| |- | | |- |
− | | Array of Tag | + | | URL |
− | | (See below) | + | | {{Type|String}} |
− | | | + | | Valid URL. |
− | |}
| + | |} |
| | | |
− | Tags look like:
| + | {| class="wikitable" {{added}} |
− | | + | ! ID |
− | {| class="wikitable" | + | ! Name |
− | ! colspan="2"| Field Name | |
− | ! colspan="2"| Field Type | |
| ! Notes | | ! Notes |
| |- | | |- |
− | | colspan="2"| Length | + | | 0 |
− | | colspan="2"| VarInt | + | | Bug Report |
− | | Number of elements in the following array | + | | Displayed on connection error screen; included as a comment in the disconnection report. |
| |- | | |- |
− | | rowspan="3"| Tags | + | | 1 |
− | | Tag name | + | | Community Guidelines |
− | | rowspan="3"| Array | + | | |
− | | Identifier | + | |- |
− | | | + | | 2 |
| + | | Support |
| + | | |
| + | |- |
| + | | 3 |
| + | | Status |
| + | | |
| |- | | |- |
− | | Count | + | | 4 |
− | | VarInt | + | | Feedback |
− | | Number of elements in the following array | + | | |
| |- | | |- |
− | | Entries | + | | 5 |
− | | Array of VarInt | + | | Community |
− | | Numeric ID of the given type (block, item, etc.). | + | | |
− | |}
| |
− | | |
− | More information on tags is available at: https://minecraft.gamepedia.com/Tag
| |
− | | |
− | And a list of all tags is here: https://minecraft.gamepedia.com/Tag#List_of_tags
| |
− | | |
− | | |
− | === Serverbound ===
| |
− | | |
− | ==== Plugin Message (configuration) ====
| |
− | | |
− | {{Main|Plugin channels}}
| |
− | | |
− | Mods and plugins can use this to send their data. Minecraft itself uses the <code>minecraft:payload</code> channel to send many types of payloads, which are documented [[Plugin_channels|here]].
| |
− | | |
− | More documentation on this: [https://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/ https://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/]
| |
− | | |
− | Note that the length of Data is known only from the packet length, since the packet has no length field of any kind.
| |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
| |- | | |- |
− | | rowspan="2"| 0x00 | + | | 6 |
− | | rowspan="2"| Configuration
| + | | Website |
− | | rowspan="2"| Server
| + | | |
− | | Channel
| |
− | | Identifier | |
− | | Name of the [[plugin channel]] used to send the data. | |
| |- | | |- |
− | | Payload | + | | 7 |
− | | Byte Array (32767) | + | | Forums |
− | | Any data, depending on the channel. <code>minecraft:payload</code> payloads are documented [[plugin channel|here]]. The length of this array must be inferred from the packet length. | + | | |
− | |}
| |
− | | |
− | In Notchian server, the maximum data length is 32767 bytes.
| |
− | | |
− | ==== Finish Configuration ====
| |
− | | |
− | Sent by the client to notify the client that all the configuration has finished. It is sent after the server sends its own [[#Finish_Configuration|Finish Configuration]].
| |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
| |- | | |- |
− | | rowspan="1"| 0x01 | + | | 8 |
− | | rowspan="1"| Configuration
| + | | News |
− | | rowspan="1"| Server | + | | |
− | | colspan="3"| ''no fields'' | |
− | |}
| |
− | | |
− | ==== Keep Alive (configuration) ====
| |
− | | |
− | The server will frequently send out a keep-alive (see [[#Keep Alive (configuration)|clientbound Keep Alive]]), each containing a random ID. The client must respond with the same packet.
| |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
| |- | | |- |
− | | 0x02 | + | | 9 |
− | | Configuration | + | | Announcements |
− | | Server | + | | |
− | | Keep Alive ID
| |
− | | Long
| |
− | |
| |
− | |}
| |
− | | |
− | ==== Pong (configuration) ====
| |
− | | |
− | Response to the clientbound packet ([[#Ping (configuration)|Ping]]) with the same id.
| |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
| |- | | |- |
− | | 0x03
| |
− | | Configuration
| |
− | | Server
| |
− | | ID
| |
− | | Int
| |
− | | id is the same as the ping packet
| |
| |} | | |} |
| | | |
− | ==== Resource Pack ==== | + | === Serverbound === |
− | | |
− | {| class="wikitable"
| |
− | ! Packet ID
| |
− | ! State
| |
− | ! Bound To
| |
− | ! Field Name
| |
− | ! Field Type
| |
− | ! Notes
| |
− | |-
| |
− | | 0x04
| |
− | | Configuration
| |
− | | Server
| |
− | | Result
| |
− | | VarInt Enum
| |
− | | 0: successfully loaded, 1: declined, 2: failed download, 3: accepted.
| |
− | |}
| |
| | | |
| + | No changes so far. |
| | | |
| [[Category:Minecraft Modern]] | | [[Category:Minecraft Modern]] |