Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(→‎Data types: Merged. Hopefully the position stuff was correct.)
(Updated to 1.21-pre2)
 
(344 intermediate revisions by 35 users not shown)
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.13.2, protocol 404]]) to the current pre-release (currently [[Protocol version numbers|1.14.4, protocol 498]]). 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 ===
  
Merged
+
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
 +
{{PacketList|0x7A|Clientbound Report Details (play)|rel=added}}
 +
{{PacketList|0x7B|Clientbound Server Links (play)|rel=added}}
 +
|-
 +
|}
  
== New/modified data types ==
+
== Handshake ==
  
 
No changes so far.
 
No changes so far.
  
== Entity Metadata ==
+
== Status ==
  
{{Warning2|Entity metadata shifted in 19w08a; not all entities are copied here. All subclasses of entity had shift of 1; all subclasses of living had a second shift (2 total).  All entities listed in the article have been updated, but there are ones not listed here. }}
+
No changes so far.
  
=== Entity Metadata Format ===
+
== Login ==
  
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.
+
No changes so far.
  
Entity Metadata is an array of entries, each of which looks like the following:
+
== Configuration ==
  
{| class="wikitable"
+
=== Clientbound ===
! Name
+
 
! Type
+
==== Clientbound Report Details (configuration) ====
! Meaning
+
 
|-
+
Contains a list of key-value text entries that are included in any crash or disconnection report generated during connection to the server.
| Index
 
| Unsigned Byte
 
| 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.
 
|-
 
| Type
 
| Optional VarInt Enum
 
| Only if Index is not <code>0xff</code>; the type of the index, see the table below
 
|-
 
| Value
 
| Optional ''value of Type''
 
| Only if Index is not <code>0xff</code>: the value of the metadata field
 
|}
 
  
{| class="wikitable"
+
{| class="wikitable" {{added}}
  ! Value of Type field
+
  ! Packet ID
  ! [[Data types|Type]] of Value field
+
! State
 +
! Bound To
 +
! colspan="2"| Field Name
 +
  ! colspan="2"| Field Type
 
  ! Notes
 
  ! Notes
 
  |-
 
  |-
  | 0
+
  | rowspan="3"| 0x0F
| Byte
+
  | rowspan="3"| Configuration
  |
+
  | rowspan="3"| Client
|-
+
  | colspan="2"| Details Count
  | 1
+
  | colspan="2"| {{Type|VarInt}} (32)
| VarInt
+
  | The number of details in the following array.
  |
 
|-
 
  | 2
 
| Float
 
  |
 
 
  |-
 
  |-
  | 3
+
  | rowspan="2"| Details
  | String
+
| Title
 +
| rowspan="2"| {{Type|Array}}
 +
  | {{Type|String}} (128)
 
  |
 
  |
 
  |-
 
  |-
  | 4
+
  | Description
  | [[Chat]]
+
  | {{Type|String}} (4096)
 
  |
 
  |
|-
+
|}
| 5
 
| OptChat (Boolean + Optional [[Chat]])
 
| [[Chat]] is present if the Boolean is set to true
 
|-
 
| 6
 
| [[Slot]]
 
|
 
|-
 
| 7
 
| Boolean
 
|
 
|-
 
| 8
 
| Rotation
 
| 3 floats: rotation on x, rotation on y, rotation on z
 
|-
 
| 9
 
| [[Data Types#Position|Position]]
 
|
 
|-
 
| 10
 
| OptPosition (Boolean + Optional Position)
 
| Position is present if the Boolean is set to true
 
|-
 
| 11
 
| Direction (VarInt)
 
| (Down = 0, Up = 1, North = 2, South = 3, West = 4, East = 5)
 
|-
 
| 12
 
| OptUUID (Boolean + Optional UUID)
 
| UUID is present if the Boolean is set to true
 
|-
 
| 13
 
| OptBlockID (VarInt)
 
| 0 for absent otherwise, <code><nowiki>id &lt;&lt; 4 | data</nowiki></code>
 
|-
 
| 14
 
| [[NBT]]
 
|
 
|-
 
| 15
 
| [[Data Types#Particle|Particle]]
 
|
 
|- {{Added}}
 
| 16
 
| Villager Data
 
| 3 VarInts: villager type, villager profession, level
 
|- {{Added}}
 
| 17
 
| OptVarInt
 
| 0 for absent; 1 + actual value otherwise.  Used for entity IDs.
 
|- {{Added}}
 
| 18
 
| Pose
 
| A VarInt enum: 0: STANDING, 1: FALL_FLYING, 2: SLEEPING, 3: SWIMMING, 4: SPIN_ATTACK, 5: SNEAKING, 6: DYING
 
|}
 
  
Villager type (<code>minecraft:villager_type</code> registry):
+
==== Clientbound Server Links (configuration) ====
  
{| class="wikitable"
+
This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).
! Name !! ID
 
|-
 
| <code>minecraft:desert</code> || 0
 
|-
 
| <code>minecraft:jungle</code> || 1
 
|-
 
| <code>minecraft:plains</code> || 2
 
|-
 
| <code>minecraft:savanna</code> || 3
 
|-
 
| <code>minecraft:snow</code> || 4
 
|-
 
| <code>minecraft:swamp</code> || 5
 
|-
 
| <code>minecraft:taiga</code> || 6
 
|}
 
  
Villager professions (<code>minecraft:villager_profession</code> registry):
+
{| class="wikitable" {{added}}
 
+
  ! Packet ID
{| class="wikitable"
+
  ! State
  ! Name !! ID
+
  ! Bound To
  |-
+
  ! colspan="2"| Field Name
  | <code>minecraft:none</code> || 0
+
  ! colspan="2"| Field Type
  |-
+
  ! Notes
  | <code>minecraft:armorer</code> || 1
 
|-
 
| <code>minecraft:butcher</code> || 2
 
|-
 
  | <code>minecraft:cartographer</code> || 3
 
 
  |-
 
  |-
  | <code>minecraft:cleric</code> || 4
+
  | 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.
 
  |-
 
  |-
  | <code>minecraft:farmer</code> || 5
+
  | rowspan="3"| Links
 +
| Is built-in
 +
| rowspan="3"| {{Type|Array}}
 +
| {{Type|Boolean}}
 +
| Determines if the following label is built-in (from enum) or custom (text component).
 
  |-
 
  |-
  | <code>minecraft:fisherman</code> || 6
+
  | Label
 +
| {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
 +
| See below.
 
  |-
 
  |-
  | <code>minecraft:fletcher</code> || 7
+
  | URL
|-
+
  | {{Type|String}}
| <code>minecraft:leatherworker</code> || 8
+
  | Valid URL.
|-
+
|}
| <code>minecraft:librarian</code> || 9
 
|-
 
| <code>minecraft:mason</code> || 10
 
|-
 
| <code>minecraft:nitwit</code> || 11
 
|-
 
| <code>minecraft:shepherd</code> || 12
 
  |-
 
| <code>minecraft:toolsmith</code> || 13
 
  |-
 
| <code>minecraft:weaponsmith</code> || 14
 
|}
 
  
=== Mobs ===
 
  
Entity IDs have shifted with the addition of some new mobs.
+
{| class="wikitable" {{added}}
 
+
  ! ID
=== Entity ===
+
  ! Name
 
+
  ! Notes
The base class.
 
 
 
{| class="wikitable"
 
  ! Index
 
! Type
 
  !style="width: 250px;" colspan="2"| Meaning
 
  ! Default
 
 
  |-
 
  |-
  |rowspan="9"| 0
+
  | 0
  |rowspan="9"| Byte
+
  | Bug Report
! Bit mask
+
  | Displayed on connection error screen; included as a comment in the disconnection report.
  ! Meaning
 
|rowspan="9"| 0
 
|-
 
| 0x01
 
| On Fire
 
|-
 
| 0x02
 
| Crouched
 
|-
 
| 0x04
 
| Unused (previously riding)
 
|-
 
| 0x08
 
| Sprinting
 
|-
 
| 0x10
 
| Swimming
 
|-
 
| 0x20
 
| Invisible
 
|-
 
| 0x40
 
| Glowing effect
 
|-
 
| 0x80
 
| Flying with {{Minecraft Wiki|elytra}}
 
 
  |-
 
  |-
 
  | 1
 
  | 1
  | VarInt
+
  | Community Guidelines
  |colspan="2"| Air
+
  |  
| 300
 
 
  |-
 
  |-
 
  | 2
 
  | 2
  | OptChat
+
  | Support
  |colspan="2"| Custom name
+
  |  
| empty
 
 
  |-
 
  |-
 
  | 3
 
  | 3
  | Boolean
+
  | Status
  |colspan="2"| Is custom name visible
+
  |  
| false
 
 
  |-
 
  |-
 
  | 4
 
  | 4
  | Boolean
+
  | Feedback
  |colspan="2"| Is silent
+
  |  
| false
 
 
  |-
 
  |-
 
  | 5
 
  | 5
  | Boolean
+
  | Community
  |colspan="2"| No gravity
+
  |  
| false
+
  |-
  |- {{Added}}
 
 
  | 6
 
  | 6
  | Pose
+
  | Website
  |colspan="2"| Pose
+
  |  
| STANDING
 
|}
 
 
 
=== Itemed Throwable ===
 
 
 
Extends [[#Throwable|Throwable]].
 
 
 
Used for all things that previously extended throwable other than potions, which already had an item.
 
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
 
  | 7
 
  | 7
  | Slot
+
  | Forums
  |colspan="2"| Item
+
  |  
| empty (which behaves as if it were a specific item, depending on the subclass)
 
|}
 
 
 
=== Egg ===
 
 
 
Extends [[#Itemed_Throwable|Itemed Throwable]].
 
 
 
No additional metadata.
 
 
 
An empty item behaves as if the item were a <code>minecraft:egg</code>.
 
 
 
=== Ender Pearl ===
 
 
 
Extends [[#Itemed_Throwable|Itemed Throwable]].
 
 
 
No additional metadata.
 
 
 
An empty item behaves as if the item were a <code>minecraft:ender_pearl</code>.
 
 
 
=== Experience Bottle ===
 
 
 
Extends [[#Itemed_Throwable|Itemed Throwable]].
 
 
 
No additional metadata.
 
 
 
<code>minecraft:experience_bottle</code>
 
 
 
=== Snowball ===
 
 
 
Extends [[#Itemed_Throwable|Itemed Throwable]].
 
 
 
No additional metadata.
 
 
 
<code>minecraft:snowball</code>
 
 
 
=== Eye of Ender ===
 
 
 
Extends [[#Entity|Entity]].
 
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
  | 7
+
  | 8
  | Slot
+
  | News
  |colspan="2"| Item
+
  |  
| empty (which behaves as if it were a <code>minecraft:ender_eye</code>)
 
|}
 
 
 
=== Arrow ===
 
 
 
Extends [[#Entity|Entity]].
 
 
 
Abstract base class for [[#TippedArrow|TippedArrow]] (which is used for regular arrows as well as tipped ones) and Spectral Arrow.
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| rowspan="3" | {{change|6|7}}
 
| rowspan="3" | Byte
 
! Bit mask
 
! Meaning
 
| rowspan="3" | 0
 
|-
 
| 0x01
 
| Is critical
 
|-
 
| 0x02
 
| Is noclip (used by loyalty tridents when returning)
 
 
  |-
 
  |-
| {{change|7|8}}
 
| OptUUID
 
|colspan="2"| Shooter UUID
 
| Empty
 
|- {{added}}
 
 
  | 9
 
  | 9
  | Byte
+
  | Announcements
  |colspan="2"| Piercing level
+
  |  
| 0
 
|}
 
 
 
=== TippedArrow ===
 
 
 
Extends [[#Arrow|Arrow]].
 
 
 
Used for both tipped and regular arrows.  If not tipped, then color is set to -1 and no tipped arrow particles are used.
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
| {{change|8|10}}
 
| VarInt
 
|colspan="2"| Color (-1 for no particles)
 
| -1
 
 
  |}
 
  |}
  
=== Trident ===
+
=== Serverbound ===
  
Extends [[#Arrow|Arrow]].
+
No changes so far.
  
{| class="wikitable"
+
== Play ==
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| {{change|8|10}}
 
| VarInt
 
|colspan="2"| Loyalty level (enchantment)
 
| 0
 
|}
 
  
=== Itemed Fireball ===
+
=== Clientbound ===
  
Extends [[#Entity|Entity]].
+
==== Clientbound Report Details (play) ====
  
Used for regular and small fireballs.  Not used for dragon fireballs and wither skulls.  Interestingly, regular fireballs do not come from an item.
+
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" {{added}}
 
{| class="wikitable" {{added}}
  ! Index
+
  ! Packet ID
  ! Type
+
  ! State
  !style="width: 250px;" colspan="2"| Meaning
+
! Bound To
  ! Default
+
  ! colspan="2"| Field Name
 +
! colspan="2"| Field Type
 +
  ! Notes
 
  |-
 
  |-
  | 7
+
  | rowspan="3"| 0x7A
| Slot
+
  | rowspan="3"| Configuration
  |colspan="2"| Item
+
  | rowspan="3"| Client
  | empty (which behaves as if it were a <code>minecraft:fire_charge</code>)
+
  | colspan="2"| Details Count
|}
+
  | colspan="2"| {{Type|VarInt}} (32)
 
+
  | The number of details in the following array.
=== Fireball ===
 
 
 
Extends {{change|[[#Abstract Fireball|Abstract Fireball]]|[[#Itemed Fireball|Itemed Fireball]]}}.  This is the large fireball shot by ghasts.
 
 
 
No additional metadata.
 
 
 
=== Small Fireball ===
 
 
 
Extends {{change|[[#Abstract Fireball|Abstract Fireball]]|[[#Itemed Fireball|Itemed Fireball]]}}. This is the fireball shot by blazes and dispensers with fire charges.
 
 
 
No additional metadata.
 
 
 
=== Fireworks ===
 
 
 
Extends [[#Entity|Entity]].
 
 
 
{| class="wikitable"
 
  ! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
  ! Default
 
 
  |-
 
  |-
  | {{change|6|7}}
+
  | rowspan="2"| Details
  | [[Slot]]
+
  | Title
  |colspan="2"| Firework info
+
  | rowspan="2"| {{Type|Array}}
  | empty
+
| {{Type|String}} (128)
 +
  |
 
  |-
 
  |-
  | {{change|7|8}}
+
  | Description
  | {{Change|VarInt|OptVarInt}}
+
  | {{Type|String}} (4096)
|colspan="2"| Entity ID of entity which used firework (for elytra boosting)
+
  |
| 0
+
|}
|- {{Added}}
 
| 9
 
| Boolean
 
|colspan="2"| Shot at angle (from a crossbow)
 
  | false
 
|}
 
  
=== Living ===
+
==== Clientbound Server Links (play) ====
  
Extends [[#Entity|Entity]].
+
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}}
  ! Index
+
  ! Packet ID
  ! Type
+
  ! State
  !style="width: 250px;" colspan="2"| Meaning
+
! Bound To
  ! Default
+
  ! colspan="2"| Field Name
|-
+
  ! colspan="2"| Field Type
|rowspan="5"| {{change|6|7}}
+
  ! Notes
|rowspan="5"| Byte
 
|colspan="2"| Hand states, used to trigger blocking/eating/drinking animation.
 
|rowspan="5"| 0
 
|-
 
  ! Bit mask
 
! Meaning
 
|-
 
| 0x01
 
| Is hand active
 
|-
 
| 0x02
 
| Active hand (0 = main hand, 1 = offhand)
 
 
  |-
 
  |-
  | 0x04
+
  | rowspan="4"| 0x7B
  | In riptide spin attack
+
| rowspan="4"| Configuration
 +
| rowspan="4"| Client
 +
| colspan="2"| Links Count
 +
| colspan="2"| {{Type|VarInt}}
 +
  | The number of links in the following array.
 
  |-
 
  |-
  | {{change|7|8}}
+
  | rowspan="3"| Links
  | Float
+
  | Is built-in
  |colspan="2"| Health
+
  | rowspan="3"| {{Type|Array}}
| 1.0
+
  | {{Type|Boolean}}
|-
+
  | Determines if the following label is built-in (from enum) or custom (text component).
  | {{change|8|9}}
 
  | VarInt
 
|colspan="2"| Potion effect color (or 0 if there is no effect)
 
| 0
 
 
  |-
 
  |-
  | {{change|9|10}}
+
| Label
| Boolean
+
  | {{Type|VarInt}} {{Type|Enum}} / {{Type|Text Component}}
|colspan="2"| Is potion effect ambient: reduces the number of particles generated by potions to 1/5 the normal amount
+
  | See below.
  | false
 
 
  |-
 
  |-
  | {{change|10|11}}
+
  | URL
| VarInt
+
  | {{Type|String}}
  |colspan="2"| Number of arrows in entity
+
  | Valid URL.
| 0
+
|}
|- {{Added}}
 
  | 12
 
| OptBlockPos
 
|colspan="2"| Unknown (Bed location?)
 
| Absent
 
|}
 
 
 
=== Panda ===
 
 
 
Extends [[#Animal|Animal]].
 
  
 
{| class="wikitable" {{added}}
 
{| class="wikitable" {{added}}
  ! Index
+
  ! ID
  ! Type
+
  ! Name
  !style="width: 250px;" colspan="2"| Meaning
+
  ! Notes
! Default
 
 
  |-
 
  |-
| 15
 
| Integer
 
|colspan="2"| Breed timer?  Set to 32 when something happens, and then counts down to 0 again.  At 29 and 14 (before counting down), will play the <code>entity.panda.cant_breed</code> sound event.
 
 
  | 0
 
  | 0
 +
| Bug Report
 +
| Displayed on connection error screen; included as a comment in the disconnection report.
 
  |-
 
  |-
  | 16
+
  | 1
| Integer
+
  | Community Guidelines
  |colspan="2"| Sneeze timer.  Counts up from 0; when it hits 1 the <code>entity.panda.pre_sneeze</code> event plays and when it hits 21 the <code>entity.panda.sneeze</code> event plays (and it is set back to 0 and the sneeze flag is cleared).
+
  |  
  | 0
 
 
  |-
 
  |-
  | 17
+
  | 2
| Integer
+
  | Support
  |colspan="2"| Eat timer.  If nonzero, counts upwards.
+
  |  
  | 0
 
 
  |-
 
  |-
  | 18
+
  | 3
| Byte
+
  | Status
|colspan="2"| Main Gene
+
  |  
| 0
 
|-
 
| 19
 
| Byte
 
|colspan="2"| Hidden Gene
 
| 0
 
|-
 
|rowspan="6"| 20
 
|rowspan="6"| Byte
 
! Bit mask
 
! Meaning
 
|rowspan="6"| 0
 
|-
 
| 0x01
 
| Unused
 
|-
 
| 0x02
 
| Is sneezing
 
|-
 
| 0x04
 
| Is eating
 
|-
 
| 0x08
 
| Unknown
 
|-
 
| 0x10
 
| Unknown
 
|}
 
 
 
=== Fox ===
 
 
 
Extends [[#Animal|Animal]].
 
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 15
 
| VarInt
 
| colspan="2" | Type (0: red, 1: snow)
 
| 0 (red)
 
|-
 
| rowspan="9" | 16
 
| rowspan="9" | Byte
 
! Bit mask
 
! Meaning
 
| rowspan="9" | 0
 
|-
 
| 0x01 || Sitting
 
|-
 
| 0x02 || ''Unused''
 
|-
 
| 0x04 || Crouching
 
|-
 
| 0x08 || Unknown
 
|-
 
| 0x10 || Unknown
 
|-
 
| 0x20 || Sleeping
 
|-
 
| 0x40 || Unknown
 
|-
 
| 0x80 || Unknown
 
|-
 
| 17
 
| OptUUID
 
| colspan="2" | First UUID (in <code>UUIDs</code> NBT)?
 
| Absent
 
|-
 
| 18
 
| OptUUID
 
| colspan="2" | Second UUID (in <code>UUIDs</code> NBT)?
 
| Absent
 
|}
 
 
 
=== Mooshroom ===
 
 
 
Extends [[#Cow|Cow]].
 
 
 
{{change|No additional metadata.}}
 
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 15
 
| String
 
| colspan="2"| Variant ("red" or "brown")
 
| red
 
|}
 
 
 
=== Raid Participent ===
 
 
 
{{change||Extends [[#Monster|Monster]].}}
 
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 14
 
| boolean
 
| colspan="2"| Is celebrating
 
| false
 
|}
 
 
 
"Is celebrating" appears to control the pose for vindicators and does not appear to be used by other types.
 
 
 
=== Abstract Illager ===
 
 
 
Extends {{change|[[#Monster|Monster]]|[[#Raid Participent|Raid Participent]]}}.
 
 
 
{| class="wikitable" {{removed}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
|rowspan="2"| 12
 
|rowspan="2"| Byte
 
! Bit mask
 
! Meaning
 
|rowspan="2"| 0
 
|-
 
| 0x01
 
| Has target (aggressive state)
 
|}
 
 
 
{{Change||Replaced with pose (presumably?)}}
 
 
 
=== Spellcaster Illager ===
 
 
 
Extends [[#Abstract Illager|Abstract Illlager]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| {{change|13|15}}
 
| Byte
 
| colspan="2"| Spell (0: none, 1: summon vex, 2: attack, 3: wololo, 4: disappear, 5: blindness)
 
| 0
 
|}
 
 
 
=== {{change|EvocationIllager|Evoker}} ===
 
 
 
Extends [[#Spellcaster Illager|Spellcaster Illager]].
 
 
 
=== {{change|IllusionIllager|Illusioner}} ===
 
 
 
Extends [[#Spellcaster Illager|Spellcaster Illager]].
 
 
 
=== Pillager ===
 
 
 
Extends [[#Abstract Illager|Abstract Illlager]].
 
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 15
 
| Boolean
 
| colspan="2"| Using crossbow
 
  | false
 
|}
 
 
 
=== {{change|VindicationIllager|Vindicator}} ===
 
 
 
Extends [[#Abstract Illager|Abstract Illager]].
 
 
 
=== Ravager ===
 
 
 
Extends [[#Raid Participent|Raid Participent]]
 
 
 
No additional metadata.
 
 
 
{| class="wikitable" {{added}}
 
! Status
 
  !colspan="2"| Description
 
 
  |-
 
  |-
 
  | 4
 
  | 4
  |colspan="2"| Starts the attack animation.
+
  | Feedback
 +
|  
 
  |-
 
  |-
  | 39
+
  | 5
  |colspan="2"| Starts the stun animation.
+
  | Community
  |}
+
  |  
 
 
=== Witch ===
 
 
 
Extends {{change|[[#Monster|Monster]]|[[#Raid Participent|Raid Participent]]}}.
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
  | {{change|12|15}}
+
  | 6
  | Boolean
+
  | Website
|colspan="2"| Is drinking potion
+
  |  
| false
 
|}
 
 
 
=== AbstractSkeleton ===
 
 
 
Extends [[#Monster|Monster]].
 
 
 
{| class="wikitable" {{removed}}
 
  ! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
  | {{change|12|14}}
+
  | 7
| Boolean
+
  | Forums
  |colspan="2"| Is swinging arms
+
  |  
| false
 
|}
 
 
 
{{Change||Replaced with pose (presumably?)}}
 
 
 
=== Zombie ===
 
 
 
Extends [[#Monster|Monster]].
 
 
 
{| class="wikitable"
 
! Index
 
  ! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
  | {{change|12|14}}
+
  | 8
| Boolean
+
  | News
  |colspan="2"| Is baby
+
  |  
  | false
 
 
  |-
 
  |-
  | {{change|13|15}}
+
  | 9
| VarInt
+
  | Announcements
|colspan="2"| Unused (previously type)
+
  |  
| 0
 
|- {{removed}}
 
| 14
 
| Boolean
 
|colspan="2"| Are hands held up
 
| false
 
|-
 
| {{change|15|16}}
 
| Boolean
 
|colspan="2"| Is becoming a drowned
 
| false
 
  |}
 
 
 
{{Change||Replaced with pose (presumably?)}}
 
 
 
=== Zombie Villager ===
 
 
 
Extends [[#Zombie|Zombie]].
 
 
 
{| class="wikitable"
 
! Index
 
! Type
 
  !style="width: 250px;" colspan="2"| Meaning
 
! Default
 
 
  |-
 
  |-
| {{change|16|17}}
 
| Boolean
 
|colspan="2"| Is converting
 
| false
 
|-
 
| {{change|17|18}}
 
| {{Change|VarInt|Villager Data}}
 
|colspan="2"| {{Change|Profession|Villager Data}}
 
| {{change|0|Plains/None/1}}
 
 
  |}
 
  |}
 
 
=== Ocelot ===
 
 
Extends {{change|[[#TameableAnimal|TameableAnimal]]|[[#Ageable|Ageable]]}}.
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|- {{removed}}
 
| 15
 
| VarInt
 
|colspan="2"| Type (0 = untamed, 1 = tuxedo, 2 = tabby, 3 = siamese).  Used to render regardless as to whether it is tamed or not.
 
| 0
 
|- {{added}}
 
| 15
 
| Boolean
 
|colspan="2"| Is trusting
 
| false
 
|}
 
 
{| class="wikitable" {{added}}
 
! Status
 
!colspan="2"| Description
 
|-
 
| 40
 
|colspan="2"| Spawn smoke particles (trust gaining failed)
 
|-
 
| 41
 
|colspan="2"| Spawn heart particles (trust gaining succeeded)
 
|}
 
 
=== Cat ===
 
 
Extends [[#TameableAnimal|TameableAnimal]].
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 17
 
| VarInt
 
|colspan="2"| Type (0 = tabby, 1 = black, 2 = red, 3 = siamese, 4 = british_shorthair, 5 = calico, 6 = persian, 7 = ragdoll, 8 = white, 9 = all_black)
 
| 1
 
|-
 
| 18
 
| Boolean
 
|colspan="2"| Unknown
 
| false
 
|-
 
| 19
 
| Boolean
 
|colspan="2"| Unknown
 
| false
 
|-
 
| 20
 
| VarInt
 
|colspan="2"| Collar color (values are those {{Minecraft Wiki|Data_values#Dyes|used with dyes}})
 
| 14 (Red)
 
|}
 
 
=== Horse ===
 
 
Extends [[#AbstractHorse|AbstractHorse]].
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| {{change|15|17}}
 
| VarInt
 
|colspan="2"| Variant (Color & Style)
 
| 0
 
|- {{removed}}
 
| 16
 
| VarInt
 
|colspan="2"| Armor (0: none, 1: iron, 2: gold, 3: diamond)
 
| 0 (none)
 
|- {{removed}}
 
| 17
 
| [[Slot]]
 
|colspan="2"| Armor Item (Forge only)
 
| Empty
 
|}
 
 
{{change||Replaced with [[#Entity Equipment|Entity Equipment]] packet. (Uses chestplate slot)}}
 
 
=== Trader Llama ===
 
 
Extends [[#Llama|Llama]].
 
 
No additional metadata.
 
 
=== Abstract Merchant ===
 
 
Extends [[#Ageable|Ageable]].
 
 
{| class="wikitable" {{added}}
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| 15
 
| VarInt
 
|colspan="2"| Head shake timer (starts at 40, decrements each tick)
 
| 0
 
|}
 
 
=== Villager ===
 
 
Extends {{change|[[#Ageable|Ageable]]|[[#Abstract Merchant|Abstract Merchant]]}}.
 
 
{| class="wikitable"
 
! Index
 
! Type
 
!style="width: 250px;" colspan="2"| Meaning
 
! Default
 
|-
 
| {{change|13|16}}
 
| {{change|VarInt|Villager Data}}
 
|colspan="2"| {{Change|Profession (Farmer = 0, Librarian = 1, Priest = 2, Blacksmith = 3, Butcher = 4, Nitwit = 5)|Villager Data}}
 
| {{change|0|Plains/None/1}}
 
|}
 
 
=== Wandering Trader ===
 
 
Extends [[#Abstract Merchant|Abstract Merchant]].
 
 
No additional metadata.
 
 
== Block Actions ==
 
 
No changes so far.
 
 
== Inventories ==
 
 
Merged
 
 
== Plugin Channels ==
 
 
Merged
 
 
== Play ==
 
 
=== Clientbound ===
 
 
Merged
 
 
=== Serverbound ===
 
 
Merged
 
 
== Handshaking ==
 
 
=== Clientbound ===
 
 
There are no clientbound packets in the Handshaking state, since the protocol immediately switches to a different state after the client sends the first packet.
 
 
=== Serverbound ===
 
 
<!-- ==== Handshake ====
 
 
This causes the server to switch into the target state.
 
 
{| class="wikitable"
 
! Packet ID
 
! State
 
! Bound To
 
! Field Name
 
! Field Type
 
! Notes
 
|-
 
|rowspan="4"| 0x00
 
|rowspan="4"| Handshaking
 
|rowspan="4"| Server
 
| Protocol Version
 
| VarInt
 
| See [[protocol version numbers]] (currently {{change|498|550}})
 
|-
 
| Server Address
 
| String
 
| Hostname or IP, e.g. localhost or 127.0.0.1, that was used to connect. The Notchian server does not use this information. Note that SRV records are a complete redirect, e.g. if _minecraft._tcp.example.com points to mc.example.org, users connecting to example.com will provide mc.example.org as server address in addition to connecting to it.
 
|-
 
| 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 ===
  
 
No changes so far.
 
No changes so far.
 
  
 
[[Category:Minecraft Modern]]
 
[[Category:Minecraft Modern]]

Latest revision as of 10:40, 8 June 2024

This page documents the changes from the last stable Minecraft release (currently 1.20.6, protocol 766) to the current pre-release (currently 1.21-pre2, protocol Snapshot 200). Note that this page contains bleeding-edge information that may not be completely or correctly documented.

One who wishes to commandeer the merging of this into Protocol when an update is made must be sure to respect any changes that may have occurred to the respective packets there.

Contents

Data types

No changes documented so far.

Packets

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

Handshake

No changes so far.

Status

No changes so far.

Login

No changes so far.

Configuration

Clientbound

Clientbound Report Details (configuration)

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

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

Clientbound Server Links (configuration)

This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).

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


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

Serverbound

No changes so far.

Play

Clientbound

Clientbound Report Details (play)

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

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

Clientbound Server Links (play)

This packet contains a list of links that the Notchian client will display in the menu available from the pause menu. Link labels can be built-in or custom (i.e., any text).

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

Serverbound

No changes so far.