Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(Added new team packet (Needs testing). Added new display position(0xD0).)
(Updated to 1.21-pre2)
 
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently 1.4.6, protocol 51) to the current pre-release (or weekly release). 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.
  
== New Packets ==
+
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.
  
=== Create Scoreboard (0xCE) ===
+
== Contents ==
  
''Server to Client''
+
<div style="float:right;">__TOC__</div>
  
This is sent to the client when it should create a new scoreboard or remove one.
+
=== Data types ===
  
{| class="wikitable"
+
No changes documented so far.
|- class="row0"
 
| class="col0" | Packet ID
 
| class="col1" | Field Name
 
| class="col2" | Field Type
 
| class="col3" | Example
 
| class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan=3 | 0xCE
 
| class="col1 centeralign" | Scoreboard Name
 
| class="col2 centeralign" | string
 
| class="col3 centeralign" | <code>deaths</code>
 
| class="col4" | An unique name for the scoreboard.
 
|- class="row2"
 
| class="col0 centeralign" | Scoreboard Display Text
 
| class="col1 centeralign" | string
 
| class="col2 centeralign" | <code>Deaths</code>
 
| class="col3" | The text to be displayed for the score.
 
|- class="row3"
 
| class="col0 centeralign" | Create/Remove
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | 0
 
| class="col3" | 0 to create the scoreboard. 1 to remove the scoreboard .
 
|- class="row4"
 
| class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 5 bytes + length of string
 
|}
 
  
=== Update Score (0xCF) ===
+
=== Packets ===
 
 
''Server to Client''
 
 
 
This is sent to the client when it should update a scoreboard item.
 
  
 
{| class="wikitable"
 
{| class="wikitable"
|- class="row0"
+
! ID
| class="col0" | Packet ID
+
! Packet name
| class="col1" | Field Name
+
!colspan="2"| Documentation
| class="col2" | Field Type
+
|-
| class="col3" | Example
+
!colspan="4"| Configuration clientbound
| class="col4" | Notes
+
{{PacketList|0x0F|Clientbound Report Details (configuration)|rel=added}}
|- class="row1"
+
{{PacketList|0x10|Clientbound Server Links (configuration)|rel=added}}
| class="col0 centeralign" rowspan=4 | 0xCF
+
|-
| class="col1 centeralign" | Item Name
+
!colspan="4"| Play clientbound
| class="col2 centeralign" | string
+
{{PacketList|0x7A|Clientbound Report Details (play)|rel=added}}
| class="col3 centeralign" | <code>Bob</code>
+
{{PacketList|0x7B|Clientbound Server Links (play)|rel=added}}
| class="col4" | An unique name to be displayed in the list.
+
|-
|- class="row2"
 
| class="col0 centeralign" | Update/Remove
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | 0
 
| class="col3" | 0 to create/update an item. 1 to remove an item.
 
|- class="row3"
 
| class="col0 centeralign" | Score Name
 
| class="col1 centeralign" | string
 
| class="col2 centeralign" | <code>deaths</code>
 
| class="col3" | The unique name for the scoreboard to be updated. Only sent to Update/Remove equals 0.
 
|- class="row4"
 
| class="col0 centeralign" | Value
 
| class="col1 centeralign" | integer
 
| class="col2 centeralign" | 5
 
| class="col3" | The score to be displayed next to the entry. Only sent to Update/Remove equals 0.
 
|- class="row5"
 
| class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 9 bytes + length of strings
 
 
|}
 
|}
  
=== Display Scoreboard (0xD0) ===
+
== Handshake ==
  
''Server to Client''
+
No changes so far.
  
This is sent to the client when it should display a scoreboard.
+
== Status ==
  
{| class="wikitable"
+
No changes so far.
|- class="row0"
 
| class="col0" | Packet ID
 
| class="col1" | Field Name
 
| class="col2" | Field Type
 
| class="col3" | Example
 
| class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan=2 | 0xD0
 
| class="col1 centeralign" | Position
 
| class="col2 centeralign" | byte
 
| class="col3 centeralign" | 1
 
| class="col4" | The position of the scoreboard. 0 = list, 1 = sidebar, 2 = belowName.
 
|- class="row2"
 
| class="col0 centeralign" | Score Name
 
| class="col1 centeralign" | string
 
| class="col2 centeralign" | <code>deaths</code>
 
| class="col3" | The unique name for the scoreboard to be displayed.
 
|- class="row3"
 
| class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 3 bytes + length of string
 
|}
 
  
=== Teams (0xD1) ===
+
== Login ==
  
''Server to Client''
+
No changes so far.
  
(Needs testing)
+
== Configuration ==
  
{| class="wikitable"
+
=== Clientbound ===
|- class="row0"
 
| class="col0" | Packet ID
 
| class="col1" | Field Name
 
| class="col2" | Field Type
 
| class="col3" | Example
 
| class="col4" | Notes
 
|- class="row1"
 
| class="col0 centeralign" rowspan=8 | 0xD1
 
| class="col1 centeralign" | Team Name
 
| class="col2 centeralign" | string
 
| class="col3 centeralign" | mcdevs
 
| class="col4" | An unique name for the team. (Shares with scoreboard).
 
|- class="row2"
 
| class="col0 centeralign" | Mode
 
| class="col1 centeralign" | byte
 
| class="col2 centeralign" | 0
 
| class="col3" | If 0 then the team is created.
 
If 1 then the team is removed.
 
  
If 2 the team team information is updated.
+
==== Clientbound Report Details (configuration) ====
  
If 3 then new players are added to the team.  
+
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
  
If 4 then players are removed from the team.
+
{| class="wikitable" {{added}}
|- class="row3"
+
! Packet ID
| class="col1 centeralign" | Team Display Name
+
! State
| class="col2 centeralign" | string
+
! Bound To
| class="col3 centeralign" | McDevs
+
! colspan="2"| Field Name
| class="col4" | Only if Mode = 0 or 2.
+
! colspan="2"| Field Type
|- class="row3"
+
! Notes
| class="col1 centeralign" | Team Prefix?
+
  |-
| class="col2 centeralign" | string
+
| rowspan="3"| 0x0F
| class="col3 centeralign" |  
+
| rowspan="3"| Configuration
| class="col4" |  Only if Mode = 0 or 2.
+
| rowspan="3"| Client
|- class="row4"
+
| colspan="2"| Details Count
| class="col1 centeralign" | Team Suffix?
+
| colspan="2"| {{Type|VarInt}} (32)
| class="col2 centeralign" | string
+
| The number of details in the following array.
| class="col3 centeralign" |  
+
|-
| class="col4" |  Only if Mode = 0 or 2.
+
| rowspan="2"| Details
|- class="row5"
+
| Title
| class="col1 centeralign" | Friendly fire?
+
| rowspan="2"| {{Type|Array}}
| class="col2 centeralign" | bool
+
| {{Type|String}} (128)
| class="col3 centeralign" | false
+
|
| class="col4" |  Only if Mode = 0 or 2.
+
  |-
|- class="row6"
+
| Description
| class="col1 centeralign" | Player count
+
| {{Type|String}} (4096)
| class="col2 centeralign" | short
+
  |
| class="col3 centeralign" | 0
 
| class="col4" | Only if Mode = 0 or 3 or 4.
 
|- class="row7"
 
| class="col1 centeralign" | Players
 
| class="col2 centeralign" | Array of strings
 
| class="col3 centeralign" |  
 
| class="col4" | Only if Mode = 0 or 3 or 4.
 
|- class="row8"
 
| class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | Variable
 
 
|}
 
|}
  
== Changed Packets ==
+
==== Clientbound Server Links (configuration) ====
 
 
=== Open Window (0x64) ===
 
 
 
''Server to Client''
 
  
This is sent to the client when it should open an inventory, such as a chest, workbench, or furnace. This message is not sent anywhere for clients opening their own inventory.
+
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}}
|- class="row0"
+
! Packet ID
| class="col0" | Packet ID
+
! State
| class="col1" | Field Name
+
! Bound To
| class="col2" | Field Type
+
! colspan="2"| Field Name
| class="col3" | Example
+
! colspan="2"| Field Type
| class="col4" | Notes
+
! Notes
|- class="row1"
+
|-
| class="col0 centeralign" rowspan=5 | 0x64
+
| rowspan="4"| 0x10
| class="col1 centeralign" | Window id
+
| rowspan="4"| Configuration
| class="col2 centeralign" | byte
+
| rowspan="4"| Client
| class="col3 centeralign" | 123
+
| colspan="2"| Links Count
| class="col4" | A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.
+
  | colspan="2"| {{Type|VarInt}}
|- class="row1"
+
| The number of links in the following array.
| class="col0 centeralign" | Inventory Type
+
  |-
| class="col1 centeralign" | byte
+
| rowspan="3"| Links
| class="col2 centeralign" | 2
+
| Is built-in
| class="col3" | The window type to use for displayCheck below
+
| rowspan="3"| {{Type|Array}}
|- class="row1"
+
| {{Type|Boolean}}
| class="col0 centeralign" | Window title
+
| Determines if the following label is built-in (from enum) or custom (text component).
| class="col1 centeralign" | string
+
|-
| class="col2 centeralign" | <code>Chest</code>
+
| Label
| class="col3" | The title of the window.
+
| {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
|- class="row1"
+
| See below.
| class="col0 centeralign" | Number of Slots
+
|-
| class="col1 centeralign" | byte
+
| URL
| class="col2 centeralign" | 3
+
| {{Type|String}}
| class="col3" | Number of slots in the window (excluding the number of slots in the player inventory).
+
| Valid URL.
|- class="row1"
 
| class="col0 centeralign" | Use provided window title
 
| class="col1 centeralign" | boolean
 
| class="col2 centeralign" | 1
 
| class="col3" | If false, the client will look up a string like "window.minecart". If true, the client uses what the server provides.
 
|- class="row2"
 
| class="col0" | Total Size:
 
| class="col1 rightalign" colspan="4" | 6 bytes + length of string
 
 
|}
 
|}
  
== Changed Data Types ==
 
  
=== Entity Metadata ===
+
{| class="wikitable" {{added}}
 +
! 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
 +
|
 +
|-
 +
|}
  
==== Mobs ====
+
=== Serverbound ===
  
'''Index 5, string: Mob Name'''
+
No changes so far.
  
The name to be displayed on the nameplate above the entity (If Show nameplate = 1).
+
== Play ==
  
'''Index 6, byte: Show nameplate'''
+
=== Clientbound ===
  
Set to 1 to show the nameplate, otherwise it is not displayed.
+
==== Clientbound Report Details (play) ====
  
==== Minecart ====
+
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
  
'''Index 20, int: Block id & metadata'''
+
{| class="wikitable" {{added}}
 +
! Packet ID
 +
! State
 +
! Bound To
 +
! colspan="2"| Field Name
 +
! colspan="2"| Field Type
 +
! Notes
 +
|-
 +
| rowspan="3"| 0x7A
 +
| 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)
 +
|
 +
|}
  
The id and metadata of the block to be shown in the minecart (If Show block = 1).
+
==== Clientbound Server Links (play) ====
  
The block id can be obtained by: value & 0xFFFF.  
+
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).
  
The block metadata can be obtained by: value >> 16.
+
{| class="wikitable" {{added}}
 
+
! Packet ID
'''Index 21, int: Block position'''
+
! State
 
+
! Bound To
The position (Y axis) of the block in the minecart. (Default: 6)
+
! colspan="2"| Field Name
 
+
! colspan="2"| Field Type
'''Index 22, byte: Show block'''
+
! Notes
 
+
|-
Set to 1 to show the block in the minecart, otherwise the block is not displayed.
+
| rowspan="4"| 0x7B
 
+
| rowspan="4"| Configuration
== Removed Packets ==
+
| rowspan="4"| Client
 
+
| colspan="2"| Links Count
-None-
+
| 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).
 +
|-
 +
| Label
 +
| {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
 +
| See below.
 +
|-
 +
| URL
 +
| {{Type|String}}
 +
| Valid URL.
 +
|}
  
== Protocol History ==
+
{| class="wikitable" {{added}}
13w05a: Protocol version is now 56. New packets for teams.
+
! 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
 +
|
 +
|-
 +
|}
  
13w04a: Protocol version is now 55. New packets for scoreboards.
+
=== Serverbound ===
  
13w03a: Protocol version is now 54.  
+
No changes so far.
  
13w02a: Protocol version is now 53. '''All''' Minecart entities use [[Entities#Objects|object type]] 10, and send the block within seperately. Minecarts now send their type as [[Object_Data|object data]] in [[Protocol#Spawn_Object.2FVehicle_.280x17.29|0x17]]. Added boolean to 0x64 (Open Window) to determine whether or not to use the provided window title.
+
[[Category:Minecraft Modern]]

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.