Difference between revisions of "Bedrock Protocol"
(Server To Client Handshake description) |
(Document almost every packet!) |
||
Line 12: | Line 12: | ||
This is the [https://minecraft.gamepedia.com/Bedrock_Edition Bedrock Edition] Protocol Documentation. | This is the [https://minecraft.gamepedia.com/Bedrock_Edition Bedrock Edition] Protocol Documentation. | ||
− | The Bedrock Edition Protocol uses [[wikipedia:User Datagram Protocol|UDP]] instead of [[wikipedia:Transmission Control Protocol|TCP]] that is used for the Java Edition. | + | The Bedrock Edition Protocol uses [[wikipedia:User Datagram Protocol|UDP]] instead of [[wikipedia:Transmission Control Protocol|TCP]] that is used for the Java Edition.<br> |
The Bedrock Edition Client uses RakNet as its protocol library. | The Bedrock Edition Client uses RakNet as its protocol library. | ||
Line 77: | Line 77: | ||
|- | |- | ||
! VarInt | ! VarInt | ||
− | | ≥ 1 | + | | &ge; 1<br>&le; 5 |
| -2147483648 and 2147483647 | | -2147483648 and 2147483647 | ||
| | | | ||
|- | |- | ||
! VarLong | ! VarLong | ||
− | | ≥ 1 | + | | &ge; 1<br>&le; 10 |
| -2^63 and 2^63-1 | | -2^63 and 2^63-1 | ||
| | | | ||
Line 113: | Line 113: | ||
|- | |- | ||
|rowspan="3"| 0x01 | |rowspan="3"| 0x01 | ||
− | |rowspan="3"| | + | |rowspan="3"| Server |
| Protocol version | | Protocol version | ||
| int | | int | ||
− | | | + | | |
|- | |- | ||
| Chain data | | Chain data | ||
Line 124: | Line 124: | ||
| Skin data | | Skin data | ||
| JWT Data | | JWT Data | ||
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
==== Play Status ==== | ==== Play Status ==== | ||
Line 137: | Line 139: | ||
|- | |- | ||
|rowspan="1"| 0x02 | |rowspan="1"| 0x02 | ||
− | |rowspan="1"| | + | |rowspan="1"| Client |
| Status | | Status | ||
| int | | int | ||
| The current status of the client. | | The current status of the client. | ||
|} | |} | ||
− | + | ||
The values for each status are as follows: | The values for each status are as follows: | ||
* 0: Login success | * 0: Login success | ||
Line 164: | Line 166: | ||
|rowspan="1"| 0x03 | |rowspan="1"| 0x03 | ||
|rowspan="1"| Client | |rowspan="1"| Client | ||
− | |JWT data | + | | JWT data |
− | |JWT String | + | | JWT String |
− | |Contains the salt to complete the Diffie-Hellman key exchange | + | | Contains the salt to complete the Diffie-Hellman key exchange |
|} | |} | ||
+ | |||
+ | |||
==== Client To Server Handshake ==== | ==== Client To Server Handshake ==== | ||
Line 178: | Line 182: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x04 |
− | |rowspan=" | + | |rowspan="0"| Server |
+ | |||
|} | |} | ||
+ | |||
+ | |||
==== Disconnect ==== | ==== Disconnect ==== | ||
Line 193: | Line 200: | ||
|rowspan="2"| 0x05 | |rowspan="2"| 0x05 | ||
|rowspan="2"| Client | |rowspan="2"| Client | ||
− | |Disconnect screen visibility | + | | Disconnect screen visibility |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | |Kick message | + | | Kick message |
− | | | + | | string |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
==== Resource Packs info ==== | ==== Resource Packs info ==== | ||
Line 211: | Line 220: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x06 |
− | |rowspan=" | + | |rowspan="4"| Client |
| Forced to Accept | | Forced to Accept | ||
− | | | + | | bool |
| If the resource pack requires the client accept it. | | If the resource pack requires the client accept it. | ||
|- | |- | ||
| Scripting Enabled | | Scripting Enabled | ||
− | | | + | | bool |
| If scripting is enabled. | | If scripting is enabled. | ||
+ | |- | ||
+ | | BehahaviorPackInfos | ||
+ | | ResourcePackInfos | ||
+ | | | ||
+ | |- | ||
+ | | ResourcePackInfos | ||
+ | | ResourcePackInfos | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
==== Resource Pack Stack ==== | ==== Resource Pack Stack ==== | ||
Line 281: | Line 300: | ||
| The version of the game the sent resource and behavior packs were made for. | | The version of the game the sent resource and behavior packs were made for. | ||
|} | |} | ||
− | |||
==== Resource Pack Response ==== | ==== Resource Pack Response ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
− | ! Packet ID | + | ! Packet ID |
− | ! Bound To | + | ! Bound To |
− | ! Field Name | + | ! Field Name |
− | ! Field Type | + | ! Field Type |
− | ! Notes | + | ! Notes |
− | |- | + | |- |
− | | rowspan="3" | 0x08 | + | |rowspan="3"| 0x08 |
− | | rowspan="3" | Server | + | |rowspan="3"| Server |
− | | | + | | rowspan="3" |
− | | | + | | rowspan="3" |
− | | | + | | Status |
− | |- | + | |- |
− | | Pack IDs Size | + | | Pack IDs Size |
− | | Little Endian short | + | | Little Endian short |
− | | The amount of pack IDs included in this packet. | + | | The amount of pack IDs included in this packet. |
− | |- | + | |- |
− | | Pack IDs | + | | Pack IDs |
− | | Array | + | | Array |
− | | An array of all the Pack IDs. | + | | An array of all the Pack IDs. |
− | |} | + | |} |
− | + | ||
The values for each status are as follows: | The values for each status are as follows: | ||
* 0: None | * 0: None | ||
Line 324: | Line 342: | ||
|- | |- | ||
| rowspan="9" | 0x09 | | rowspan="9" | 0x09 | ||
− | | rowspan="9" | Server & Client | + | | rowspan="9" | Server & Client |
| colspan="2" | Type | | colspan="2" | Type | ||
| byte | | byte | ||
Line 414: | Line 432: | ||
|rowspan="1"| 0x0A | |rowspan="1"| 0x0A | ||
|rowspan="1"| Client | |rowspan="1"| Client | ||
− | |Time | + | | Time |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
==== Start Game ==== | ==== Start Game ==== | ||
Line 428: | Line 448: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="49"| 0x0B |
− | |rowspan=" | + | |rowspan="49"| Client |
− | | | + | | Entity ID Self |
− | + | | SignedVarLong | |
− | + | | | |
− | + | |- | |
− | + | | Runtime Entity ID | |
− | + | | UnsignedVarLong | |
− | + | | | |
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Player Gamemode |
− | | | + | | SignedVarInt |
− | | | + | | |
− | + | |- | |
− | + | | Spawn | |
− | + | | Vector3 | |
− | + | | | |
− | + | |- | |
− | + | | Rotation | |
− | + | | Vector2 | |
− | + | | | |
− | |||
|- | |- | ||
− | | | + | | Seed |
− | | | + | | SignedVarInt |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Dimension |
− | | | + | | SignedVarInt |
− | | | + | | |
− | | | + | |- |
− | | | + | | Generator |
− | | | + | | SignedVarInt |
− | + | | | |
− | + | |- | |
− | + | | Gamemode | |
− | + | | SignedVarInt | |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Difficulty |
− | | | + | | SignedVarInt |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | X |
− | + | | SignedVarInt | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Y |
− | | | + | | VarInt |
− | | | + | | |
− | | | + | |- |
− | + | | Z | |
− | + | | SignedVarInt | |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Has achievements disabled |
− | + | | bool | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Day cycle stop time |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | EDU offer |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Has EDU features enabled |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Rain level |
− | | | + | | float |
− | | | + | | |
|- | |- | ||
− | | | + | | Lightning level |
− | + | | float | |
− | + | | | |
− | + | |- | |
− | + | | Has Confirmed Platform Locked Content | |
− | + | | bool | |
− | + | | | |
− | + | |- | |
− | + | | Is Multiplayer | |
− | + | | bool | |
− | + | | | |
− | |||
|- | |- | ||
− | | | + | | Broadcast To LAN |
− | + | | bool | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Xbox Live Broadcast Mode |
− | | | + | | VarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Platform Broadcast Mode |
− | | | + | | VarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Enable commands |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Is texturepacks required |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | GameRules |
− | | | + | | GameRules |
− | | | + | | |
|- | |- | ||
− | | | + | | Bonus Chest |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Map Enabled |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Permission Level |
− | + | | SignedVarInt | |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Server Chunk Tick Range |
− | |||
− | |||
| int | | int | ||
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Has Locked Behavior Pack |
− | | | + | | bool |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Has Locked Resource Pack |
− | + | | bool | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Is From Locked World Template |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Use MSA Gamertags Only |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Is From World Template |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Is World Template Option Locked |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Only Spawn V1 Villagers |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Game Version |
− | | | + | | string |
− | | | + | | |
+ | |- | ||
+ | | Level ID | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | World name | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Premium World Template Id | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Is Trial | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Is Server Side movement enabled | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Current Tick | ||
+ | | long | ||
+ | | | ||
+ | |- | ||
+ | | Enchantment Seed | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Block Palette | ||
+ | | BlockPalette | ||
+ | | | ||
+ | |- | ||
+ | | Itemstates | ||
+ | | Itemstates | ||
+ | | | ||
+ | |- | ||
+ | | Multiplayer Correlation ID | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Add Player ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 678: | Line 658: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="25"| 0x0C |
− | |rowspan=" | + | |rowspan="25"| Client |
− | | | + | | UUID |
− | | | + | | UUID |
− | | | + | | |
|- | |- | ||
− | | | + | | Username |
− | | | + | | string |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Entity ID Self |
− | | | + | | SignedVarLong |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Runtime Entity ID |
− | | | + | | UnsignedVarLong |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Platform Chat ID |
− | | | + | | string |
− | | | + | | |
− | | | + | |- |
− | | | + | | X |
+ | | float | ||
+ | | | ||
|- | |- | ||
− | | | + | | Y |
− | | | + | | float |
− | | | + | | |
|- | |- | ||
− | | | + | | Z |
− | | | + | | float |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Speed X |
− | | | + | | float |
− | | | + | | |
− | + | |- | |
− | + | | Speed Y | |
− | + | | float | |
− | + | | | |
− | + | |- | |
− | + | | Speed Z | |
− | + | | float | |
− | + | | | |
− | |||
|- | |- | ||
− | | | + | | Pitch |
− | + | | float | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Yaw |
− | | | + | | float |
− | | | + | | |
|- | |- | ||
− | | | + | | Head Yaw |
− | | | + | | float |
− | | | + | | |
|- | |- | ||
− | | | + | | Item |
− | | | + | | Item |
− | | | + | | |
|- | |- | ||
− | | | + | | Metadata |
− | | | + | | MetadataDictionary |
− | | | + | | |
|- | |- | ||
− | | | + | | Flags |
− | | | + | | UnsignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Command permission |
− | + | | UnsignedVarInt | |
− | + | | | |
− | + | |- | |
− | + | | Action Permissions | |
− | + | | UnsignedVarInt | |
− | + | | | |
− | + | |- | |
− | + | | Permission Level | |
− | + | | UnsignedVarInt | |
− | + | | | |
− | + | |- | |
− | + | | Custom stored permissions | |
− | + | | UnsignedVarInt | |
− | + | | | |
− | + | |- | |
+ | | User Id | ||
+ | | long | ||
+ | | | ||
+ | |- | ||
+ | | Links | ||
+ | | Links | ||
+ | | | ||
+ | |- | ||
+ | | Device ID | ||
+ | | string | ||
+ | | | ||
|- | |- | ||
− | | | + | | Device OS |
− | + | | int | |
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Add Entity ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 817: | Line 772: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="15"| 0x0D |
− | |rowspan=" | + | |rowspan="15"| Client |
− | | | + | | Entity ID Self |
− | + | | SignedVarLong | |
− | + | | | |
− | + | |- | |
− | + | | Runtime Entity ID | |
− | + | | UnsignedVarLong | |
− | + | | | |
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Entity Type |
− | | | + | | string |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | X |
− | | | + | | float |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Y |
− | | | + | | float |
− | |} | + | | |
+ | |- | ||
+ | | Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Speed X | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Speed Y | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Speed Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Pitch | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Yaw | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Head Yaw | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Attributes | ||
+ | | EntityAttributes | ||
+ | | | ||
+ | |- | ||
+ | | Metadata | ||
+ | | MetadataDictionary | ||
+ | | | ||
+ | |- | ||
+ | | Links | ||
+ | | Links | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Remove Entity ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 869: | Line 846: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x0E |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Unique Entity Id |
− | | | + | | SignedVarLong |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
− | |||
− | ==== Entity | + | ==== Add Item Entity ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 903: | Line 864: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="11"| 0x0F |
− | |rowspan=" | + | |rowspan="11"| Client |
− | | Runtime Entity | + | | Entity ID Self |
− | | | + | | SignedVarLong |
− | | | + | | |
+ | |- | ||
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
|- | |- | ||
− | | | + | | Item |
− | | | + | | Item |
− | | | + | | |
+ | |- | ||
+ | | X | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Y | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Speed X | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Speed Y | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Speed Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Metadata | ||
+ | | MetadataDictionary | ||
+ | | | ||
+ | |- | ||
+ | | Is From Fishing | ||
+ | | bool | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Take Item Entity ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 923: | Line 922: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x11 |
− | |rowspan=" | + | |rowspan="2"| Client |
+ | | Item Runtime Entity Id | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Runtime Entity Id | ||
+ | | UnsignedVarLong | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== Entity | + | |
+ | ==== Move Entity Absolute ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 936: | Line 944: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x12 |
− | |rowspan=" | + | |rowspan="5"| Server & Client |
− | | Runtime | + | | Runtime entity id |
− | | | + | | UnsignedVarLong |
− | | | + | | |
+ | |- | ||
+ | | Position | ||
+ | | Position | ||
+ | | | ||
+ | |- | ||
+ | | Rotation | ||
+ | | Position | ||
+ | | | ||
|- | |- | ||
− | | | + | | On ground |
− | | | + | | boolean |
− | | | + | | |
|- | |- | ||
− | | | + | | Teleported |
| boolean | | boolean | ||
− | | | + | | |
|} | |} | ||
+ | |||
+ | This packet is sent serverbound when riding a horse/donkey. | ||
− | ==== | + | ==== Move Player ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 960: | Line 978: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="10"| 0x13 |
− | |rowspan=" | + | |rowspan="10"| Server & Client |
− | | | + | | Runtime entity id |
− | | | + | | UnsignedVarLong |
− | | | + | | |
− | | | + | |- |
− | + | | Position | |
− | + | | Position | |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Rotation |
− | | | + | | Position |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Mode |
− | + | | float | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | On ground |
| float | | float | ||
− | | | + | | |
|- | |- | ||
− | | | + | | Riding runtime entity id |
| float | | float | ||
− | | | + | | |
|- | |- | ||
− | | | + | | Teleportation cause |
| float | | float | ||
− | | | + | | |
+ | |- | ||
+ | | Entity type | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | On Ground | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Other Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | Modes: | ||
+ | * 0: Normal | ||
+ | * 1: Reset | ||
+ | * 2: Teleport | ||
+ | * 3: Rotation | ||
− | ==== | + | Teleportation causes: |
+ | * 0: Unknown | ||
+ | * 1: Projectile | ||
+ | * 2: Chorus fruit | ||
+ | * 3: Command | ||
+ | * 4: Behavior | ||
+ | |||
+ | ==== Rider Jump ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,017: | Line 1,043: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x14 |
− | |rowspan="1"| | + | |rowspan="1"| Server & Client |
+ | | Jump Strength | ||
+ | | SignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Update Block ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,030: | Line 1,061: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x15 |
− | |rowspan=" | + | |rowspan="4"| Client |
− | | | + | | Coordinates |
− | | | + | | BlockCoordinates |
− | | | + | | |
− | | | + | |- |
− | + | | Block Runtime ID | |
− | + | | UnsignedVarInt | |
− | + | | | |
− | + | |- | |
− | + | | Block Priority | |
− | + | | UnsignedVarInt | |
− | + | | | |
− | |||
− | |||
|- | |- | ||
− | | | + | | Storage |
− | + | | UnsignedVarInt | |
+ | | | ||
|} | |} | ||
+ | |||
− | |||
− | + | ==== Add Painting ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,072: | Line 1,091: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="7"| 0x16 |
− | |rowspan=" | + | |rowspan="7"| Client |
− | | Position X | + | | Unique Entity Id |
− | | | + | | SignedVarLong |
− | | | + | | |
+ | |- | ||
+ | | Runtime Entity Id | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Position X | ||
+ | | BlockCoordinates | ||
+ | | | ||
|- | |- | ||
| Position Y | | Position Y | ||
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
| Position Z | | Position Z | ||
− | | | + | | string |
− | | | + | | |
+ | |- | ||
+ | | Direction | ||
+ | | int | ||
+ | | | ||
|- | |- | ||
− | | | + | | Name |
− | | | + | | String |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Tick Sync ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,100: | Line 1,133: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x17 |
− | |rowspan=" | + | |rowspan="2"| Server & Client |
− | | | + | | Request Timestamp |
− | | | + | | long |
− | | | + | | |
|- | |- | ||
− | | | + | | Response Timestamp |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| long | | long | ||
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Level Sound Event (1) ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,128: | Line 1,155: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="6"| 0x18 |
− | |rowspan=" | + | |rowspan="6"| Server & Client |
− | | | + | | Sound ID |
| byte | | byte | ||
− | | | + | | |
+ | |- | ||
+ | | Position | ||
+ | | Vector3 | ||
+ | | | ||
+ | |- | ||
+ | | Block Id | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Entity Type | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Is baby mob | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Is global | ||
+ | | bool | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Level Event ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,144: | Line 1,193: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="3"| | + | |rowspan="3"| 0x19 |
− | |rowspan="3"| | + | |rowspan="3"| Client |
− | | | + | | Event ID |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Position |
− | | | + | | Vector3 |
− | | | + | | |
|- | |- | ||
− | | | + | | Data |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Block Event ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,168: | Line 1,219: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x1A |
− | |rowspan=" | + | |rowspan="3"| Client |
+ | | Block Position | ||
+ | | Position | ||
+ | | | ||
+ | |- | ||
+ | | Event Type | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Event Data | ||
+ | | SignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Entity Event ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,181: | Line 1,245: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x1B |
− | |rowspan=" | + | |rowspan="3"| Server & Client |
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Event ID | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Data | ||
+ | | SignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Mob Effect ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,194: | Line 1,271: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="6"| 0x1C |
− | |rowspan=" | + | |rowspan="6"| Client |
− | | | + | | Runtime entity id |
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Event | ||
| byte | | byte | ||
− | | | + | | |
+ | |- | ||
+ | | Effect id | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Amplifier | ||
+ | | SignedVarInt | ||
+ | | | ||
|- | |- | ||
− | | | + | | Particles |
− | | | + | | bool |
− | | | + | | |
|- | |- | ||
− | | | + | | Duration |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
+ | Events: | ||
+ | * 0: None | ||
+ | * 1: Add | ||
+ | * 2: Modify | ||
+ | * 3: Remove | ||
− | ==== | + | ==== Update Attributes ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,218: | Line 1,313: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x1D |
− | |rowspan=" | + | |rowspan="2"| Client |
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Attributes | ||
+ | | PlayerAttributes | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Inventory Transaction ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,231: | Line 1,335: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x1E |
− | |rowspan="1"| | + | |rowspan="1"| Server & Client |
+ | | Transaction | ||
+ | | Transaction | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Mob Equipment ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,244: | Line 1,353: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x1F |
− | |rowspan=" | + | |rowspan="5"| Server & Client |
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Item | ||
+ | | Item | ||
+ | | | ||
+ | |- | ||
+ | | Slot | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Selected Slot | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Windows Id | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Mob Armor Equipment ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,257: | Line 1,387: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x20 |
− | |rowspan=" | + | |rowspan="5"| Server & Client |
− | | | + | | Runtime Entity ID |
− | + | | UnsignedVarLong | |
− | + | | | |
− | + | |- | |
− | + | | Helmet | |
− | + | | Item | |
− | + | | | |
− | + | |- | |
− | + | | Chestplate | |
− | + | | Item | |
+ | | | ||
+ | |- | ||
+ | | Leggings | ||
+ | | Item | ||
+ | | | ||
|- | |- | ||
− | | | + | | Boots |
− | + | | Item | |
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Interact ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,283: | Line 1,421: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x21 |
− | |rowspan=" | + | |rowspan="2"| Server & Client |
+ | | Action ID | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Target Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
|} | |} | ||
+ | |||
− | |||
− | + | ==== Block Pick Request ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,309: | Line 1,443: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x22 |
− | |rowspan=" | + | |rowspan="5"| Server |
− | | | + | | Block Position X |
− | | | + | | SignedVarInt |
− | | | + | | |
+ | |- | ||
+ | | Block Position Y | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Block Position Z | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Add User Data | ||
+ | | bool | ||
+ | | Whether there should be NBT data in the picked block (activated by pressing Ctrl on default keyboard controls) | ||
+ | |- | ||
+ | | Hotbar Slot | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | The Bedrock client sends the position of the block. It expects the server to decide the block to pick and add it to the inventory or switch the hotbar slot if needed. | ||
− | ==== | + | ==== Entity Pick Request ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,325: | Line 1,477: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x23 |
− | |rowspan=" | + | |rowspan="2"| Server |
− | | | + | | Runtime Entity Id |
− | | | + | | ulong |
− | | | + | | |
+ | |- | ||
+ | | Hotbar Slot | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Player Action ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,341: | Line 1,499: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x24 |
− | |rowspan=" | + | |rowspan="4"| Server |
− | | | + | | Runtime Entity ID |
− | | | + | | UnsignedVarLong |
− | | | + | | |
|- | |- | ||
− | | | + | | Action ID |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Coordinates |
− | | | + | | BlockCoordinates |
− | | | + | | |
|- | |- | ||
− | | | + | | Face |
− | | | + | | SignedVarInt |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
− | |||
− | + | ==== Entity Fall ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,389: | Line 1,529: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x25 |
− | |rowspan=" | + | |rowspan="3"| Server |
+ | | Runtime Entity Id | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Fall Distance | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | In Void | ||
+ | | bool | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Hurt Armor ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,402: | Line 1,555: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x26 |
− | |rowspan="1"| | + | |rowspan="1"| Client |
+ | | Health | ||
+ | | SignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Set Entity Data ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,415: | Line 1,573: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x27 |
− | |rowspan=" | + | |rowspan="2"| Server & Client |
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Metadata | ||
+ | | MetadataDictionary | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Set Entity Motion ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,428: | Line 1,595: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="4"| | + | |rowspan="4"| 0x28 |
− | |rowspan="4"| | + | |rowspan="4"| Server & Client |
− | | | + | | Runtime Entity Id |
− | | | + | | UnsignedVarLong |
− | | | + | | |
+ | |- | ||
+ | | Motion X | ||
+ | | Vector3 | ||
+ | | | ||
|- | |- | ||
− | | | + | | Motion Y |
| float | | float | ||
− | | | + | | |
|- | |- | ||
− | | | + | | Motion Z |
| float | | float | ||
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Set Entity Link ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,456: | Line 1,625: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x29 |
− | |rowspan=" | + | |rowspan="4"| Client |
+ | | Ridden ID | ||
+ | | SignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Rider ID | ||
+ | | SignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Link Type | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Unknown | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Set Health ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,469: | Line 1,655: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x2A |
− | |rowspan="1"| | + | |rowspan="1"| Client |
− | | | + | | Health |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Set Spawn Position ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,485: | Line 1,673: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x2B |
− | |rowspan=" | + | |rowspan="3"| Client |
− | | | + | | Spawn Type |
− | | | + | | SignedVarInt |
− | | | + | | |
+ | |- | ||
+ | | Coordinates | ||
+ | | BlockCoordinates | ||
+ | | | ||
+ | |- | ||
+ | | Forced | ||
+ | | bool | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Animate ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,501: | Line 1,699: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x2C |
− | |rowspan=" | + | |rowspan="2"| Server & Client |
− | | | + | | Action ID |
− | | | + | | SignedVarInt |
− | | | + | | |
+ | |- | ||
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Respawn ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,517: | Line 1,721: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x2D |
− | |rowspan=" | + | |rowspan="5"| Server & Client |
− | | | + | | Position X |
− | | | + | | float |
− | | | + | | |
+ | |- | ||
+ | | Position Y | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Position Z | ||
+ | | float | ||
+ | | | ||
|- | |- | ||
− | | | + | | Runtime Entity Id |
− | | | + | | byte |
− | | | + | | |
|- | |- | ||
− | | | + | | Runtime Entity ID |
− | | | + | | UnsignedVarLong |
− | | | + | | |
|} | |} | ||
+ | |||
− | |||
− | + | ==== Container Open ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,550: | Line 1,755: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x2E |
− | |rowspan=" | + | |rowspan="4"| Client |
+ | | Window Id | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Type | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Block Position | ||
+ | | Position | ||
+ | | | ||
+ | |- | ||
+ | | Unique Entity Id | ||
+ | | SignedVarLong | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Container Close ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,563: | Line 1,785: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x2F |
− | |rowspan=" | + | |rowspan="1"| Server & Client |
− | | | + | | Window Id |
− | | | + | | byte |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Player Hotbar ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,583: | Line 1,803: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x30 |
− | |rowspan=" | + | |rowspan="3"| Server & Client |
− | |} | + | | Selected Hotbar Slot |
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Container Id | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Select Hotbar Slot | ||
+ | | bool | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Inventory Content ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,596: | Line 1,829: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x31 |
− | |rowspan=" | + | |rowspan="2"| Server & Client |
+ | | Inventory Id | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Input | ||
+ | | ItemStacks | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Inventory Slot ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,609: | Line 1,851: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x32 |
− | |rowspan=" | + | |rowspan="3"| Server & Client |
+ | | Inventory Id | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Slot | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Item | ||
+ | | Item | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Container Set Data ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,622: | Line 1,877: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x33 |
− | |rowspan=" | + | |rowspan="3"| Client |
− | | | + | | Window Id |
− | + | | byte | |
− | + | | | |
− | + | |- | |
− | + | | Property | |
− | + | | SignedVarInt | |
− | + | | | |
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Value |
− | + | | SignedVarInt | |
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Crafting Data ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,648: | Line 1,903: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x34 |
− | |rowspan=" | + | |rowspan="4"| Client |
+ | | Recipes | ||
+ | | Recipes | ||
+ | | | ||
+ | |- | ||
+ | | Potion type recipes | ||
+ | | PotionTypeRecipe[] | ||
+ | | | ||
+ | |- | ||
+ | | potion container recipes | ||
+ | | PotionContainerChangeRecipe[] | ||
+ | | | ||
+ | |- | ||
+ | | Is Clean | ||
+ | | bool | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Crafting Event ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,661: | Line 1,933: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x35 |
− | |rowspan=" | + | |rowspan="5"| Server & Client |
− | |} | + | | Window ID |
− | + | | byte | |
− | ==== | + | | |
+ | |- | ||
+ | | Recipe Type | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Recipe ID | ||
+ | | UUID | ||
+ | | | ||
+ | |- | ||
+ | | Input | ||
+ | | ItemStacks | ||
+ | | | ||
+ | |- | ||
+ | | Result | ||
+ | | ItemStacks | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Gui Data Pick Item ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,674: | Line 1,967: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x36 |
− | |rowspan=" | + | |rowspan="0"| Client |
+ | |||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Adventure Settings ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,687: | Line 1,983: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="6"| 0x37 |
− | |rowspan=" | + | |rowspan="6"| Server & Client |
+ | | Flags | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Command permission | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Action permissions | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Permission level | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Custom stored permissions | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | User Id | ||
+ | | long | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Block Entity Data ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,700: | Line 2,021: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x38 |
− | |rowspan=" | + | |rowspan="2"| Server & Client |
− | |} | + | | Coordinates |
+ | | BlockCoordinates | ||
+ | | | ||
+ | |- | ||
+ | | NamedTag | ||
+ | | Nbt | ||
+ | | | ||
+ | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Player Input ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,713: | Line 2,043: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x39 |
− | |rowspan=" | + | |rowspan="4"| Server |
+ | | Motion X | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Motion Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Jumping | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Sneaking | ||
+ | | bool | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Level Chunk ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,726: | Line 2,073: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x3A |
− | |rowspan=" | + | |rowspan="5"| Client |
− | | | + | | Chunk X |
− | | | + | | SignedVarInt |
− | | | + | | |
+ | |- | ||
+ | | Chunk Z | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Sub Chunk Count | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Cache Enabled | ||
+ | | bool | ||
+ | | | ||
|- | |- | ||
− | | | + | | Chunk Data |
− | | | + | | ByteArray |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Set Commands Enabled ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,746: | Line 2,107: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x3B |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Commands enabled |
− | | | + | | bool |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Set Difficulty ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,774: | Line 2,125: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x3C |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Difficulty |
− | | | + | | UnsignedVarInt |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Change Dimension ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,794: | Line 2,143: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x3D |
− | |rowspan=" | + | |rowspan="5"| Client |
− | |} | + | | Dimension |
− | + | | SignedVarInt | |
− | ==== | + | | |
+ | |- | ||
+ | | Position X | ||
+ | | Vector3 | ||
+ | | | ||
+ | |- | ||
+ | | Position Y | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Position Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Respawn | ||
+ | | boolean | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Set Player Game Type ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,807: | Line 2,177: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x3E |
− | |rowspan="1"| | + | |rowspan="1"| Server & Client |
− | | | + | | Game mode |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Player List ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,823: | Line 2,195: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x3F |
− | |rowspan="1"| | + | |rowspan="1"| Client |
+ | | Records | ||
+ | | PlayerRecords | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Simple Event ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,836: | Line 2,213: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x40 |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Event Type |
− | | | + | | ushort |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Event ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,856: | Line 2,231: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x41 |
− | |rowspan=" | + | |rowspan="3"| Client |
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Event data | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Event type | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
− | |||
− | + | ==== Spawn Experience Orb ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,882: | Line 2,257: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x42 |
− | |rowspan=" | + | |rowspan="4"| Client |
− | |} | + | | Position X |
+ | | Vector3 | ||
+ | | | ||
+ | |- | ||
+ | | Position Y | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Position Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Amount | ||
+ | | int | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Map Item Data ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,895: | Line 2,287: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x43 |
− | |rowspan="1"| | + | |rowspan="1"| Client |
− | | | + | | MapInfo |
− | | | + | | MapInfo |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Map Info Request ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,911: | Line 2,305: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x44 |
− | |rowspan="1"| | + | |rowspan="1"| Server & Client |
− | | | + | | Unique Map Id |
− | | | + | | SignedVarLong |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Request Chunk Radius ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,927: | Line 2,323: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x45 |
− | |rowspan="1"| | + | |rowspan="1"| Server & Client |
+ | | Chunk radius | ||
+ | | SignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Chunk Radius Updated ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,940: | Line 2,341: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x46 |
− | |rowspan="1"| | + | |rowspan="1"| Client |
+ | | Chunk radius | ||
+ | | SignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== ItemFrame Drop Item ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,953: | Line 2,359: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x47 |
− | |rowspan=" | + | |rowspan="3"| Server & Client |
+ | | Block Position X | ||
+ | | BlockCoordinates | ||
+ | | | ||
+ | |- | ||
+ | | Block Position Y | ||
+ | | int | ||
+ | | See note below. | ||
+ | |- | ||
+ | | Block Position Z | ||
+ | | int | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | According to the NukkitX Protocol, the server sends the Y coordinate divided by two, and negative if needs to be subtracted by one. Example: | ||
− | ==== | + | int y; |
+ | if (packet.getBlockPosition().getY() > 0) { | ||
+ | y = packet.getBlockPosition().getY() * 2; | ||
+ | } else { | ||
+ | y = (packet.getBlockPosition().getY() * -2) - 1; | ||
+ | } | ||
+ | |||
+ | ==== Game Rules Changed ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 1,966: | Line 2,392: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x48 |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Rules |
− | | | + | | GameRules |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Camera ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 1,986: | Line 2,410: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="2"| | + | |rowspan="2"| 0x49 |
− | |rowspan="2"| | + | |rowspan="2"| Client |
− | | | + | | Camera Unique Entity Id |
− | | | + | | SignedVarLong |
− | | | + | | |
|- | |- | ||
− | | | + | | Player Unique Entity Id |
− | | | + | | SignedVarLong |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Boss Event ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,006: | Line 2,432: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x4A |
− | |rowspan=" | + | |rowspan="2"| Client |
+ | | Boss Entity ID | ||
+ | | SignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Event Type | ||
+ | | UnsignedVarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Show Credits ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,019: | Line 2,454: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="2"| | + | |rowspan="2"| 0x4B |
− | |rowspan="2"| | + | |rowspan="2"| Client |
− | | | + | | Runtime Entity ID |
− | | | + | | UnsignedVarLong |
− | | | + | | |
|- | |- | ||
− | | | + | | Status |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Available Commands ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,039: | Line 2,476: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x4C |
− | |rowspan=" | + | |rowspan="0"| Client |
− | + | ||
− | |||
− | |||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Command Request ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,055: | Line 2,492: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x4D |
− | |rowspan=" | + | |rowspan="5"| Server |
− | | | + | | Command |
− | | | + | | string |
− | | | + | | |
− | |} | + | |- |
+ | | Command type | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Unknown UUID | ||
+ | | UUID | ||
+ | | | ||
+ | |- | ||
+ | | Request ID | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Unknown | ||
+ | | bool | ||
+ | | | ||
+ | |} | ||
+ | |||
− | ==== | + | |
+ | ==== CommandBlock Update ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,071: | Line 2,526: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x4E |
− | |rowspan="1"| | + | |rowspan="1"| Server |
− | | | + | | Is Block |
− | | | + | | bool |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Command Output ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,087: | Line 2,544: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x4F |
− | |rowspan=" | + | |rowspan="0"| Client |
− | + | ||
− | | | + | |} |
− | + | ||
− | + | ||
− | + | ||
− | + | ==== Update Trade ==== | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==== | ||
− | |||
{| class="wikitable" | {| class="wikitable" | ||
! Packet ID | ! Packet ID | ||
Line 2,119: | Line 2,560: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="10"| 0x50 |
− | |rowspan=" | + | |rowspan="10"| Client |
− | | | + | | Window ID |
− | + | | byte | |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Window Type |
− | |||
− | |||
| byte | | byte | ||
− | | | + | | |
|- | |- | ||
− | | | + | | Unknown0 |
− | | | + | | VarInt |
− | | | + | | |
+ | |- | ||
+ | | Unknown1 | ||
+ | | VarInt | ||
+ | | | ||
+ | |- | ||
+ | | Unknown2 | ||
+ | | VarInt | ||
+ | | | ||
+ | |- | ||
+ | | Is Willing | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Trader Entity ID | ||
+ | | SignedVarLong | ||
+ | | | ||
|- | |- | ||
− | | | + | | Player Entity ID |
− | | | + | | SignedVarLong |
− | | | + | | |
|- | |- | ||
− | | | + | | Display Name |
− | | | + | | string |
− | | | + | | |
|- | |- | ||
− | | | + | | NamedTag |
− | | | + | | Nbt |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== Update | + | |
+ | ==== Update Equip ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,164: | Line 2,614: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x51 |
− | |rowspan=" | + | |rowspan="5"| Client |
− | |} | + | | Window ID |
− | + | | byte | |
− | ==== | + | | |
+ | |- | ||
+ | | Window Type | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Unknown | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Entity ID | ||
+ | | SignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | NamedTag | ||
+ | | Nbt | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Resource Pack Data Info ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,177: | Line 2,648: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="7"| 0x52 |
− | |rowspan=" | + | |rowspan="7"| Client |
+ | | Package ID | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Max Chunk Size | ||
+ | | uint | ||
+ | | | ||
+ | |- | ||
+ | | Chunk Count | ||
+ | | uint | ||
+ | | | ||
+ | |- | ||
+ | | Compressed Package Size | ||
+ | | ulong | ||
+ | | | ||
+ | |- | ||
+ | | Hash | ||
+ | | ByteArray | ||
+ | | | ||
+ | |- | ||
+ | | Is Premium | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Pack Type | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Resource Pack Chunk Data ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,190: | Line 2,690: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x53 |
− | |rowspan=" | + | |rowspan="4"| Client |
+ | | Package ID | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Chunk Index | ||
+ | | uint | ||
+ | | | ||
+ | |- | ||
+ | | Progress | ||
+ | | ulong | ||
+ | | | ||
+ | |- | ||
+ | | Payload | ||
+ | | ByteArray | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Resource Pack Chunk Request ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,203: | Line 2,720: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x54 |
− | |rowspan=" | + | |rowspan="2"| Server |
− | | | + | | Package ID |
− | | | + | | string |
− | | | + | | |
+ | |- | ||
+ | | Chunk Index | ||
+ | | uint | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Transfer ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,219: | Line 2,742: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x55 |
− | |rowspan=" | + | |rowspan="2"| Client |
+ | | Address | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Port | ||
+ | | ushort | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Play Sound ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,232: | Line 2,764: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x56 |
− | |rowspan=" | + | |rowspan="4"| Client |
− | | | + | | Sound name |
− | | | + | | string |
− | | | + | | |
+ | |- | ||
+ | | Sound position | ||
+ | | Position | ||
+ | | | ||
+ | |- | ||
+ | | Volume | ||
+ | | float | ||
+ | | | ||
|- | |- | ||
− | | | + | | Pitch |
− | | | + | | float |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Stop Sound ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,252: | Line 2,794: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="2"| | + | |rowspan="2"| 0x57 |
− | |rowspan="2"| | + | |rowspan="2"| Client |
− | | | + | | Sound Name |
− | | | + | | string |
− | | | + | | |
|- | |- | ||
− | | | + | | Stopping All Sound |
− | | | + | | bool |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Set Title ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,272: | Line 2,816: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x58 |
− | |rowspan=" | + | |rowspan="5"| Client |
− | | | + | | Type |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Text |
− | | | + | | string |
− | | | + | | |
|- | |- | ||
− | | | + | | Fade In Time |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Stay Time |
− | | | + | | SignedVarInt |
− | | | + | | |
|- | |- | ||
− | | | + | | Fade Out Time |
− | | | + | | SignedVarInt |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Add Behavior Tree ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,308: | Line 2,850: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x59 |
− | |rowspan="1"| | + | |rowspan="1"| Client |
+ | | Behavior Tree Json | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Structure Block Update ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,321: | Line 2,868: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x5A |
− | |rowspan=" | + | |rowspan="0"| Client |
+ | |||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Show Store Offer ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,334: | Line 2,884: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x5B |
− | |rowspan=" | + | |rowspan="2"| Client |
− | | | + | | Offer Id |
− | | | + | | string |
− | | | + | | |
|- | |- | ||
− | | | + | | Shown To All |
− | | | + | | bool |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Purchase Receipt ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,362: | Line 2,906: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x5C |
− | |rowspan=" | + | |rowspan="0"| Server |
+ | |||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Player Skin ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,375: | Line 2,922: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x5D |
− | |rowspan=" | + | |rowspan="4"| Server & Client |
+ | | UUID | ||
+ | | UUID | ||
+ | | | ||
+ | |- | ||
+ | | Skin | ||
+ | | Skin | ||
+ | | | ||
+ | |- | ||
+ | | Skin Name | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Old Skin Name | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Sub Client Login ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,388: | Line 2,952: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x5E |
− | |rowspan=" | + | |rowspan="0"| Client |
+ | |||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Automation Client Connect ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,401: | Line 2,968: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x5F |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Address |
− | | | + | | string |
− | | | + | | |
− | | | + | |} |
− | + | ||
− | + | ||
− | + | ||
− | + | ==== Set Last Hurt By ==== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,429: | Line 2,986: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x60 |
− | |rowspan="1"| | + | |rowspan="1"| Client |
+ | | Entity Type Id | ||
+ | | VarInt | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Book Edit ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,442: | Line 3,004: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x61 |
− | |rowspan=" | + | |rowspan="0"| Client |
− | + | ||
− | |||
− | |||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Npc Request ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,458: | Line 3,020: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="4"| 0x62 |
− | |rowspan=" | + | |rowspan="4"| Server & Client |
− | | | + | | Runtime Entity ID |
− | + | | UnsignedVarLong | |
− | + | | | |
− | + | |- | |
− | + | | Unknown0 | |
− | + | | byte | |
− | + | | | |
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Unknown1 |
− | + | | string | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Unknown2 |
− | | | + | | byte |
− | | | + | | |
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Photo Transfer ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,491: | Line 3,050: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="3"| 0x63 |
− | |rowspan=" | + | |rowspan="3"| Server |
+ | | File name | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Image data | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Unknown2 | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Model Form Request ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,504: | Line 3,076: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x64 |
− | |rowspan=" | + | |rowspan="2"| Client |
− | |} | + | | Form Id |
− | + | | UnsignedVarInt | |
− | ==== | + | | |
+ | |- | ||
+ | | Form Data | ||
+ | | string | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Model Form Response ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,517: | Line 3,098: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x65 |
− | |rowspan=" | + | |rowspan="2"| Server |
+ | | Form Id | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Form Data | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Server Settings Request ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,530: | Line 3,120: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="0"| 0x66 |
− | |rowspan=" | + | |rowspan="0"| Server |
+ | |||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Server Settings Response ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,543: | Line 3,136: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="2"| 0x67 |
− | |rowspan=" | + | |rowspan="2"| Client |
+ | | Form Id | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Form Data | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Show Profile ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,556: | Line 3,158: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x68 |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Xuid |
− | | | + | | string |
− | + | | | |
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Set Default Game Type ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,576: | Line 3,176: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x69 |
− | |rowspan=" | + | |rowspan="1"| Client |
− | | | + | | Game mode |
− | | | + | | VarInt |
− | + | | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Remove Objective ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,600: | Line 3,194: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="1"| 0x6A |
− | |rowspan=" | + | |rowspan="1"| Client |
+ | | Objective Id | ||
+ | | string | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Set Display Objective ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,613: | Line 3,212: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x6B |
− | |rowspan=" | + | |rowspan="5"| Client |
− | | | + | | Display Slot |
− | | | + | | string |
− | | | + | | |
+ | |- | ||
+ | | Objective Id | ||
+ | | string | ||
+ | | | ||
|- | |- | ||
− | | | + | | Display Name |
− | | | + | | string |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | Criteria |
− | + | | string | |
− | + | | | |
− | | | ||
− | | | ||
|- | |- | ||
− | | | + | | Sort Order |
− | | | + | | SignedVarInt |
− | | | + | | |
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Set Score ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,653: | Line 3,246: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="1"| 0x6C |
− | |rowspan="1"| | + | |rowspan="1"| Client |
+ | | Entries | ||
+ | | ScoreEntries | ||
+ | | | ||
|} | |} | ||
+ | |||
+ | |||
− | ==== | + | ==== Lab Table ==== |
{| class="wikitable" | {| class="wikitable" | ||
Line 2,666: | Line 3,264: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="5"| 0x6D |
− | |rowspan=" | + | |rowspan="5"| Server & Client |
+ | | Unknown Byte 0 | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Block Entity Position X | ||
+ | | VarInt | ||
+ | | | ||
+ | |- | ||
+ | | Block Entity Position Y | ||
+ | | VarInt | ||
+ | | | ||
+ | |- | ||
+ | | Block Entity Position Z | ||
+ | | VarInt | ||
+ | | | ||
+ | |- | ||
+ | | Reaction Type | ||
+ | | byte | ||
+ | | | ||
|} | |} | ||
+ | |||
− | ==== | + | |
+ | ==== Update Block Synced ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,679: | Line 3,298: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | |rowspan="1"| | + | |rowspan="6"| 0x6E |
− | |rowspan="1"| | + | |rowspan="6"| Client |
+ | | Coordinates | ||
+ | | BlockCoordinates | ||
+ | | | ||
+ | |- | ||
+ | | Block Runtime ID | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Block Priority | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Data Layer ID | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Unknown0 | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Unknown1 | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Move Entity Delta ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="2"| 0x6F | ||
+ | |rowspan="2"| Client | ||
+ | | Runtime Entity ID | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Flags | ||
+ | | ushort | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Set Scoreboard Identity ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="1"| 0x70 | ||
+ | |rowspan="1"| Client | ||
+ | | Entries | ||
+ | | ScoreboardIdentityEntries | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Set Local Player As Initialized ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="1"| 0x71 | ||
+ | |rowspan="1"| Server | ||
+ | | Runtime Entity Id | ||
+ | | UnsignedVarLong | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Update Soft Enum ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x72 | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Network Stack Latency ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="2"| 0x73 | ||
+ | |rowspan="2"| Server & Client | ||
+ | | Timestamp | ||
+ | | ulong | ||
+ | | | ||
+ | |- | ||
+ | | Send Back | ||
+ | | byte | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Script Custom Event ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="2"| 0x75 | ||
+ | |rowspan="2"| Server & Client | ||
+ | | Event Name | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Data | ||
+ | | string | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Spawn Particle Effect ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="6"| 0x76 | ||
+ | |rowspan="6"| Client | ||
+ | | Dimension Id | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Unique Entity Id | ||
+ | | SignedVarLong | ||
+ | | | ||
+ | |- | ||
+ | | Position X | ||
+ | | Vector3 | ||
+ | | | ||
+ | |- | ||
+ | | Position Y | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Position Z | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Identifier | ||
+ | | String | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Available Entity Identifiers ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="1"| 0x77 | ||
+ | |rowspan="1"| Client | ||
+ | | NamedTag | ||
+ | | Nbt | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Level Sound Event (2) ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="6"| 0x78 | ||
+ | |rowspan="6"| Server & Client | ||
+ | | Sound ID | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Position | ||
+ | | Vector3 | ||
+ | | | ||
+ | |- | ||
+ | | Block Id | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Entity Type | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Is baby mob | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Is global | ||
+ | | bool | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Network Chunk Publisher Update ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="4"| 0x79 | ||
+ | |rowspan="4"| Client | ||
+ | | Position X | ||
+ | | BlockCoordinates | ||
+ | | | ||
+ | |- | ||
+ | | Position Y | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Position Z | ||
+ | | int | ||
+ | | | ||
+ | |- | ||
+ | | Radius | ||
+ | | uint | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Biome Definition List ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="1"| 0x7A | ||
+ | |rowspan="1"| Client | ||
+ | | NamedTag | ||
+ | | Nbt | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Level Sound Event (3) ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="6"| 0x7B | ||
+ | |rowspan="6"| Server & Client | ||
+ | | Sound ID | ||
+ | | UnsignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Position | ||
+ | | Vector3 | ||
+ | | | ||
+ | |- | ||
+ | | Block Id | ||
+ | | SignedVarInt | ||
+ | | | ||
+ | |- | ||
+ | | Entity Type | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Is baby mob | ||
+ | | bool | ||
+ | | | ||
+ | |- | ||
+ | | Is global | ||
+ | | bool | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Level Event Generic ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x7C | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Lectern Update ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="4"| 0x7D | ||
+ | |rowspan="4"| Client | ||
+ | | Page | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Total Pages | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Block Position | ||
+ | | Position | ||
+ | | | ||
+ | |- | ||
+ | | Dropping Book | ||
+ | | boolean | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Video Stream Connect ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="5"| 0x7E | ||
+ | |rowspan="5"| Client | ||
+ | | Server URI | ||
+ | | string | ||
+ | | | ||
+ | |- | ||
+ | | Frame Send Frequency | ||
+ | | float | ||
+ | | | ||
+ | |- | ||
+ | | Action | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Resolution X | ||
+ | | int | ||
+ | | | ||
+ | |- | ||
+ | | Resolution Y | ||
+ | | int | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Client Cache Status ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="1"| 0x81 | ||
+ | |rowspan="1"| Server & Client | ||
+ | | Supported | ||
+ | | bool | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== On Screen Texture Animation ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x82 | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Map Create Locked Copy ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="2"| 0x83 | ||
+ | |rowspan="2"| Client | ||
+ | | Original Map Id | ||
+ | | long | ||
+ | | | ||
+ | |- | ||
+ | | New Map Id | ||
+ | | long | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Structure Template Data Export Request ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x84 | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Structure Template Data Export Response ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x85 | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Update Block Properties ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="2"| 0x86 | ||
+ | |rowspan="2"| Client | ||
+ | | Unknown | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | NamedTag | ||
+ | | Nbt | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Client Cache Blob Status ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x87 | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Client Cache Miss Response ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="0"| 0x88 | ||
+ | |rowspan="0"| Client | ||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | ==== Network Settings ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Packet ID | ||
+ | ! Bound To | ||
+ | ! Field Name | ||
+ | ! Field Type | ||
+ | ! Notes | ||
+ | |- | ||
+ | |rowspan="2"| 0x8F | ||
+ | |rowspan="2"| Client | ||
+ | | Unknown | ||
+ | | byte | ||
+ | | | ||
+ | |- | ||
+ | | Compression threshold | ||
+ | | short | ||
+ | | | ||
|} | |} | ||
[[Category:Bedrock Minecraft]] | [[Category:Bedrock Minecraft]] |
Revision as of 17:27, 25 May 2020
- Remember that this page is a WIP, it is not even added to the Main Page. Come back later to see a more complete page.
Heads up!
|
This is the Bedrock Edition Protocol Documentation. The Bedrock Edition Protocol uses UDP instead of TCP that is used for the Java Edition.<br> The Bedrock Edition Client uses RakNet as its protocol library.
The default Bedrock Edition port is 19132
Contents
- 1 Data types
- 2 Packet Format
- 3 Login process
- 4 Packets
- 4.1 Login
- 4.2 Play Status
- 4.3 Server To Client Handshake
- 4.4 Client To Server Handshake
- 4.5 Disconnect
- 4.6 Resource Packs info
- 4.7 Resource Pack Stack
- 4.8 Resource Pack Response
- 4.9 Text
- 4.10 Set Time
- 4.11 Start Game
- 4.12 Add Player
- 4.13 Add Entity
- 4.14 Remove Entity
- 4.15 Add Item Entity
- 4.16 Take Item Entity
- 4.17 Move Entity Absolute
- 4.18 Move Player
- 4.19 Rider Jump
- 4.20 Update Block
- 4.21 Add Painting
- 4.22 Tick Sync
- 4.23 Level Sound Event (1)
- 4.24 Level Event
- 4.25 Block Event
- 4.26 Entity Event
- 4.27 Mob Effect
- 4.28 Update Attributes
- 4.29 Inventory Transaction
- 4.30 Mob Equipment
- 4.31 Mob Armor Equipment
- 4.32 Interact
- 4.33 Block Pick Request
- 4.34 Entity Pick Request
- 4.35 Player Action
- 4.36 Entity Fall
- 4.37 Hurt Armor
- 4.38 Set Entity Data
- 4.39 Set Entity Motion
- 4.40 Set Entity Link
- 4.41 Set Health
- 4.42 Set Spawn Position
- 4.43 Animate
- 4.44 Respawn
- 4.45 Container Open
- 4.46 Container Close
- 4.47 Player Hotbar
- 4.48 Inventory Content
- 4.49 Inventory Slot
- 4.50 Container Set Data
- 4.51 Crafting Data
- 4.52 Crafting Event
- 4.53 Gui Data Pick Item
- 4.54 Adventure Settings
- 4.55 Block Entity Data
- 4.56 Player Input
- 4.57 Level Chunk
- 4.58 Set Commands Enabled
- 4.59 Set Difficulty
- 4.60 Change Dimension
- 4.61 Set Player Game Type
- 4.62 Player List
- 4.63 Simple Event
- 4.64 Event
- 4.65 Spawn Experience Orb
- 4.66 Map Item Data
- 4.67 Map Info Request
- 4.68 Request Chunk Radius
- 4.69 Chunk Radius Updated
- 4.70 ItemFrame Drop Item
- 4.71 Game Rules Changed
- 4.72 Camera
- 4.73 Boss Event
- 4.74 Show Credits
- 4.75 Available Commands
- 4.76 Command Request
- 4.77 CommandBlock Update
- 4.78 Command Output
- 4.79 Update Trade
- 4.80 Update Equip
- 4.81 Resource Pack Data Info
- 4.82 Resource Pack Chunk Data
- 4.83 Resource Pack Chunk Request
- 4.84 Transfer
- 4.85 Play Sound
- 4.86 Stop Sound
- 4.87 Set Title
- 4.88 Add Behavior Tree
- 4.89 Structure Block Update
- 4.90 Show Store Offer
- 4.91 Purchase Receipt
- 4.92 Player Skin
- 4.93 Sub Client Login
- 4.94 Automation Client Connect
- 4.95 Set Last Hurt By
- 4.96 Book Edit
- 4.97 Npc Request
- 4.98 Photo Transfer
- 4.99 Model Form Request
- 4.100 Model Form Response
- 4.101 Server Settings Request
- 4.102 Server Settings Response
- 4.103 Show Profile
- 4.104 Set Default Game Type
- 4.105 Remove Objective
- 4.106 Set Display Objective
- 4.107 Set Score
- 4.108 Lab Table
- 4.109 Update Block Synced
- 4.110 Move Entity Delta
- 4.111 Set Scoreboard Identity
- 4.112 Set Local Player As Initialized
- 4.113 Update Soft Enum
- 4.114 Network Stack Latency
- 4.115 Script Custom Event
- 4.116 Spawn Particle Effect
- 4.117 Available Entity Identifiers
- 4.118 Level Sound Event (2)
- 4.119 Network Chunk Publisher Update
- 4.120 Biome Definition List
- 4.121 Level Sound Event (3)
- 4.122 Level Event Generic
- 4.123 Lectern Update
- 4.124 Video Stream Connect
- 4.125 Client Cache Status
- 4.126 On Screen Texture Animation
- 4.127 Map Create Locked Copy
- 4.128 Structure Template Data Export Request
- 4.129 Structure Template Data Export Response
- 4.130 Update Block Properties
- 4.131 Client Cache Blob Status
- 4.132 Client Cache Miss Response
- 4.133 Network Settings
Data types
Size (bytes) | Range | Notes | |
---|---|---|---|
byte | 1 | 0 to 255 | |
boolean | 1 | 0 or 1 | A byte treated as boolean, 0 is false but anything greater then that is true |
short | 2 | -32768 to 32767 | |
ushort | 2 | 0 to 65535 | |
int | 4 | -2147483648 to 2147483647 | Signed 32-bit integer |
uint | 4 | 0 to 4294967295 | Unsigned 32-bit integer |
long | 8 | -2^63 to 2^63-1 | Signed 64-bit integer |
ulong | 8 | 2^64-1 | Unsigned 64-bit integer |
float | 4 | A single-precision 32-bit IEEE 754 floating point number | |
double | 8 | A double-precision 64-bit IEEE 754 floating point number | |
VarInt | ≥ 1<br>≤ 5 | -2147483648 and 2147483647 | |
VarLong | ≥ 1<br>≤ 10 | -2^63 and 2^63-1 | |
UUID | 16 | A UUID | Encoded as two unsigned 64-bit integers: the most significant 64 bits and the least significant 64 bits |
Packet Format
Login process
Packets
Please note that some packet ids are missing, so they don't line up. The following packet ids are missing: 0x10, 0x74, 0x7F, 0x80 (16, 116, 127, 128)
Login
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x01 | Server | Protocol version | int | |
Chain data | JSON array of JWT Data | Contains the display name, UUID and XUID | ||
Skin data | JWT Data |
Play Status
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x02 | Client | Status | int | The current status of the client. |
The values for each status are as follows:
- 0: Login success
- 1: Failed client
- 2: Failed server
- 3 Player spawn
- 4 Failed invalid Tenant
- 5: Failed Vanilla Edu.
- 6: Failed Edu. Vanilla
- 7: Failed server full
Server To Client Handshake
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x03 | Client | JWT data | JWT String | Contains the salt to complete the Diffie-Hellman key exchange |
Client To Server Handshake
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x04 | Server |
Disconnect
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x05 | Client | Disconnect screen visibility | bool | |
Kick message | string |
Resource Packs info
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x06 | Client | Forced to Accept | bool | If the resource pack requires the client accept it. |
Scripting Enabled | bool | If scripting is enabled. | ||
BehahaviorPackInfos | ResourcePackInfos | |||
ResourcePackInfos | ResourcePackInfos |
Resource Pack Stack
Packet ID | Bound To | Field Name | Field Type | Notes | ||
---|---|---|---|---|---|---|
0x07 | Client | Forced to Accept | boolean | If the resource pack must be accepted for the player to join the server. | ||
Resource Pack Entry | Field Name | |||||
Array | Pack ID | String | The ID of the resource pack. | |||
Pack Version | String | The version of the resource pack. | ||||
Subpack Name | String | The subpack name of the resource pack. | ||||
Behavior Pack Entry | Field Name | |||||
Array | Pack ID | String | The ID of the resource pack. | |||
Pack Version | String | The version of the resource pack. | ||||
Subpack Name | String | The subpack name of the resource pack. | ||||
Experimental | boolean | If the sent resource and behavior packs are experimental. | ||||
Game Version | String | The version of the game the sent resource and behavior packs were made for. |
Resource Pack Response
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x08 | Server | rowspan="3" | rowspan="3" | Status |
Pack IDs Size | Little Endian short | The amount of pack IDs included in this packet. | ||
Pack IDs | Array | An array of all the Pack IDs. |
The values for each status are as follows:
- 0: None
- 1: Refused
- 2: Send packs
- 3: Have all packs
- 4: Completed
Text
Packet ID | Bound To | Field Name | Field Type | Notes | |
---|---|---|---|---|---|
0x09 | Server & Client | Type | byte | The type of chat message sent. | |
Needs Translation | boolean | If the message sent is a translation key and needs to be translated. | |||
Chat Type ID | Text | Derived from above; values sent here change depending on that. | |||
0, 1, or 2 | Source Name | String | The name of the source. | ||
3, 4, or 5 | Message | String | The message sent with the packet. | ||
6, 7, or 8 | Message | String | The message sent with the packet | ||
Parameters | Array | The parameters sent with the packet. This usually includes translation parameters or similar types depending on what kind of chat type was sent. | |||
XUID | Optional String | The XUID of the player who sent this message. | |||
Platform Chat ID | Optional String | The platform chat ID of the sent message. |
ID | Chat Type |
---|---|
0 | Chat |
1 | Whisper |
2 | Announcement |
3 | Raw |
4 | Tip |
5 | System |
6 | Translation |
7 | Popup |
8 | Jukebox Popup |
Set Time
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x0A | Client | Time | SignedVarInt |
Start Game
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x0B | Client | Entity ID Self | SignedVarLong | |
Runtime Entity ID | UnsignedVarLong | |||
Player Gamemode | SignedVarInt | |||
Spawn | Vector3 | |||
Rotation | Vector2 | |||
Seed | SignedVarInt | |||
Dimension | SignedVarInt | |||
Generator | SignedVarInt | |||
Gamemode | SignedVarInt | |||
Difficulty | SignedVarInt | |||
X | SignedVarInt | |||
Y | VarInt | |||
Z | SignedVarInt | |||
Has achievements disabled | bool | |||
Day cycle stop time | SignedVarInt | |||
EDU offer | SignedVarInt | |||
Has EDU features enabled | bool | |||
Rain level | float | |||
Lightning level | float | |||
Has Confirmed Platform Locked Content | bool | |||
Is Multiplayer | bool | |||
Broadcast To LAN | bool | |||
Xbox Live Broadcast Mode | VarInt | |||
Platform Broadcast Mode | VarInt | |||
Enable commands | bool | |||
Is texturepacks required | bool | |||
GameRules | GameRules | |||
Bonus Chest | bool | |||
Map Enabled | bool | |||
Permission Level | SignedVarInt | |||
Server Chunk Tick Range | int | |||
Has Locked Behavior Pack | bool | |||
Has Locked Resource Pack | bool | |||
Is From Locked World Template | bool | |||
Use MSA Gamertags Only | bool | |||
Is From World Template | bool | |||
Is World Template Option Locked | bool | |||
Only Spawn V1 Villagers | bool | |||
Game Version | string | |||
Level ID | string | |||
World name | string | |||
Premium World Template Id | string | |||
Is Trial | bool | |||
Is Server Side movement enabled | bool | |||
Current Tick | long | |||
Enchantment Seed | SignedVarInt | |||
Block Palette | BlockPalette | |||
Itemstates | Itemstates | |||
Multiplayer Correlation ID | string |
Add Player
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x0C | Client | UUID | UUID | |
Username | string | |||
Entity ID Self | SignedVarLong | |||
Runtime Entity ID | UnsignedVarLong | |||
Platform Chat ID | string | |||
X | float | |||
Y | float | |||
Z | float | |||
Speed X | float | |||
Speed Y | float | |||
Speed Z | float | |||
Pitch | float | |||
Yaw | float | |||
Head Yaw | float | |||
Item | Item | |||
Metadata | MetadataDictionary | |||
Flags | UnsignedVarInt | |||
Command permission | UnsignedVarInt | |||
Action Permissions | UnsignedVarInt | |||
Permission Level | UnsignedVarInt | |||
Custom stored permissions | UnsignedVarInt | |||
User Id | long | |||
Links | Links | |||
Device ID | string | |||
Device OS | int |
Add Entity
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x0D | Client | Entity ID Self | SignedVarLong | |
Runtime Entity ID | UnsignedVarLong | |||
Entity Type | string | |||
X | float | |||
Y | float | |||
Z | float | |||
Speed X | float | |||
Speed Y | float | |||
Speed Z | float | |||
Pitch | float | |||
Yaw | float | |||
Head Yaw | float | |||
Attributes | EntityAttributes | |||
Metadata | MetadataDictionary | |||
Links | Links |
Remove Entity
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x0E | Client | Unique Entity Id | SignedVarLong |
Add Item Entity
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x0F | Client | Entity ID Self | SignedVarLong | |
Runtime Entity ID | UnsignedVarLong | |||
Item | Item | |||
X | float | |||
Y | float | |||
Z | float | |||
Speed X | float | |||
Speed Y | float | |||
Speed Z | float | |||
Metadata | MetadataDictionary | |||
Is From Fishing | bool |
Take Item Entity
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x11 | Client | Item Runtime Entity Id | UnsignedVarLong | |
Runtime Entity Id | UnsignedVarLong |
Move Entity Absolute
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x12 | Server & Client | Runtime entity id | UnsignedVarLong | |
Position | Position | |||
Rotation | Position | |||
On ground | boolean | |||
Teleported | boolean |
This packet is sent serverbound when riding a horse/donkey.
Move Player
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x13 | Server & Client | Runtime entity id | UnsignedVarLong | |
Position | Position | |||
Rotation | Position | |||
Mode | float | |||
On ground | float | |||
Riding runtime entity id | float | |||
Teleportation cause | float | |||
Entity type | byte | |||
On Ground | bool | |||
Other Runtime Entity ID | UnsignedVarLong |
Modes:
- 0: Normal
- 1: Reset
- 2: Teleport
- 3: Rotation
Teleportation causes:
- 0: Unknown
- 1: Projectile
- 2: Chorus fruit
- 3: Command
- 4: Behavior
Rider Jump
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x14 | Server & Client | Jump Strength | SignedVarInt |
Update Block
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x15 | Client | Coordinates | BlockCoordinates | |
Block Runtime ID | UnsignedVarInt | |||
Block Priority | UnsignedVarInt | |||
Storage | UnsignedVarInt |
Add Painting
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x16 | Client | Unique Entity Id | SignedVarLong | |
Runtime Entity Id | UnsignedVarLong | |||
Position X | BlockCoordinates | |||
Position Y | SignedVarInt | |||
Position Z | string | |||
Direction | int | |||
Name | String |
Tick Sync
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x17 | Server & Client | Request Timestamp | long | |
Response Timestamp | long |
Level Sound Event (1)
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x18 | Server & Client | Sound ID | byte | |
Position | Vector3 | |||
Block Id | SignedVarInt | |||
Entity Type | SignedVarInt | |||
Is baby mob | bool | |||
Is global | bool |
Level Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x19 | Client | Event ID | SignedVarInt | |
Position | Vector3 | |||
Data | SignedVarInt |
Block Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x1A | Client | Block Position | Position | |
Event Type | SignedVarInt | |||
Event Data | SignedVarInt |
Entity Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x1B | Server & Client | Runtime Entity ID | UnsignedVarLong | |
Event ID | byte | |||
Data | SignedVarInt |
Mob Effect
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x1C | Client | Runtime entity id | UnsignedVarLong | |
Event | byte | |||
Effect id | SignedVarInt | |||
Amplifier | SignedVarInt | |||
Particles | bool | |||
Duration | SignedVarInt |
Events:
- 0: None
- 1: Add
- 2: Modify
- 3: Remove
Update Attributes
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x1D | Client | Runtime Entity ID | UnsignedVarLong | |
Attributes | PlayerAttributes |
Inventory Transaction
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x1E | Server & Client | Transaction | Transaction |
Mob Equipment
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x1F | Server & Client | Runtime Entity ID | UnsignedVarLong | |
Item | Item | |||
Slot | byte | |||
Selected Slot | byte | |||
Windows Id | byte |
Mob Armor Equipment
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x20 | Server & Client | Runtime Entity ID | UnsignedVarLong | |
Helmet | Item | |||
Chestplate | Item | |||
Leggings | Item | |||
Boots | Item |
Interact
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x21 | Server & Client | Action ID | byte | |
Target Runtime Entity ID | UnsignedVarLong |
Block Pick Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x22 | Server | Block Position X | SignedVarInt | |
Block Position Y | SignedVarInt | |||
Block Position Z | SignedVarInt | |||
Add User Data | bool | Whether there should be NBT data in the picked block (activated by pressing Ctrl on default keyboard controls) | ||
Hotbar Slot | byte |
The Bedrock client sends the position of the block. It expects the server to decide the block to pick and add it to the inventory or switch the hotbar slot if needed.
Entity Pick Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x23 | Server | Runtime Entity Id | ulong | |
Hotbar Slot | byte |
Player Action
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x24 | Server | Runtime Entity ID | UnsignedVarLong | |
Action ID | SignedVarInt | |||
Coordinates | BlockCoordinates | |||
Face | SignedVarInt |
Entity Fall
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x25 | Server | Runtime Entity Id | UnsignedVarLong | |
Fall Distance | float | |||
In Void | bool |
Hurt Armor
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x26 | Client | Health | SignedVarInt |
Set Entity Data
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x27 | Server & Client | Runtime Entity ID | UnsignedVarLong | |
Metadata | MetadataDictionary |
Set Entity Motion
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x28 | Server & Client | Runtime Entity Id | UnsignedVarLong | |
Motion X | Vector3 | |||
Motion Y | float | |||
Motion Z | float |
Set Entity Link
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x29 | Client | Ridden ID | SignedVarLong | |
Rider ID | SignedVarLong | |||
Link Type | byte | |||
Unknown | byte |
Set Health
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x2A | Client | Health | SignedVarInt |
Set Spawn Position
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x2B | Client | Spawn Type | SignedVarInt | |
Coordinates | BlockCoordinates | |||
Forced | bool |
Animate
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x2C | Server & Client | Action ID | SignedVarInt | |
Runtime Entity ID | UnsignedVarLong |
Respawn
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x2D | Server & Client | Position X | float | |
Position Y | float | |||
Position Z | float | |||
Runtime Entity Id | byte | |||
Runtime Entity ID | UnsignedVarLong |
Container Open
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x2E | Client | Window Id | byte | |
Type | byte | |||
Block Position | Position | |||
Unique Entity Id | SignedVarLong |
Container Close
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x2F | Server & Client | Window Id | byte |
Player Hotbar
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x30 | Server & Client | Selected Hotbar Slot | UnsignedVarInt | |
Container Id | byte | |||
Select Hotbar Slot | bool |
Inventory Content
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x31 | Server & Client | Inventory Id | UnsignedVarInt | |
Input | ItemStacks |
Inventory Slot
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x32 | Server & Client | Inventory Id | UnsignedVarInt | |
Slot | UnsignedVarInt | |||
Item | Item |
Container Set Data
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x33 | Client | Window Id | byte | |
Property | SignedVarInt | |||
Value | SignedVarInt |
Crafting Data
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x34 | Client | Recipes | Recipes | |
Potion type recipes | PotionTypeRecipe[] | |||
potion container recipes | PotionContainerChangeRecipe[] | |||
Is Clean | bool |
Crafting Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x35 | Server & Client | Window ID | byte | |
Recipe Type | SignedVarInt | |||
Recipe ID | UUID | |||
Input | ItemStacks | |||
Result | ItemStacks |
Gui Data Pick Item
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x36 | Client |
Adventure Settings
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x37 | Server & Client | Flags | UnsignedVarInt | |
Command permission | UnsignedVarInt | |||
Action permissions | UnsignedVarInt | |||
Permission level | UnsignedVarInt | |||
Custom stored permissions | UnsignedVarInt | |||
User Id | long |
Block Entity Data
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x38 | Server & Client | Coordinates | BlockCoordinates | |
NamedTag | Nbt |
Player Input
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x39 | Server | Motion X | float | |
Motion Z | float | |||
Jumping | bool | |||
Sneaking | bool |
Level Chunk
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x3A | Client | Chunk X | SignedVarInt | |
Chunk Z | SignedVarInt | |||
Sub Chunk Count | UnsignedVarInt | |||
Cache Enabled | bool | |||
Chunk Data | ByteArray |
Set Commands Enabled
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x3B | Client | Commands enabled | bool |
Set Difficulty
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x3C | Client | Difficulty | UnsignedVarInt |
Change Dimension
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x3D | Client | Dimension | SignedVarInt | |
Position X | Vector3 | |||
Position Y | bool | |||
Position Z | float | |||
Respawn | boolean |
Set Player Game Type
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x3E | Server & Client | Game mode | SignedVarInt |
Player List
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x3F | Client | Records | PlayerRecords |
Simple Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x40 | Client | Event Type | ushort |
Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x41 | Client | Runtime Entity ID | UnsignedVarLong | |
Event data | SignedVarInt | |||
Event type | byte |
Spawn Experience Orb
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x42 | Client | Position X | Vector3 | |
Position Y | SignedVarInt | |||
Position Z | float | |||
Amount | int |
Map Item Data
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x43 | Client | MapInfo | MapInfo |
Map Info Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x44 | Server & Client | Unique Map Id | SignedVarLong |
Request Chunk Radius
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x45 | Server & Client | Chunk radius | SignedVarInt |
Chunk Radius Updated
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x46 | Client | Chunk radius | SignedVarInt |
ItemFrame Drop Item
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x47 | Server & Client | Block Position X | BlockCoordinates | |
Block Position Y | int | See note below. | ||
Block Position Z | int |
According to the NukkitX Protocol, the server sends the Y coordinate divided by two, and negative if needs to be subtracted by one. Example:
int y; if (packet.getBlockPosition().getY() > 0) { y = packet.getBlockPosition().getY() * 2; } else { y = (packet.getBlockPosition().getY() * -2) - 1; }
Game Rules Changed
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x48 | Client | Rules | GameRules |
Camera
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x49 | Client | Camera Unique Entity Id | SignedVarLong | |
Player Unique Entity Id | SignedVarLong |
Boss Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x4A | Client | Boss Entity ID | SignedVarLong | |
Event Type | UnsignedVarInt |
Show Credits
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x4B | Client | Runtime Entity ID | UnsignedVarLong | |
Status | SignedVarInt |
Available Commands
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x4C | Client |
Command Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x4D | Server | Command | string | |
Command type | UnsignedVarInt | |||
Unknown UUID | UUID | |||
Request ID | string | |||
Unknown | bool |
CommandBlock Update
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x4E | Server | Is Block | bool |
Command Output
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x4F | Client |
Update Trade
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x50 | Client | Window ID | byte | |
Window Type | byte | |||
Unknown0 | VarInt | |||
Unknown1 | VarInt | |||
Unknown2 | VarInt | |||
Is Willing | bool | |||
Trader Entity ID | SignedVarLong | |||
Player Entity ID | SignedVarLong | |||
Display Name | string | |||
NamedTag | Nbt |
Update Equip
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x51 | Client | Window ID | byte | |
Window Type | byte | |||
Unknown | byte | |||
Entity ID | SignedVarLong | |||
NamedTag | Nbt |
Resource Pack Data Info
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x52 | Client | Package ID | string | |
Max Chunk Size | uint | |||
Chunk Count | uint | |||
Compressed Package Size | ulong | |||
Hash | ByteArray | |||
Is Premium | bool | |||
Pack Type | byte |
Resource Pack Chunk Data
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x53 | Client | Package ID | string | |
Chunk Index | uint | |||
Progress | ulong | |||
Payload | ByteArray |
Resource Pack Chunk Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x54 | Server | Package ID | string | |
Chunk Index | uint |
Transfer
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x55 | Client | Address | string | |
Port | ushort |
Play Sound
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x56 | Client | Sound name | string | |
Sound position | Position | |||
Volume | float | |||
Pitch | float |
Stop Sound
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x57 | Client | Sound Name | string | |
Stopping All Sound | bool |
Set Title
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x58 | Client | Type | SignedVarInt | |
Text | string | |||
Fade In Time | SignedVarInt | |||
Stay Time | SignedVarInt | |||
Fade Out Time | SignedVarInt |
Add Behavior Tree
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x59 | Client | Behavior Tree Json | string |
Structure Block Update
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x5A | Client |
Show Store Offer
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x5B | Client | Offer Id | string | |
Shown To All | bool |
Purchase Receipt
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x5C | Server |
Player Skin
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x5D | Server & Client | UUID | UUID | |
Skin | Skin | |||
Skin Name | string | |||
Old Skin Name | string |
Sub Client Login
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x5E | Client |
Automation Client Connect
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x5F | Client | Address | string |
Set Last Hurt By
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x60 | Client | Entity Type Id | VarInt |
Book Edit
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x61 | Client |
Npc Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x62 | Server & Client | Runtime Entity ID | UnsignedVarLong | |
Unknown0 | byte | |||
Unknown1 | string | |||
Unknown2 | byte |
Photo Transfer
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x63 | Server | File name | string | |
Image data | string | |||
Unknown2 | string |
Model Form Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x64 | Client | Form Id | UnsignedVarInt | |
Form Data | string |
Model Form Response
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x65 | Server | Form Id | UnsignedVarInt | |
Form Data | string |
Server Settings Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x66 | Server |
Server Settings Response
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x67 | Client | Form Id | UnsignedVarLong | |
Form Data | string |
Show Profile
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x68 | Client | Xuid | string |
Set Default Game Type
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x69 | Client | Game mode | VarInt |
Remove Objective
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x6A | Client | Objective Id | string |
Set Display Objective
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x6B | Client | Display Slot | string | |
Objective Id | string | |||
Display Name | string | |||
Criteria | string | |||
Sort Order | SignedVarInt |
Set Score
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x6C | Client | Entries | ScoreEntries |
Lab Table
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x6D | Server & Client | Unknown Byte 0 | byte | |
Block Entity Position X | VarInt | |||
Block Entity Position Y | VarInt | |||
Block Entity Position Z | VarInt | |||
Reaction Type | byte |
Update Block Synced
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x6E | Client | Coordinates | BlockCoordinates | |
Block Runtime ID | UnsignedVarInt | |||
Block Priority | UnsignedVarInt | |||
Data Layer ID | UnsignedVarInt | |||
Unknown0 | UnsignedVarLong | |||
Unknown1 | UnsignedVarLong |
Move Entity Delta
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x6F | Client | Runtime Entity ID | UnsignedVarLong | |
Flags | ushort |
Set Scoreboard Identity
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x70 | Client | Entries | ScoreboardIdentityEntries |
Set Local Player As Initialized
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x71 | Server | Runtime Entity Id | UnsignedVarLong |
Update Soft Enum
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x72 | Client |
Network Stack Latency
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x73 | Server & Client | Timestamp | ulong | |
Send Back | byte |
Script Custom Event
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x75 | Server & Client | Event Name | string | |
Data | string |
Spawn Particle Effect
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x76 | Client | Dimension Id | byte | |
Unique Entity Id | SignedVarLong | |||
Position X | Vector3 | |||
Position Y | string | |||
Position Z | float | |||
Identifier | String |
Available Entity Identifiers
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x77 | Client | NamedTag | Nbt |
Level Sound Event (2)
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x78 | Server & Client | Sound ID | byte | |
Position | Vector3 | |||
Block Id | SignedVarInt | |||
Entity Type | string | |||
Is baby mob | bool | |||
Is global | bool |
Network Chunk Publisher Update
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x79 | Client | Position X | BlockCoordinates | |
Position Y | UnsignedVarInt | |||
Position Z | int | |||
Radius | uint |
Biome Definition List
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x7A | Client | NamedTag | Nbt |
Level Sound Event (3)
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x7B | Server & Client | Sound ID | UnsignedVarInt | |
Position | Vector3 | |||
Block Id | SignedVarInt | |||
Entity Type | string | |||
Is baby mob | bool | |||
Is global | bool |
Level Event Generic
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x7C | Client |
Lectern Update
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x7D | Client | Page | byte | |
Total Pages | byte | |||
Block Position | Position | |||
Dropping Book | boolean |
Video Stream Connect
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x7E | Client | Server URI | string | |
Frame Send Frequency | float | |||
Action | byte | |||
Resolution X | int | |||
Resolution Y | int |
Client Cache Status
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x81 | Server & Client | Supported | bool |
On Screen Texture Animation
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x82 | Client |
Map Create Locked Copy
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x83 | Client | Original Map Id | long | |
New Map Id | long |
Structure Template Data Export Request
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x84 | Client |
Structure Template Data Export Response
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x85 | Client |
Update Block Properties
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x86 | Client | Unknown | byte | |
NamedTag | Nbt |
Client Cache Blob Status
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x87 | Client |
Client Cache Miss Response
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x88 | Client |
Network Settings
Packet ID | Bound To | Field Name | Field Type | Notes |
---|---|---|---|---|
0x8F | Client | Unknown | byte | |
Compression threshold | short |