Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(Added notice about root tags & general clean-up)
(23w41a)
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|23w40a, protocol {{Snapshot PVN|1073741978}}]]). 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|23w41a, protocol {{Snapshot PVN|1073741980}}]]). 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 84: Line 84:
 
== Entity Metadata ==
 
== Entity Metadata ==
  
No changes so far.
+
=== Abstract Vehicle ===
 +
 
 +
{{Metadata inherit|Abstract Vehicle|inherits=Entity|start_at=8}}
 +
 
 +
{| class="wikitable"
 +
! Index
 +
! Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! Default
 +
|- {{added}}
 +
| {{Metadata id|}}
 +
| VarInt
 +
|colspan="2"| Shaking power
 +
| 0
 +
|- {{added}}
 +
| {{Metadata id|}}
 +
| VarInt
 +
|colspan="2"| Shaking direction
 +
| 1
 +
|- {{added}}
 +
| {{Metadata id|}}
 +
| Float
 +
|colspan="2"| Shaking multiplier
 +
| 0.0
 +
|-
 +
|}
 +
 
 +
=== Abstract Minecart===
 +
 
 +
{{Metadata inherit|Abstract Minecart|inherits=Abstract Vehicle}}
 +
 
 +
{| class="wikitable"
 +
! Index
 +
! Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! Default
 +
|- {{removed}}
 +
| 8
 +
| VarInt
 +
|colspan="2"| Shaking power
 +
| 0
 +
|- {{removed}}
 +
| 9
 +
| VarInt
 +
|colspan="2"| Shaking direction
 +
| 1
 +
|- {{removed}}
 +
| 10
 +
| Float
 +
|colspan="2"| Shaking multiplier
 +
| 0.0
 +
|-
 +
| 11
 +
| VarInt
 +
|colspan="2"| Custom block ID and damage
 +
| 0
 +
|-
 +
| 12
 +
| VarInt
 +
|colspan="2"| Custom block Y position (in 16ths of a block)
 +
| 6
 +
|-
 +
| 13
 +
| Boolean
 +
|colspan="2"| Show custom block
 +
| false
 +
|}
 +
 
 +
=== Boat ===
  
=== Entity ===
+
{{Metadata inherit|Boat|inherits=Abstract Vehicle}}
  
No changes so far.
+
{| class="wikitable"
 +
! Index
 +
! Type
 +
!style="width: 250px;" colspan="2"| Meaning
 +
! Default
 +
|- {{removed}}
 +
| 8
 +
| VarInt
 +
|colspan="2"| Time since last hit
 +
| 0
 +
|- {{removed}}
 +
| 9
 +
| VarInt
 +
|colspan="2"| Forward direction
 +
| 1
 +
|- {{removed}}
 +
| 10
 +
| Float
 +
|colspan="2"| Damage taken
 +
| 0.0
 +
|-
 +
| 11
 +
| VarInt
 +
|colspan="2"| Type (0=oak, 1=spruce, 2=birch, 3=jungle, 4=acacia, 5=dark oak)
 +
| 0
 +
|-
 +
| 12
 +
| Boolean
 +
|colspan="2"| Is left paddle turning
 +
| false
 +
|-
 +
| 13
 +
| Boolean
 +
|colspan="2"| Is right paddle turning
 +
| false
 +
|-
 +
| 14
 +
| VarInt
 +
|colspan="2"| Splash timer
 +
| 0
 +
|}
  
 
== Block Actions ==
 
== Block Actions ==

Revision as of 18:34, 11 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 23w41a, protocol Snapshot 156). 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.

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 all packets and data types containing Chat fields:


Packets

ID Packet name Documentation
Play clientbound
0x20 Game Event Current Pre

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

No changes so far.

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

No changes so far.