Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(Updated to 1.21-pre2)
 
(834 intermediate revisions by 52 users not shown)
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.11.2, protocol 316]]) to the current pre-release (currently [[Protocol version numbers|17w13b, protocol 319]]). 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 ===
Line 18: Line 18:
 
  !colspan="2"| Documentation
 
  !colspan="2"| Documentation
 
  |-
 
  |-
  !colspan="4"| Handshaking serverbound
+
  !colspan="4"| Configuration clientbound
  {{PacketList|0x00|Handshake}}
+
  {{PacketList|0x0F|Clientbound Report Details (configuration)|rel=added}}
 +
{{PacketList|0x10|Clientbound Server Links (configuration)|rel=added}}
 
  |-
 
  |-
 
  !colspan="4"| Play clientbound
 
  !colspan="4"| Play clientbound
  {{PacketList|0x08|Advancements|rel=added}}
+
  {{PacketList|0x7A|Clientbound Report Details (play)|rel=added}}
{{PacketList|{{Change|0x08|0x09}}|Block Break Animation|pre=unchanged}}
+
  {{PacketList|0x7B|Clientbound Server Links (play)|rel=added}}
{{PacketList|{{Change|0x09|0x0A}}|Update Block Entity|pre=unchanged}}
 
{{PacketList|{{Change|0x0A|0x0B}}|Block Action|pre=unchanged}}
 
{{PacketList|{{Change|0x0B|0x0C}}|Block Change|pre=unchanged}}
 
{{PacketList|{{Change|0x0C|0x0D}}|Boss Bar|pre=unchanged}}
 
{{PacketList|{{Change|0x0D|0x0E}}|Server Difficulty|pre=unchanged}}
 
{{PacketList|{{Change|0x0E|0x0F}}|Tab-Complete (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x0F|0x10}}|Chat Message (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x10|0x11}}|Multi Block Change|pre=unchanged}}
 
{{PacketList|{{Change|0x11|0x12}}|Confirm Transation (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x12|0x13}}|Close Window (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x13|0x14}}|Open Window|pre=unchanged}}
 
{{PacketList|{{Change|0x14|0x15}}|Window Items|pre=unchanged}}
 
{{PacketList|{{Change|0x15|0x16}}|Window Property|pre=unchanged}}
 
{{PacketList|{{Change|0x16|0x17}}|Set Slot|pre=unchanged}}
 
{{PacketList|{{Change|0x17|0x18}}|Set Cooldown|pre=unchanged}}
 
{{PacketList|{{Change|0x18|0x19}}|Plugin Message (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x19|0x1A}}|Named Sound Effect|pre=unchanged}}
 
{{PacketList|{{Change|0x1A|0x1B}}|Disconnect (play)|pre=unchanged}}
 
{{PacketList|{{Change|0x1B|0x1C}}|Entity Status|pre=unchanged}}
 
{{PacketList|{{Change|0x1C|0x1D}}|Explosion|pre=unchanged}}
 
{{PacketList|{{Change|0x1D|0x1E}}|Unload Chunk|pre=unchanged}}
 
{{PacketList|{{Change|0x1E|0x1F}}|Change Game State|pre=unchanged}}
 
{{PacketList|{{Change|0x1F|0x20}}|Keep Alive (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x20|0x21}}|Chunk Data|pre=unchanged}}
 
{{PacketList|{{Change|0x21|0x22}}|Effect|pre=unchanged}}
 
{{PacketList|{{Change|0x22|0x23}}|Particle|pre=unchanged}}
 
{{PacketList|{{Change|0x23|0x24}}|Join Game|pre=unchanged}}
 
{{PacketList|{{Change|0x24|0x25}}|Particle|pre=unchanged}}
 
{{PacketList|{{Change|0x25|0x26}}|Entity Relative Move|pre=unchanged}}
 
{{PacketList|{{Change|0x26|0x27}}|Entity Look And Relative Move|pre=unchanged}}
 
{{PacketList|{{Change|0x27|0x28}}|Entity Look|pre=unchanged}}
 
{{PacketList|{{Change|0x28|0x29}}|Entity|pre=unchanged}}
 
{{PacketList|{{Change|0x29|0x2A}}|Vehicle Move (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x2A|0x2B}}|Open Sign Editor|pre=unchanged}}
 
{{PacketList|{{Change|0x2B|0x2C}}|Player Abilities (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x2C|0x2D}}|Combat Event|pre=unchanged}}
 
{{PacketList|{{Change|0x2D|0x2E}}|Player List Item|pre=unchanged}}
 
{{PacketList|{{Change|0x2E|0x2F}}|Player Position And Look (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x2F|0x30}}|Use Bed|pre=unchanged}}
 
{{PacketList|0x31|Unlock Recipes|rel=added}}
 
  {{PacketList|{{Change|0x30|0x32}}|Destroy Entities|pre=unchanged}}
 
{{PacketList|{{Change|0x31|0x33}}|Remove Entity Effect|pre=unchanged}}
 
{{PacketList|{{Change|0x32|0x34}}|Resource Pack Send|pre=unchanged}}
 
{{PacketList|{{Change|0x33|0x35}}|Respawn|pre=unchanged}}
 
{{PacketList|{{Change|0x34|0x36}}|Entity Head Look|pre=unchanged}}
 
{{PacketList|{{Change|0x35|0x37}}|World Border|pre=unchanged}}
 
{{PacketList|{{Change|0x36|0x38}}|Camera|pre=unchanged}}
 
{{PacketList|{{Change|0x37|0x39}}|Held Item Change (clientbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x38|0x3A}}|Display Scoreboard|pre=unchanged}}
 
{{PacketList|{{Change|0x39|0x3B}}|Entity Metadata|pre=unchanged}}
 
{{PacketList|{{Change|0x3A|0x3C}}|Attach Entity|pre=unchanged}}
 
{{PacketList|{{Change|0x3B|0x3D}}|Entity Velocity|pre=unchanged}}
 
{{PacketList|{{Change|0x3C|0x3E}}|Entity Equipment|pre=unchanged}}
 
{{PacketList|{{Change|0x3D|0x3F}}|Set Experience|pre=unchanged}}
 
{{PacketList|{{Change|0x3E|0x40}}|Update Health|pre=unchanged}}
 
{{PacketList|{{Change|0x3F|0x41}}|Scoreboard Objective|pre=unchanged}}
 
{{PacketList|{{Change|0x40|0x42}}|Set Passengers|pre=unchanged}}
 
{{PacketList|{{Change|0x41|0x43}}|Teams|pre=unchanged}}
 
{{PacketList|{{Change|0x42|0x44}}|Update Score|pre=unchanged}}
 
{{PacketList|{{Change|0x43|0x45}}|Spawn Position|pre=unchanged}}
 
{{PacketList|{{Change|0x44|0x46}}|Time Update|pre=unchanged}}
 
{{PacketList|{{Change|0x45|0x47}}|Title|pre=unchanged}}
 
{{PacketList|{{Change|0x46|0x48}}|Sound Effect|pre=unchanged}}
 
{{PacketList|{{Change|0x47|0x49}}|Player List Header And Footer|pre=unchanged}}
 
{{PacketList|{{Change|0x48|0x4A}}|Collect Item|pre=unchanged}}
 
{{PacketList|{{Change|0x49|0x4B}}|Entity Teleport|pre=unchanged}}
 
{{PacketList|{{Change|0x4A|0x4C}}|Entity Properties|pre=unchanged}}
 
{{PacketList|{{Change|0x4B|0x4D}}|Entity Effect|pre=unchanged}}
 
|-
 
!colspan="4"| Play serverbound
 
{{PacketList|0x01|Unknown|rel=added}}
 
{{PacketList|{{Change|0x01|0x02}}|Tab-Complete (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x02|0x03}}|Chat Message (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x03|0x04}}|Client Status|pre=unchanged}}
 
{{PacketList|{{Change|0x04|0x05}}|Client Settings|pre=unchanged}}
 
{{PacketList|{{Change|0x05|0x06}}|Confirm Transaction (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x06|0x07}}|Enchant Item|pre=unchanged}}
 
{{PacketList|{{Change|0x07|0x08}}|Click Window|pre=unchanged}}
 
{{PacketList|{{Change|0x08|0x09}}|Close Window (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x09|0x0A}}|Plugin Message (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x0A|0x0B}}|Use Entity|pre=unchanged}}
 
{{PacketList|{{Change|0x0B|0x0C}}|Keep Alive (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x0C|0x0D}}|Player Position|pre=unchanged}}
 
{{PacketList|{{Change|0x0D|0x0E}}|Player Position And Look (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x0E|0x0F}}|Player Look|pre=unchanged}}
 
{{PacketList|{{Change|0x0F|0x10}}|Player|pre=unchanged}}
 
{{PacketList|{{Change|0x10|0x11}}|Vehicle Move (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x11|0x12}}|Steer Boat|pre=unchanged}}
 
{{PacketList|{{Change|0x12|0x13}}|Player Abilities (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x13|0x14}}|Player Digging|pre=unchanged}}
 
{{PacketList|{{Change|0x14|0x15}}|Entity Action|pre=unchanged}}
 
{{PacketList|{{Change|0x15|0x16}}|Steer Vehicle|pre=unchanged}}
 
{{PacketList|0x17|Recipe Displayed|rel=added}}
 
{{PacketList|{{Change|0x16|0x18}}|Resource Pack Status|pre=unchanged}}
 
{{PacketList|{{Change|0x17|0x19}}|Held Item Change (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x18|0x1A}}|Creative Inventory Action|pre=unchanged}}
 
{{PacketList|{{Change|0x19|0x1B}}|Update Sign|pre=unchanged}}
 
{{PacketList|{{Change|0x1A|0x1C}}|Animation (serverbound)|pre=unchanged}}
 
{{PacketList|{{Change|0x1B|0x1D}}|Spectate|pre=unchanged}}
 
{{PacketList|{{Change|0x1C|0x1E}}|Player Block Placement|pre=unchanged}}
 
{{PacketList|{{Change|0x1D|0x1F}}|Use Item|pre=unchanged}}
 
 
  |-
 
  |-
 
|}
 
|}
  
== New/modified data types ==
+
== Handshake ==
 +
 
 +
No changes so far.
 +
 
 +
== Status ==
 +
 
 +
No changes so far.
 +
 
 +
== Login ==
 +
 
 +
No changes so far.
 +
 
 +
== Configuration ==
 +
 
 +
=== Clientbound ===
 +
 
 +
==== Clientbound Report Details (configuration) ====
  
=== Entity Metadata ===
+
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
  
Note that entity metadata is a totally distinct concept from block metadata. It is not required to send all metadata fields, or even any metadata fields, so long as the terminating entry is correctly sent.
+
{| class="wikitable" {{added}}
 +
! Packet ID
 +
! State
 +
! Bound To
 +
! colspan="2"| Field Name
 +
! colspan="2"| Field Type
 +
! Notes
 +
|-
 +
| rowspan="3"| 0x0F
 +
| rowspan="3"| Configuration
 +
| rowspan="3"| Client
 +
| colspan="2"| Details Count
 +
| colspan="2"| {{Type|VarInt}} (32)
 +
  | The number of details in the following array.
 +
|-
 +
| rowspan="2"| Details
 +
| Title
 +
| rowspan="2"| {{Type|Array}}
 +
| {{Type|String}} (128)
 +
|
 +
|-
 +
| Description
 +
| {{Type|String}} (4096)
 +
|
 +
|}
  
Entity Metadata is an array of entries, each of which looks like the following:
+
==== Clientbound Server Links (configuration) ====
  
{| class="wikitable"
+
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).
  ! Name
+
 
  ! Type
+
{| class="wikitable" {{added}}
  ! Meaning
+
  ! Packet ID
 +
! State
 +
! Bound To
 +
! colspan="2"| Field Name
 +
  ! colspan="2"| Field Type
 +
  ! Notes
 +
|-
 +
| rowspan="4"| 0x10
 +
| rowspan="4"| Configuration
 +
| rowspan="4"| Client
 +
| colspan="2"| Links Count
 +
| colspan="2"| {{Type|VarInt}}
 +
| The number of links in the following array.
 
  |-
 
  |-
  | Index
+
  | rowspan="3"| Links
  | Unsigned Byte
+
  | Is built-in
  | Unique index key determining the meaning of the following value, see the table below. If this is <code>0xff</code> then the it is the end of the Entity Metadata array and no more is read.
+
  | rowspan="3"| {{Type|Array}}
 +
| {{Type|Boolean}}
 +
| Determines if the following label is built-in (from enum) or custom (text component).
 
  |-
 
  |-
  | Type
+
  | Label
  | Optional Byte Enum
+
  | {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
  | Only if Index is not <code>0xff</code>; the type of the index, see the table below
+
  | See below.
 
  |-
 
  |-
  | Value
+
  | URL
  | Optional ''value of Type''
+
  | {{Type|String}}
  | Only if Index is not <code>0xff</code>: the value of the metadata field
+
  | Valid URL.
|}
+
|}
 +
 
  
{| class="wikitable"
+
{| class="wikitable" {{added}}
  ! Value of Type field
+
  ! ID
  ! [[Data types|Type]] of Value field
+
  ! Name
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
 
  | 0
 
  | 0
  | Byte
+
  | Bug Report
  |  
+
  | Displayed on connection error screen; included as a comment in the disconnection report.
 
  |-
 
  |-
 
  | 1
 
  | 1
  | VarInt
+
  | Community Guidelines
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 2
 
  | 2
  | Float
+
  | Support
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 3
 
  | 3
  | String
+
  | Status
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 4
 
  | 4
  | [[Chat]]
+
  | Feedback
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 5
 
  | 5
  | [[Slot]]
+
  | Community
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 6
 
  | 6
  | Boolean
+
  | Website
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 7
 
  | 7
  | Rotation
+
  | Forums
  | 3 floats: rotation on x, rotation on y, rotation on z
+
  |  
 
  |-
 
  |-
 
  | 8
 
  | 8
  | [[Data Types#Position|Position]]
+
  | News
 
  |  
 
  |  
 
  |-
 
  |-
 
  | 9
 
  | 9
  | OptPosition (Boolean + Optional Position)
+
  | Announcements
  | Position is present if the Boolean is set to true
+
  |  
|-
 
| 10
 
| Direction (VarInt)
 
| (Down = 0, Up = 1, North = 2, South = 3, West = 4, East = 5)
 
|-
 
| 11
 
| OptUUID (Boolean + Optional UUID)
 
| UUID is present if the Boolean is set to true
 
 
  |-
 
  |-
| 12
 
| OptBlockID (VarInt)
 
| 0 for absent otherwise, <code><nowiki>id &lt;&lt; 4 | data</nowiki></code>
 
|-style="background-color: #d9ead3;"
 
| 13
 
| [[NBT|NBT Tag]]
 
|
 
 
  |}
 
  |}
  
Entity classes also recursively inherit fields from classes they extend.
+
=== Serverbound ===
 
 
=== Parrot ===
 
 
 
Extends [[#TameableAnimal|TameableAnimal]].
 
 
 
{| class="wikitable" style="background-color: #d9ead3;"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 15
 
| VarInt
 
|colspan="2"| Variant (0: red/blue, 1: blue, 2: green, 3: yellow/blue, 4: silver)
 
| 0
 
|}
 
 
 
=== Player ===
 
 
 
Extends [[#Living|Living]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 11
 
| Float
 
|colspan="2"| Additional Hearts
 
| 0.0
 
|-
 
| 12
 
| VarInt
 
|colspan="2"| Score
 
| 0
 
|-
 
|rowspan="10"| 13
 
|rowspan="10"| Byte
 
|colspan="2"| The Displayed Skin Parts bit mask that is sent in [[Protocol#Client Settings|Client Settings]]
 
|rowspan="10"| 0
 
|-
 
! Bit mask !! Meaning
 
|-
 
| 0x01 || Cape enabled
 
|-
 
| 0x02 || Jacket enabled
 
|-
 
| 0x04 || Left sleeve enabled
 
|-
 
| 0x08 || Right sleeve enabled
 
|-
 
| 0x10 || Left pants leg enabled
 
|-
 
| 0x20 || Right pants leg enabled
 
|-
 
| 0x40 || Hat enabled
 
|-
 
| 0x80 || ''Unused''
 
|-
 
| 14
 
| Byte
 
|colspan="2"| Main hand (0 : Left, 1 : Right)
 
| 1
 
|- style="background-color: #d9ead3;"
 
| 15
 
| NBT Tag
 
|colspan="2"|Left shoulder entity data
 
|
 
|- style="background-color: #d9ead3;"
 
| 16
 
| NBT Tag
 
|colspan="2"|Right shoulder entity data
 
|
 
|}
 
 
 
== Block Actions ==
 
 
 
No changes so far.
 
 
 
== Plugin Channels ==
 
  
 
No changes so far.
 
No changes so far.
Line 305: Line 164:
 
=== Clientbound ===
 
=== Clientbound ===
  
==== Advancements ====
+
==== Clientbound Report Details (play) ====
 +
 
 +
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
  !colspan="2"| Field Name
+
  ! colspan="2"| Field Name
  !colspan="2"| Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  |rowspan="9"| 0x08
+
  | rowspan="3"| 0x7A
  |rowspan="9"| Play
+
  | rowspan="3"| Configuration
  |rowspan="9"| Client
+
  | rowspan="3"| Client
  |colspan="2"| Reset/Clear
+
  | colspan="2"| Details Count
  |colspan="2"| Boolean
+
  | colspan="2"| {{Type|VarInt}} (32)
| Whether to reset/clear the current advancements
+
  | The number of details in the following array.
|-
 
|colspan="2"| Mapping size
 
|colspan="2"| VarInt
 
| Size of the following array
 
|-
 
|rowspan="2"| Advancement mapping
 
| Key
 
|rowspan="2"| Array
 
| Identifier
 
| The identifier of the advancement
 
|-
 
| Value
 
| Advancement
 
| See below
 
|-
 
|colspan="2"| List size
 
|colspan="2"| VarInt
 
| Size of the following array
 
|-
 
|colspan="2"| Identifiers
 
|colspan="2"| Array of Identifier
 
| The identifiers of the advancements that should be removed
 
|-
 
|colspan="2"| Progress size
 
|colspan="2"| VarInt
 
| Size of the following array
 
|-
 
|rowspan="2"| Progress mapping
 
| Key
 
|rowspan="2"| Array
 
| Identifier
 
| The identifier of the advancement
 
|-
 
| Value
 
| Advancement progress
 
| See below
 
|}
 
 
 
Advancement structure:
 
 
 
{| class="wikitable"
 
!colspan="2"| Field Name
 
!colspan="2"| Field Type
 
! Notes
 
|-
 
|colspan="2"| Has parent
 
|colspan="2"| Boolean
 
| Indicates whether the next field exists
 
|-
 
|colspan="2"| Parent id
 
|colspan="2"| Optional Identifier
 
| The identifier of the parent advancement.
 
|-
 
|colspan="2"| Has display
 
|colspan="2"| Boolean
 
| Indicates whether the next field exists
 
|-
 
|colspan="2"| Display data
 
|colspan="2"| Optional advancement display
 
| See below.
 
|-
 
|colspan="2"| Number of criteria
 
|colspan="2"| VarInt
 
| Size of the following array
 
|-
 
|rowspan="2"| Criteria
 
| Key
 
|rowspan="2"| Array
 
| Identifier
 
  | The identifier of the criterion
 
|-
 
| Value
 
| '''Void'''
 
| There is ''no'' content written here.  Perhaps this will be expanded in the future?
 
|-
 
|colspan="2"| Array length
 
|colspan="2"| VarInt
 
| Number of arrays in the following array
 
|-
 
|rowspan="2"| Requirements
 
| Array length 2
 
|rowspan="2"| Array
 
| VarInt
 
| Number of elements in the following array
 
|-
 
| Requirement
 
| Array of String
 
| Array of required criteria
 
|}
 
 
 
Advancement display:
 
 
 
{| class="wikitable"
 
! Field Name
 
! Field Type
 
! Notes
 
 
  |-
 
  |-
 +
| rowspan="2"| Details
 
  | Title
 
  | Title
  | Chat
+
  | rowspan="2"| {{Type|Array}}
 +
| {{Type|String}} (128)
 
  |
 
  |
 
  |-
 
  |-
  | Icon
+
  | Description
  | VarInt
+
  | {{Type|String}} (4096)
| Advancement icon item id.  0 indicates <code>null</code>
 
|-
 
| Frame type
 
| VarInt enum
 
| 0 = TASK, 1 = CHALLENGE
 
|-
 
| Has background
 
| Boolean
 
| Indicates whether the next field exists
 
|-
 
| Background texture
 
| Optional Identifier
 
| Background texture location
 
|-
 
| X coord
 
| VarInt
 
|
 
|-
 
| Y coord
 
| <span style="color: red;">INVALID</span> (VarInt when writing, Int when reading)
 
|
 
|}
 
 
 
Advancement progress:
 
 
 
{| class="wikitable"
 
!colspan="2"| Field Name
 
!colspan="2"| Field Type
 
! Notes
 
|-
 
|colspan="2"| Size
 
|colspan="2"| VarInt
 
| Size of the following array
 
|-
 
|rowspan="2"| Criteria
 
| Criterion identifier
 
|rowspan="2"| Array
 
| Identifier
 
| The identifier of the criterion.
 
|-
 
| Criterion progress
 
| Criterion progress
 
 
  |
 
  |
|}
+
|}
 
 
Criterion progress:
 
  
{| class="wikitable"
+
==== Clientbound Server Links (play) ====
! Field Name
 
! Field Type
 
! Notes
 
|-
 
| Achieved
 
| Boolean
 
| If true, next field is present
 
|-
 
| Date of acheiving
 
| Optional Long
 
| As returned by [https://docs.oracle.com/javase/6/docs/api/java/util/Date.html#getTime() <code>Date.getTime</code>]
 
|}
 
  
==== Unlock Recipes ====
+
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
  !colspan="2"| Field Name
+
  ! colspan="2"| Field Name
  !colspan="2"| Field Type
+
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  |rowspan="5"| 0x31
+
  | rowspan="4"| 0x7B
  |rowspan="5"| Play
+
  | rowspan="4"| Configuration
  |rowspan="5"| Client
+
  | rowspan="4"| Client
 +
| colspan="2"| Links Count
 +
| colspan="2"| {{Type|VarInt}}
 +
| The number of links in the following array.
 
  |-
 
  |-
  |colspan="2"| Array size
+
  | rowspan="3"| Links
  |colspan="2"| VarInt
+
| Is built-in
  | Number of elements in the following array
+
  | rowspan="3"| {{Type|Array}}
 +
  | {{Type|Boolean}}
 +
| Determines if the following label is built-in (from enum) or custom (text component).
 
  |-
 
  |-
  |rowspan="3"| Recipes
+
  | Label
  | Identifier
+
  | {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
|rowspan="3"| Array
+
  | See below.
| Identifier
 
  |
 
 
  |-
 
  |-
  | Is unlocked
+
  | URL
  | Boolean
+
  | {{Type|String}}
|
+
  | Valid URL.
|-
+
|}
| Has been displayed
 
| Boolean
 
  |
 
|}
 
  
=== Serverbound ===
+
{| class="wikitable" {{added}}
 
+
  ! ID
==== Unknown ====
+
  ! Name
 
 
{| class="wikitable"
 
  ! Packet ID
 
  ! State
 
! Bound To
 
!colspan="2"| Field Name
 
!colspan="2"| Field Type
 
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  |rowspan="8"| 0x01
+
  | 0
|rowspan="8"| Play
+
  | Bug Report
|rowspan="8"| Server
+
  | Displayed on connection error screen; included as a comment in the disconnection report.
  |colspan="2"| Window ID
 
|colspan="2"| Byte
 
  | The window id.
 
 
  |-
 
  |-
  |colspan="2"| Action number
+
  | 1
  |colspan="2"| Short
+
  | Community Guidelines
  | The transaction number. Will be send to the client in a Confirm Transaction packet.
+
  |  
 
  |-
 
  |-
  |colspan="2"| Flag
+
  | 2
  |colspan="2"| Boolean
+
  | Support
  | See below
+
  |  
 
  |-
 
  |-
  |colspan="2"| Array size
+
  | 3
  |colspan="2"| Byte
+
  | Status
  | Number of elements in the following array
+
  |  
 
  |-
 
  |-
  |rowspan="4"| Entry
+
  | 4
| Item Identifier
+
  | Feedback
|rowspan="4"| Array
+
  |  
  | String (64)
 
  | The identifier of an item type, or <code>empty</code> if not present
 
 
  |-
 
  |-
  | Item Data
+
  | 5
  | Short
+
  | Community
  | The data value of the item, or 0 if not present
+
  |  
 
  |-
 
  |-
  | Slot A
+
  | 6
  | Byte
+
  | Website
  | The target slot index in the active container
+
  |  
 
  |-
 
  |-
  | Slot B
+
  | 7
  | Byte
+
  | Forums
  | The target slot index in the player inventory
+
  |  
|}
 
 
 
If the flag is set to true:
 
* The amount if items in Slot B is descreased by one.
 
* A item stack created from the provided identifier and data will be put in Slot A.
 
 
 
Otherwise:
 
* The amount if items in Slot B is increased by one if not empty, otherwise will a new stack be created from the provided identifier and data.
 
* The item in Slot A will be cleared.
 
 
 
In both cases will the crafting grid be updated and a Confirm Transaction packet send back to the client, with the window id and action number send by the client.
 
 
 
==== Client Status ====
 
 
 
Sent when the client is ready to complete login and when the client is ready to respawn after death.
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
 
  |-
 
  |-
  |rowspan="1"| 0x04
+
  | 8
|rowspan="1"| Play
+
  | News
|rowspan="1"| Server
+
  |  
| Action ID
 
| VarInt Enum
 
  | See below
 
  |}
 
 
 
''Action ID'' values:
 
 
 
{| class="wikitable"
 
 
  |-
 
  |-
! Action ID
+
  | 9
! Action
+
  | Announcements
|-
+
  |  
| 0
 
| Perform respawn
 
|-
 
| 1
 
| Request stats
 
|-
 
| {{Change|2|}}
 
| {{Change|Open inventory|}}
 
|}
 
 
 
==== Recipe displayed ====
 
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="4"| 0x17
 
|rowspan="4"| Play
 
|rowspan="4"| Server
 
  | Identifier
 
  | Identifier
 
  |
 
 
  |-
 
  |-
| ?
 
| Int
 
| Currently always -1
 
 
  |}
 
  |}
 
== Handshaking ==
 
 
=== Clientbound ===
 
 
No changes so far.
 
 
=== Serverbound ===
 
 
No changes so far.
 
 
==== Handshake ====
 
 
This causes the server to switch into the target state.
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="4"| 0x00
 
|rowspan="4"| Handshaking
 
|rowspan="4"| Server
 
| Protocol Version
 
| VarInt
 
| See [[protocol version numbers]] (currently {{change|316|319}})
 
|-
 
| Server Address
 
| String
 
| Hostname or IP, e.g. localhost or 127.0.0.1, that was used to connect.  The Notchian server does not use this information.
 
|-
 
| Server Port
 
| Unsigned Short
 
| Default is 25565.  The Notchian server does not use this information.
 
|-
 
| Next State
 
| VarInt Enum
 
| 1 for [[#Status|status]], 2 for [[#Login|login]]
 
|}
 
 
== Status ==
 
 
=== Clientbound ===
 
 
No changes so far.
 
 
=== Serverbound ===
 
 
No changes so far.
 
 
== Login ==
 
 
=== Clientbound ===
 
 
No changes so far.
 
  
 
=== Serverbound ===
 
=== Serverbound ===

Latest revision as of 10:40, 8 June 2024

This page documents the changes from the last stable Minecraft release (currently 1.20.6, protocol 766) to the current pre-release (currently 1.21-pre2, protocol Snapshot 200). 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.

Contents

Data types

No changes documented so far.

Packets

ID Packet name Documentation
Configuration clientbound
0x0F Clientbound Report Details (configuration) Pre
0x10 Clientbound Server Links (configuration) Pre
Play clientbound
0x7A Clientbound Report Details (play) Pre
0x7B Clientbound Server Links (play) Pre

Handshake

No changes so far.

Status

No changes so far.

Login

No changes so far.

Configuration

Clientbound

Clientbound Report Details (configuration)

Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.

Packet ID State Bound To Field Name Field Type Notes
0x0F Configuration Client Details Count VarInt (32) The number of details in the following array.
Details Title Array String (128)
Description String (4096)

Clientbound Server Links (configuration)

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).

Packet ID State Bound To Field Name Field Type Notes
0x10 Configuration Client Links Count VarInt The number of links in the following array.
Links Is built-in Array Boolean Determines if the following label is built-in (from enum) or custom (text component).
Label VarInt Enum / Text Component See below.
URL String Valid URL.


ID Name Notes
0 Bug Report Displayed on connection error screen; included as a comment in the disconnection report.
1 Community Guidelines
2 Support
3 Status
4 Feedback
5 Community
6 Website
7 Forums
8 News
9 Announcements

Serverbound

No changes so far.

Play

Clientbound

Clientbound Report Details (play)

Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.

Packet ID State Bound To Field Name Field Type Notes
0x7A Configuration Client Details Count VarInt (32) The number of details in the following array.
Details Title Array String (128)
Description String (4096)

Clientbound Server Links (play)

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).

Packet ID State Bound To Field Name Field Type Notes
0x7B Configuration Client Links Count VarInt The number of links in the following array.
Links Is built-in Array Boolean Determines if the following label is built-in (from enum) or custom (text component).
Label VarInt Enum / Text Component See below.
URL String Valid URL.
ID Name Notes
0 Bug Report Displayed on connection error screen; included as a comment in the disconnection report.
1 Community Guidelines
2 Support
3 Status
4 Feedback
5 Community
6 Website
7 Forums
8 News
9 Announcements

Serverbound

No changes so far.