Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
(→‎Clientbound: Chunk data)
(→‎Clientbound: Update Block Entity)
Line 103: Line 103:
  
 
=== Clientbound ===
 
=== Clientbound ===
 +
 +
==== Update Block Entity ====
 +
 +
Essentially a block update on a block entity.
 +
 +
{| class="wikitable"
 +
! Packet ID
 +
! State
 +
! Bound To
 +
! Field Name
 +
! Field Type
 +
! Notes
 +
|-
 +
|rowspan="3"| 0x09
 +
|rowspan="3"| Play
 +
|rowspan="3"| Client
 +
| Location
 +
| Position
 +
|
 +
|-
 +
| Action
 +
| Unsigned Byte
 +
| The type of update to perform, see below
 +
|-
 +
| NBT Data
 +
| Optional [[NBT|NBT Tag]]
 +
| If not present then it's a TAG_END (0)
 +
|}
 +
 +
''Action'' field:
 +
 +
* '''1''': Set SpawnPotentials of a mob spawner
 +
* '''2''': Set command block text (command and last execution status)
 +
* '''3''': Set the level, primary, and secondary powers of a beacon
 +
* '''4''': Set rotation and skin of mob head
 +
* '''5''': Set type of flower in flower pot
 +
* '''6''': Set base color and patterns on a banner
 +
* '''7''': Set the data for a Structure tile entity
 +
* '''8''': Set the destination for a end gateway
 +
* {{Change||'''9''': Set the text for a sign}}
  
 
==== Chunk Data ====
 
==== Chunk Data ====

Revision as of 16:43, 29 April 2016

This page documents the changes from the last stable Minecraft release (currently 1.9.2, protocol 109) to the current pre-release (currently 1.9.3-pre2, protocol 110). 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 so far.

Packets

ID Packet name Documentation
Handshaking serverbound
0x00 Handshake Current Pre
Play clientbound
0x09 Update Block Entity Current Pre
0x20 Chunk data Current Pre
0x46 Update Sign (clientbound) Current
0x47 0x46 Sound Effect Current (unchanged)
0x48 0x47 Player List Header And Footer Current (unchanged)
0x49 0x48 Collect Item Current (unchanged)
0x4A 0x49 Entity Teleport Current (unchanged)
0x4B 0x4A Entity Properties Current (unchanged)
0x4C 0x4B Entity effect Current (unchanged)

New/modified data types

None so far.

MC|StopSound plugin channel

Used to implement the /stopsound command. Stops a sound that is currently playing on the client.

Field name Field type Notes
Sound name String A sound effect name. If left empty, all sounds are stopped.
Sound category String Should be one of the sound categories used in Named Sound Effect, but if it's invalid or empty then it is (intentionally) treated as all sound categories.

Emptiness of sound category or sound name can be combined, IE a empty sound name but a set sound category will stop all sounds in the given category.

Handshaking

Clientbound

No changes so far.

Serverbound

No changes so far.

Handshake

This causes the server to switch into the target state.

Packet ID State Bound To Field Name Field Type Notes
0x00 Handshaking Server Protocol Version VarInt See protocol version numbers (currently 109 110)
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.
Server Port Unsigned Short Default is 25565. The Notchian server does not use this information.
Next State VarInt Enum 1 for status, 2 for login


Play

Clientbound

Update Block Entity

Essentially a block update on a block entity.

Packet ID State Bound To Field Name Field Type Notes
0x09 Play Client Location Position
Action Unsigned Byte The type of update to perform, see below
NBT Data Optional NBT Tag If not present then it's a TAG_END (0)

Action field:

  • 1: Set SpawnPotentials of a mob spawner
  • 2: Set command block text (command and last execution status)
  • 3: Set the level, primary, and secondary powers of a beacon
  • 4: Set rotation and skin of mob head
  • 5: Set type of flower in flower pot
  • 6: Set base color and patterns on a banner
  • 7: Set the data for a Structure tile entity
  • 8: Set the destination for a end gateway
  • 9: Set the text for a sign

Chunk Data

See also: #Unload Chunk

The server only sends skylight information for chunk pillars in the Overworld, it's up to the client to know in which dimenison the player is currently located. You can also infer this information from the primary bitmask and the amount of uncompressed bytes sent. This also sends all tile entities in the chunk.

Packet ID State Bound To Field Name Field Type Notes
0x20 Play Client Chunk X Int Block coordinate divided by 16, rounded down
Chunk Z Int Block coordinate divided by 16, rounded down
Ground-Up Continuous Boolean This is true if the packet represents all chunk sections in this vertical chunk column, where the Primary Bit Mask specifies exactly which chunk sections are included, and which are air.
Primary Bit Mask VarInt Bitmask with bits set to 1 for every 16×16×16 chunk section whose data is included in Data. The least significant bit represents the chunk section at the bottom of the chunk column (from y=0 to y=15).
Size VarInt Size of Data in bytes, plus size of Biomes in bytes if present
Data Array of Chunk Section The length of the array is equal to the number of bits set in Primary Bit Mask. Chunks are sent bottom-to-top, i.e. the first chunk, if sent, extends from Y=0 to Y=15.
Biomes Optional Byte Array Only if Ground-Up Continuous: biome array, byte per XZ coordinate, 256 bytes total.
Number of tile entities VarInt Length of the following array
Tile entities Array of NBT Tag All tile entities in the chunk. Use the x, y, and z tags in the NBT to determine their positions.

Serverbound

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.