Difference between revisions of "Pre-release protocol"
Momothereal (talk | contribs) (17w13b) |
(→Play: Add packets) |
||
Line 300: | Line 300: | ||
No changes so far. | No changes so far. | ||
+ | |||
+ | == Play == | ||
+ | |||
+ | === Clientbound === | ||
+ | |||
+ | ==== Advancements ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! State | ||
+ | ! Bound To | ||
+ | !colspan="2"| Field Name | ||
+ | !colspan="2"| Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="8"| 0x08 | ||
+ | |rowspan="8"| Play | ||
+ | |rowspan="8"| Client | ||
+ | |colspan="2"| Mapping size | ||
+ | |colspan="2"| VarInt | ||
+ | | Size of the following array | ||
+ | |- | ||
+ | |rowspan="2"| Advancement mapping | ||
+ | | Key | ||
+ | |rowspan="2"| Array | ||
+ | | Identifier | ||
+ | | minecraft:something-style identifier - What does this identify? | ||
+ | |- | ||
+ | | Value | ||
+ | | Advancement | ||
+ | | See below | ||
+ | |- | ||
+ | |colspan="2"| VarInt | ||
+ | |colspan="2"| List size | ||
+ | | Size of the following array | ||
+ | |- | ||
+ | |colspan="2"| Identifiers | ||
+ | |colspan="2"| Array of Identifier | ||
+ | | Unclear what the point of this is | ||
+ | |- | ||
+ | |colspan="2"| VarInt | ||
+ | |colspan="2"| Progress size | ||
+ | | Size of the following array | ||
+ | |- | ||
+ | |rowspan="2"| Progress mapping | ||
+ | | Key | ||
+ | |rowspan="2"| Array | ||
+ | | Identifier | ||
+ | | minecraft:something-style identifier - What does this identify? | ||
+ | |- | ||
+ | | Value | ||
+ | | Advancement progress | ||
+ | | See below | ||
+ | |} | ||
+ | |||
+ | Advancement structure: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | !colspan="2"| Field Name | ||
+ | !colspan="2"| Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |colspan="2"| Flag 1 | ||
+ | |colspan="2"| Boolean | ||
+ | | Indicates whether the next field exists | ||
+ | |- | ||
+ | |colspan="2"| Unknown | ||
+ | |colspan="2"| Optional Identifier | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| Flag 2 | ||
+ | |colspan="2"| Boolean | ||
+ | | Indicates whether the next field exists | ||
+ | |- | ||
+ | |colspan="2"| Unknown | ||
+ | |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 | ||
+ | | Not sure what is identified | ||
+ | |- | ||
+ | | 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"| ? | ||
+ | | Array length 2 | ||
+ | |rowspan="2"| Array | ||
+ | | VarInt | ||
+ | | Number of elements in the following array | ||
+ | |- | ||
+ | | ? | ||
+ | | Array of String | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | Advancement display: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | | Title | ||
+ | | Chat | ||
+ | | | ||
+ | |- | ||
+ | | Unknown | ||
+ | | VarInt | ||
+ | | May be displayed item ID. When 0, indicates <code>null</code> | ||
+ | |- | ||
+ | | Frame type | ||
+ | | VarInt enum | ||
+ | | 0 = TASK, 1 = CHALLENGE | ||
+ | |- | ||
+ | | Flag | ||
+ | | Boolean | ||
+ | | Indicates whether the next field exists | ||
+ | |- | ||
+ | | Identifier | ||
+ | | Optional Identifier | ||
+ | | Background texture? | ||
+ | |- | ||
+ | | Unknown | ||
+ | | VarInt | ||
+ | | X coord? | ||
+ | |- | ||
+ | | Unknown | ||
+ | | <span style="color: red;">INVALID</span> (VarInt when writing, Int when reading) | ||
+ | | Y coord? | ||
+ | |} | ||
+ | |||
+ | 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 | ||
+ | | Probably the same as delared earlier | ||
+ | |- | ||
+ | | Criterion progress | ||
+ | | Criterion progress | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | Criterion progress: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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 Recipe ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! State | ||
+ | ! Bound To | ||
+ | !colspan="2"| Field Name | ||
+ | !colspan="2"| Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="5"| 0x31 | ||
+ | |rowspan="5"| Play | ||
+ | |rowspan="5"| Client | ||
+ | |- | ||
+ | |colspan="2"| Array size | ||
+ | |colspan="2"| VarInt | ||
+ | | Number of elements in the following array | ||
+ | |- | ||
+ | |rowspan="3"| Recipes | ||
+ | | Identifier | ||
+ | |rowspan="3"| Array | ||
+ | | Identifier | ||
+ | | | ||
+ | |- | ||
+ | | ? | ||
+ | | Boolean | ||
+ | | | ||
+ | |- | ||
+ | | ? | ||
+ | | Boolean | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | === Serverbound === | ||
+ | |||
+ | ==== Unknown ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! State | ||
+ | ! Bound To | ||
+ | !colspan="2"| Field Name | ||
+ | !colspan="2"| Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="8"| 0x01 | ||
+ | |rowspan="8"| Play | ||
+ | |rowspan="8"| Server | ||
+ | |colspan="2"| ? | ||
+ | |colspan="2"| Byte | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| ? | ||
+ | |colspan="2"| Short | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| ? | ||
+ | |colspan="2"| Boolean | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| Array size | ||
+ | |colspan="2"| Byte | ||
+ | | Number of elements in the following array | ||
+ | |- | ||
+ | |rowspan="4"| ? | ||
+ | | Partial identifier | ||
+ | |rowspan="4"| Array | ||
+ | | String (64) | ||
+ | | The portion of an identifier after "minecraft:", or <code>empty</code> if not present | ||
+ | |- | ||
+ | | ? | ||
+ | | Short | ||
+ | | | ||
+ | |- | ||
+ | | ? | ||
+ | | Byte | ||
+ | | | ||
+ | |- | ||
+ | | ? | ||
+ | | Byte | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | ==== 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 | ||
+ | | | ||
+ | |- | ||
+ | | Param | ||
+ | | Int | ||
+ | | | ||
+ | |} | ||
== Handshaking == | == Handshaking == |
Revision as of 15:51, 31 March 2017
This page documents the changes from the last stable Minecraft release (currently 1.11.2, protocol 316) to the current pre-release (currently 17w13b, protocol 319). 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 so far.
Packets
ID | Packet name | Documentation | |
---|---|---|---|
Handshaking serverbound | |||
0x00 | Handshake | Current | Pre |
Play clientbound | |||
0x08 | Advancements | Pre | |
Block Break Animation | Current | (unchanged) | |
Update Block Entity | Current | (unchanged) | |
Block Action | Current | (unchanged) | |
Block Change | Current | (unchanged) | |
Boss Bar | Current | (unchanged) | |
Server Difficulty | Current | (unchanged) | |
Tab-Complete (clientbound) | Current | (unchanged) | |
Chat Message (clientbound) | Current | (unchanged) | |
Multi Block Change | Current | (unchanged) | |
Confirm Transation (clientbound) | Current | (unchanged) | |
Close Window (clientbound) | Current | (unchanged) | |
Open Window | Current | (unchanged) | |
Window Items | Current | (unchanged) | |
Window Property | Current | (unchanged) | |
Set Slot | Current | (unchanged) | |
Set Cooldown | Current | (unchanged) | |
Plugin Message (clientbound) | Current | (unchanged) | |
Named Sound Effect | Current | (unchanged) | |
Disconnect (play) | Current | (unchanged) | |
Entity Status | Current | (unchanged) | |
Explosion | Current | (unchanged) | |
Unload Chunk | Current | (unchanged) | |
Change Game State | Current | (unchanged) | |
Keep Alive (clientbound) | Current | (unchanged) | |
Chunk Data | Current | (unchanged) | |
Effect | Current | (unchanged) | |
Particle | Current | (unchanged) | |
Join Game | Current | (unchanged) | |
Particle | Current | (unchanged) | |
Entity Relative Move | Current | (unchanged) | |
Entity Look And Relative Move | Current | (unchanged) | |
Entity Look | Current | (unchanged) | |
Entity | Current | (unchanged) | |
Vehicle Move (clientbound) | Current | (unchanged) | |
Open Sign Editor | Current | (unchanged) | |
Player Abilities (clientbound) | Current | (unchanged) | |
Combat Event | Current | (unchanged) | |
Player List Item | Current | (unchanged) | |
Player Position And Look (clientbound) | Current | (unchanged) | |
Use Bed | Current | (unchanged) | |
0x31 | Unlock Recipe | Pre | |
Destroy Entities | Current | (unchanged) | |
Remove Entity Effect | Current | (unchanged) | |
Resource Pack Send | Current | (unchanged) | |
Respawn | Current | (unchanged) | |
Entity Head Look | Current | (unchanged) | |
World Border | Current | (unchanged) | |
Camera | Current | (unchanged) | |
Held Item Change (clientbound) | Current | (unchanged) | |
Display Scoreboard | Current | (unchanged) | |
Entity Metadata | Current | (unchanged) | |
Attach Entity | Current | (unchanged) | |
Entity Velocity | Current | (unchanged) | |
Entity Equipment | Current | (unchanged) | |
Set Experience | Current | (unchanged) | |
Update Health | Current | (unchanged) | |
Scoreboard Objective | Current | (unchanged) | |
Set Passengers | Current | (unchanged) | |
Teams | Current | (unchanged) | |
Update Score | Current | (unchanged) | |
Spawn Position | Current | (unchanged) | |
Time Update | Current | (unchanged) | |
Title | Current | (unchanged) | |
Sound Effect | Current | (unchanged) | |
Player List Header And Footer | Current | (unchanged) | |
Collect Item | Current | (unchanged) | |
Entity Teleport | Current | (unchanged) | |
Entity Properties | Current | (unchanged) | |
Entity Effect | Current | (unchanged) | |
Play serverbound | |||
0x01 | Unknown | Pre | |
Tab-Complete (serverbound) | Current | (unchanged) | |
Chat Message (serverbound) | Current | (unchanged) | |
Client Status | Current | (unchanged) | |
Client Settings | Current | (unchanged) | |
Confirm Transaction (serverbound) | Current | (unchanged) | |
Enchant Item | Current | (unchanged) | |
Click Window | Current | (unchanged) | |
Close Window (serverbound) | Current | (unchanged) | |
Plugin Message (serverbound) | Current | (unchanged) | |
Use Entity | Current | (unchanged) | |
Keep Alive (serverbound) | Current | (unchanged) | |
Player Position | Current | (unchanged) | |
Player Position And Look (serverbound) | Current | (unchanged) | |
Player Look | Current | (unchanged) | |
Player | Current | (unchanged) | |
Vehicle Move (serverbound) | Current | (unchanged) | |
Steer Boat | Current | (unchanged) | |
Player Abilities (serverbound) | Current | (unchanged) | |
Player Digging | Current | (unchanged) | |
Entity Action | Current | (unchanged) | |
Steer Vehicle | Current | (unchanged) | |
0x17 | Recipe Displayed | Pre | |
Resource Pack Status | Current | (unchanged) | |
Held Item Change (serverbound) | Current | (unchanged) | |
Creative Inventory Action | Current | (unchanged) | |
Update Sign | Current | (unchanged) | |
Animation (serverbound) | Current | (unchanged) | |
Spectate | Current | (unchanged) | |
Player Block Placement | Current | (unchanged) | |
Use Item | Current | Pre |
New/modified data types
Entity Metadata
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.
Entity Metadata is an array of entries, each of which looks like the following:
Name | Type | Meaning |
---|---|---|
Index | Unsigned Byte | Unique index key determining the meaning of the following value, see the table below. If this is 0xff then the it is the end of the Entity Metadata array and no more is read.
|
Type | Optional Byte Enum | Only if Index is not 0xff ; the type of the index, see the table below
|
Value | Optional value of Type | Only if Index is not 0xff : the value of the metadata field
|
Value of Type field | Type of Value field | Notes |
---|---|---|
0 | Byte | |
1 | VarInt | |
2 | Float | |
3 | String | |
4 | Chat | |
5 | Slot | |
6 | Boolean | |
7 | Rotation | 3 floats: rotation on x, rotation on y, rotation on z |
8 | Position | |
9 | OptPosition (Boolean + Optional Position) | 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, id << 4 | data
|
13 | NBT Tag |
Entity classes also recursively inherit fields from classes they extend.
Parrot
Extends TameableAnimal.
Index | Type | Meaning | Default | |
---|---|---|---|---|
15 | VarInt | Variant (0: red/blue, 1: blue, 2: green, 3: yellow/blue) | 0 |
Player
Extends Living.
Index | Type | Meaning | Default | |
---|---|---|---|---|
11 | Float | Additional Hearts | 0.0 | |
12 | VarInt | Score | 0 | |
13 | Byte | The Displayed Skin Parts bit mask that is sent in Client Settings | 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 | Main hand (0 : Left, 1 : Right) | 1 | |
15 | NBT Tag | Left shoulder entity data | ||
16 | NBT Tag | Right shoulder entity data |
Block Actions
No changes so far.
Plugin Channels
No changes so far.
Play
Clientbound
Advancements
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x08 | Play | Client | Mapping size | VarInt | Size of the following array | ||
Advancement mapping | Key | Array | Identifier | minecraft:something-style identifier - What does this identify? | |||
Value | Advancement | See below | |||||
VarInt | List size | Size of the following array | |||||
Identifiers | Array of Identifier | Unclear what the point of this is | |||||
VarInt | Progress size | Size of the following array | |||||
Progress mapping | Key | Array | Identifier | minecraft:something-style identifier - What does this identify? | |||
Value | Advancement progress | See below |
Advancement structure:
Field Name | Field Type | Notes | ||
---|---|---|---|---|
Flag 1 | Boolean | Indicates whether the next field exists | ||
Unknown | Optional Identifier | |||
Flag 2 | Boolean | Indicates whether the next field exists | ||
Unknown | Optional advancement display | See below. | ||
Number of criteria | VarInt | Size of the following array | ||
Criteria | Key | Array | Identifier | Not sure what is identified |
Value | Void | There is no content written here. Perhaps this will be expanded in the future? | ||
Array length | VarInt | Number of arrays in the following array | ||
? | Array length 2 | Array | VarInt | Number of elements in the following array |
? | Array of String |
Advancement display:
Field Name | Field Type | Notes |
---|---|---|
Title | Chat | |
Unknown | VarInt | May be displayed item ID. When 0, indicates null
|
Frame type | VarInt enum | 0 = TASK, 1 = CHALLENGE |
Flag | Boolean | Indicates whether the next field exists |
Identifier | Optional Identifier | Background texture? |
Unknown | VarInt | X coord? |
Unknown | INVALID (VarInt when writing, Int when reading) | Y coord? |
Advancement progress:
Field Name | Field Type | Notes | ||
---|---|---|---|---|
Size | VarInt | Size of the following array | ||
Criteria | Criterion identifier | Array | Identifier | Probably the same as delared earlier |
Criterion progress | Criterion progress |
Criterion progress:
Field Name | Field Type | Notes |
---|---|---|
Achieved | Boolean | If true, next field is present |
Date of acheiving | Optional Long | As returned by Date.getTime
|
Unlock Recipe
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x31 | Play | Client | |||||
Array size | VarInt | Number of elements in the following array | |||||
Recipes | Identifier | Array | Identifier | ||||
? | Boolean | ||||||
? | Boolean |
Serverbound
Unknown
Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|---|
0x01 | Play | Server | ? | Byte | |||
? | Short | ||||||
? | Boolean | ||||||
Array size | Byte | Number of elements in the following array | |||||
? | Partial identifier | Array | String (64) | The portion of an identifier after "minecraft:", or empty if not present
| |||
? | Short | ||||||
? | Byte | ||||||
? | Byte |
Recipe displayed
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x17 | Play | Server | Identifier | Identifier | |
Param | Int |
Handshaking
Clientbound
No changes so far.
Serverbound
No changes so far.
Handshake
This causes the server to switch into the target state.
Packet ID | State | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|---|
0x00 | Handshaking | Server | Protocol Version | VarInt | See protocol version numbers (currently |
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, 2 for login |
Status
Clientbound
No changes so far.
Serverbound
No changes so far.
Login
Clientbound
No changes so far.
Serverbound
No changes so far.