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