Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(23w41a)
(23w42a)
Line 1: Line 1:
This page documents the changes from the [[Protocol|last stable Minecraft release]] (currently [[Protocol version numbers|1.20.2, protocol 764]]) to the current pre-release (currently [[Protocol version numbers|23w41a, protocol {{Snapshot PVN|1073741980}}]]). 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.2, protocol 764]]) to the current pre-release (currently [[Protocol version numbers|23w42a, protocol {{Snapshot PVN|1073741981}}]]). 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 17: Line 17:
 
==== Chat ====
 
==== Chat ====
  
The [[Chat]] type is now serialized as a [[NBT#Specification|NBT Tag]] instead of a JSON String.
+
The [[Chat]] type is now serialized as a [[NBT#Specification|NBT Tag]] instead of a JSON String, unless explicitly stated otherwise.
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 39: Line 39:
 
  |}
 
  |}
  
This affects all packets and data types containing Chat fields:
+
This affects the following packets and data types containing Chat fields:
* [[Protocol#Disconnect (login)|Disconnect (login)]]
 
 
* [[Protocol#Disconnect (configuration)|Disconnect (configuration)]]
 
* [[Protocol#Disconnect (configuration)|Disconnect (configuration)]]
 
* [[Protocol#Resource Pack (configuration)|Resource Pack (configuration)]]
 
* [[Protocol#Resource Pack (configuration)|Resource Pack (configuration)]]
Line 66: Line 65:
 
* [[Entity_metadata#Entity_Metadata_Format|Chat entity metadata type]]
 
* [[Entity_metadata#Entity_Metadata_Format|Chat entity metadata type]]
 
* [[Entity_metadata#Entity_Metadata_Format|OptChat entity metadata type]]
 
* [[Entity_metadata#Entity_Metadata_Format|OptChat entity metadata type]]
 +
<br>
 +
This '''does not''' affect the following packets and data types containing Chat fields:
 +
* [[Protocol#Disconnect (login)|Disconnect (login)]]
  
 
=== Packets ===
 
=== Packets ===
Line 74: Line 76:
 
  !colspan="2"| Documentation
 
  !colspan="2"| Documentation
 
  |-
 
  |-
!colspan="4"| Play clientbound
+
!colspan="4"| Configuration clientbound
{{PacketList|0x20|Game Event}}
+
{{PacketList|0x07|Feature Flags}}
|}
+
|-
 +
!colspan="4"| Play clientbound
 +
{{PacketList|0x20|Game Event}}
 +
|-
 +
!colspan="4"| Play serverbound
 +
{{PacketList|0x0F|Change Container Slot State|rel=added}}
 +
{{PacketList|{{change|0x0F|0x10}}|Serverbound Plugin Message (play)|pre=unchanged}}
 +
{{PacketList|{{change|0x10|0x11}}|Edit Book|pre=unchanged}}
 +
{{PacketList|{{change|0x11|0x12}}|Query Entity Tag|pre=unchanged}}
 +
{{PacketList|{{change|0x12|0x13}}|Interact|pre=unchanged}}
 +
{{PacketList|{{change|0x13|0x14}}|Jigsaw Generate|pre=unchanged}}
 +
{{PacketList|{{change|0x14|0x15}}|Serverbound Keep Alive (play)|pre=unchanged}}
 +
{{PacketList|{{change|0x15|0x16}}|Lock Difficulty|pre=unchanged}}
 +
{{PacketList|{{change|0x16|0x17}}|Set Player Position|pre=unchanged}}
 +
{{PacketList|{{change|0x17|0x18}}|Set Player Position and Rotation|pre=unchanged}}
 +
{{PacketList|{{change|0x18|0x19}}|Set Player Rotation|pre=unchanged}}
 +
{{PacketList|{{change|0x19|0x1A}}|Set Player On Ground|pre=unchanged}}
 +
{{PacketList|{{change|0x1A|0x1B}}|Move Vehicle|pre=unchanged}}
 +
{{PacketList|{{change|0x1B|0x1C}}|Paddle Boat|pre=unchanged}}
 +
{{PacketList|{{change|0x1C|0x1D}}|Pick Item|pre=unchanged}}
 +
{{PacketList|{{change|0x1D|0x1E}}|Ping Request (play)|pre=unchanged}}
 +
{{PacketList|{{change|0x1E|0x1F}}|Place Recipe|pre=unchanged}}
 +
{{PacketList|{{change|0x1F|0x20}}|Player Abilities|pre=unchanged}}
 +
{{PacketList|{{change|0x20|0x21}}|Player Action|pre=unchanged}}
 +
{{PacketList|{{change|0x21|0x22}}|Player Command|pre=unchanged}}
 +
{{PacketList|{{change|0x22|0x23}}|Player Input|pre=unchanged}}
 +
{{PacketList|{{change|0x23|0x24}}|Pong (play)|pre=unchanged}}
 +
{{PacketList|{{change|0x24|0x25}}|Change Recipe Book Settings|pre=unchanged}}
 +
{{PacketList|{{change|0x25|0x26}}|Set Seen Recipe|pre=unchanged}}
 +
{{PacketList|{{change|0x26|0x27}}|Rename Item|pre=unchanged}}
 +
{{PacketList|{{change|0x27|0x28}}|Resource Pack Response (play)|pre=unchanged}}
 +
{{PacketList|{{change|0x28|0x29}}|Seen Advancements|pre=unchanged}}
 +
{{PacketList|{{change|0x29|0x2A}}|Select Trade|pre=unchanged}}
 +
{{PacketList|{{change|0x2A|0x2B}}|Set Beacon Effect|pre=unchanged}}
 +
{{PacketList|{{change|0x2B|0x2C}}|Set Held Item|pre=unchanged}}
 +
{{PacketList|{{change|0x2C|0x2D}}|Program Command Block|pre=unchanged}}
 +
{{PacketList|{{change|0x2D|0x2E}}|Program Command Block Minecart|pre=unchanged}}
 +
{{PacketList|{{change|0x2E|0x2F}}|Set Creative Mode Slot|pre=unchanged}}
 +
{{PacketList|{{change|0x2F|0x30}}|Program Jigsaw Block|pre=unchanged}}
 +
{{PacketList|{{change|0x30|0x31}}|Program Structure Block|pre=unchanged}}
 +
{{PacketList|{{change|0x31|0x32}}|Update Sign|pre=unchanged}}
 +
{{PacketList|{{change|0x32|0x33}}|Swing Arm|pre=unchanged}}
 +
{{PacketList|{{change|0x33|0x34}}|Teleport To Entity|pre=unchanged}}
 +
{{PacketList|{{change|0x34|0x35}}|Use Item On|pre=unchanged}}
 +
{{PacketList|{{change|0x35|0x36}}|Use Item|pre=unchanged}}
 +
|}
  
 
== New/modified data types ==
 
== New/modified data types ==
Line 234: Line 281:
 
=== Clientbound ===
 
=== Clientbound ===
  
No changes so far.
+
==== Feature Flags ====
 +
 
 +
Used to enable and disable features, generally experimental ones, on the client.
 +
 
 +
{| class="wikitable"
 +
! Packet ID
 +
! State
 +
! Bound To
 +
! Field Name
 +
! Field Type
 +
! Notes
 +
|-
 +
| rowspan="2"| 0x07
 +
| rowspan="2"| Configuration
 +
| rowspan="2"| Client
 +
| Total Features
 +
| VarInt
 +
| Number of features that appear in the array below.
 +
|-
 +
| Feature Flags
 +
| Identifier Array
 +
|
 +
|}
 +
 
 +
As of {{change|1.20.2|1.20.3}}, the following feature flags are available:
 +
 
 +
* minecraft:vanilla - enables vanilla features</li>
 +
* minecraft:bundle - enables support for the bundle</li>
 +
* minecraft:trade_rebalance - enables support for the rebalanced villager trades</li>
 +
* {{change||minecraft:update_1_21 - enables support for 1.21 features}}</li>
  
 
=== Serverbound ===
 
=== Serverbound ===
Line 333: Line 409:
 
=== Serverbound ===
 
=== Serverbound ===
  
No changes so far.
+
==== Change Container Slot State ====
 +
 
 +
This packet is sent by the client when toggling the state of a Crafter.
  
 +
{| class="wikitable" {{added}}
 +
! Packet ID
 +
! State
 +
! Bound To
 +
! Field Name
 +
! Field Type
 +
! Notes
 +
|-
 +
| rowspan="3"| 0x0F
 +
| rowspan="3"| Play
 +
| rowspan="3"| Server
 +
| Slot ID
 +
| VarInt
 +
| This is the ID of the slot that was changed.
 +
|-
 +
| Window ID
 +
| VarInt
 +
| This is the ID of the window that was changed.
 +
|-
 +
| State
 +
| Boolean
 +
| The new state of the slot. True for enabled, false for disabled.
 +
|}
  
 
[[Category:Minecraft Modern]]
 
[[Category:Minecraft Modern]]

Revision as of 18:38, 19 October 2023

This page documents the changes from the last stable Minecraft release (currently 1.20.2, protocol 764) to the current pre-release (currently 23w42a, protocol Snapshot 157). 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

NBT

The NBT specification was changed so that the root tag is no longer required to be a Compound Tag when sent over the network.

Presently in the pre-release, only Compound Tag and String Tag types are used as root, but the Notchian server/client implementation is able to handle NBT Tags of any type.

Chat

The Chat type is now serialized as a NBT Tag instead of a JSON String, unless explicitly stated otherwise.

Name Size (bytes) Encodes Notes
Chat ≥ 1
≤ (262144×4) + 3
See Chat Encoded as a String with max length of 262144.
Chat Varies See Chat Encoded as a NBT Tag, with the type of tag used depending on the case:
  • As a String Tag: For components only containing text (no styling, no events etc.).
  • As a Compound Tag: Every other case.

This affects the following packets and data types containing Chat fields:



This does not affect the following packets and data types containing Chat fields:

Packets

ID Packet name Documentation
Configuration clientbound
0x07 Feature Flags Current Pre
Play clientbound
0x20 Game Event Current Pre
Play serverbound
0x0F Change Container Slot State Pre
0x0F 0x10 Serverbound Plugin Message (play) Current (unchanged)
0x10 0x11 Edit Book Current (unchanged)
0x11 0x12 Query Entity Tag Current (unchanged)
0x12 0x13 Interact Current (unchanged)
0x13 0x14 Jigsaw Generate Current (unchanged)
0x14 0x15 Serverbound Keep Alive (play) Current (unchanged)
0x15 0x16 Lock Difficulty Current (unchanged)
0x16 0x17 Set Player Position Current (unchanged)
0x17 0x18 Set Player Position and Rotation Current (unchanged)
0x18 0x19 Set Player Rotation Current (unchanged)
0x19 0x1A Set Player On Ground Current (unchanged)
0x1A 0x1B Move Vehicle Current (unchanged)
0x1B 0x1C Paddle Boat Current (unchanged)
0x1C 0x1D Pick Item Current (unchanged)
0x1D 0x1E Ping Request (play) Current (unchanged)
0x1E 0x1F Place Recipe Current (unchanged)
0x1F 0x20 Player Abilities Current (unchanged)
0x20 0x21 Player Action Current (unchanged)
0x21 0x22 Player Command Current (unchanged)
0x22 0x23 Player Input Current (unchanged)
0x23 0x24 Pong (play) Current (unchanged)
0x24 0x25 Change Recipe Book Settings Current (unchanged)
0x25 0x26 Set Seen Recipe Current (unchanged)
0x26 0x27 Rename Item Current (unchanged)
0x27 0x28 Resource Pack Response (play) Current (unchanged)
0x28 0x29 Seen Advancements Current (unchanged)
0x29 0x2A Select Trade Current (unchanged)
0x2A 0x2B Set Beacon Effect Current (unchanged)
0x2B 0x2C Set Held Item Current (unchanged)
0x2C 0x2D Program Command Block Current (unchanged)
0x2D 0x2E Program Command Block Minecart Current (unchanged)
0x2E 0x2F Set Creative Mode Slot Current (unchanged)
0x2F 0x30 Program Jigsaw Block Current (unchanged)
0x30 0x31 Program Structure Block Current (unchanged)
0x31 0x32 Update Sign Current (unchanged)
0x32 0x33 Swing Arm Current (unchanged)
0x33 0x34 Teleport To Entity Current (unchanged)
0x34 0x35 Use Item On Current (unchanged)
0x35 0x36 Use Item Current (unchanged)

New/modified data types

No changes so far.

Entity Metadata

Abstract Vehicle

Extends Entity.

Index Type Meaning Default
8 VarInt Shaking power 0
9 VarInt Shaking direction 1
10 Float Shaking multiplier 0.0

Abstract Minecart

Extends Abstract Vehicle.

Index Type Meaning Default
8 VarInt Shaking power 0
9 VarInt Shaking direction 1
10 Float Shaking multiplier 0.0
11 VarInt Custom block ID and damage 0
12 VarInt Custom block Y position (in 16ths of a block) 6
13 Boolean Show custom block false

Boat

Extends Abstract Vehicle.

Index Type Meaning Default
8 VarInt Time since last hit 0
9 VarInt Forward direction 1
10 Float Damage taken 0.0
11 VarInt Type (0=oak, 1=spruce, 2=birch, 3=jungle, 4=acacia, 5=dark oak) 0
12 Boolean Is left paddle turning false
13 Boolean Is right paddle turning false
14 VarInt Splash timer 0

Block Actions

No changes so far.

Inventories

No changes so far.

Plugin Channels

No changes so far.

Status

Clientbound

No changes so far.

Serverbound

No changes so far.

Login

Clientbound

No changes so far.

Serverbound

No changes so far.

Configuration

Clientbound

Feature Flags

Used to enable and disable features, generally experimental ones, on the client.

Packet ID State Bound To Field Name Field Type Notes
0x07 Configuration Client Total Features VarInt Number of features that appear in the array below.
Feature Flags Identifier Array

As of 1.20.2 1.20.3, the following feature flags are available:

  • minecraft:vanilla - enables vanilla features
  • minecraft:bundle - enables support for the bundle
  • minecraft:trade_rebalance - enables support for the rebalanced villager trades
  • minecraft:update_1_21 - enables support for 1.21 features

Serverbound

No changes so far.

Play

Clientbound

Game Event

Used for a wide variety of game events, from weather to bed use to game mode to demo messages.

Packet ID State Bound To Field Name Field Type Notes
0x20 Play Client Event Unsigned Byte See below.
Value Float Depends on Event.

Events:

Event Effect Value
0 No respawn block available Note: Displays message 'block.minecraft.spawn.not_valid' (You have no home bed or charged respawn anchor, or it was obstructed) to the player.
1 Begin raining
2 End raining
3 Change game mode 0: Survival, 1: Creative, 2: Adventure, 3: Spectator.
4 Win game 0: Just respawn player.
1: Roll the credits and respawn player.
Note that 1 is only sent by notchian server when player has not yet achieved advancement "The end?", else 0 is sent.
5 Demo event 0: Show welcome to demo screen.
101: Tell movement controls.
102: Tell jump control.
103: Tell inventory control.
104: Tell that the demo is over and print a message about how to take a screenshot.
6 Arrow hit player Note: Sent when any player is struck by an arrow.
7 Rain level change Note: Seems to change both sky color and lighting.
Rain level ranging from 0 to 1.
8 Thunder level change Note: Seems to change both sky color and lighting (same as Rain level change, but doesn't start rain). It also requires rain to render by notchian client.
Thunder level ranging from 0 to 1.
9 Play pufferfish sting sound
10 Play elder guardian mob appearance (effect and sound)
11 Enable respawn screen 0: Enable respawn screen.
1: Immediately respawn (sent when the doImmediateRespawn gamerule changes).
12 Limited crafting 0: Disable limited crafting.
1: Enable limited crafting (sent when the doLimitedCrafting gamerule changes).
13 Start waiting for level chunks Instructs the client to begin the waiting process for the level chunks.
Sent by the server after the level is cleared on the client and is being re-sent (either during the first, or subsequent reconfigurations).

Serverbound

Change Container Slot State

This packet is sent by the client when toggling the state of a Crafter.

Packet ID State Bound To Field Name Field Type Notes
0x0F Play Server Slot ID VarInt This is the ID of the slot that was changed.
Window ID VarInt This is the ID of the window that was changed.
State Boolean The new state of the slot. True for enabled, false for disabled.