Difference between revisions of "Pre-release protocol"

From wiki.vg
Jump to navigation Jump to search
Line 724: Line 724:
 
| F0 00 00 00 || 4 bits || X co-ordinate, relative to chunk
 
| F0 00 00 00 || 4 bits || X co-ordinate, relative to chunk
 
|}
 
|}
 +
 +
==== Block Change ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan=5 | 0x26
 +
| X || Int || Block X Coordinate
 +
|-
 +
| Y || Byte || Block Y Coordinate
 +
|-
 +
| Z || Int || Block Z Coordinate
 +
|-
 +
| Block Type || Short || The new block type for the block
 +
|-
 +
| Block Data || Byte || The new data for the block
 +
|}
 +
 +
==== Block Action ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan=6 | 0x27
 +
| X || Int || Block X Coordinate
 +
|-
 +
| Y || Byte || Block Y Coordinate
 +
|-
 +
| Z || Int || Block Z Coordinate
 +
|-
 +
| Byte 1 || Byte || Varies depending on block - see [[Block_Actions]]
 +
|-
 +
| Byte 2 || Byte || Varies depending on block - see [[Block_Actions]]
 +
|-
 +
| Block Type || Short || The block type for the block
 +
|}
 +
 +
==== Block Action ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan=5 | 0x28
 +
| Entity ID || Int || Entity's ID
 +
|-
 +
| X || Int || rowspan=3 | Block Position
 +
|-
 +
| Y || Int
 +
|-
 +
| Z || Int
 +
|-
 +
| Destroy Stage || Byte || 0 - 9
 +
|}
 +
 +
==== Map Chunk Bulk ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan=5 | 0x29
 +
| Chunk column count || Short || The number of chunk in this packet
 +
|-
 +
| Data length || Int || The size of the data field
 +
|-
 +
| Sky light sent || Bool || Whether or not the chunk data contains a light nibble array. This is true in the main world, false in the end + nether
 +
|-
 +
| Data || Byte Array || Compressed chunk data
 +
|-
 +
| Meta information || Meta || See below
 +
|}
 +
 +
'''Meta'''
 +
{| class="wikitable"
 +
! Field Name !! Field Type !! Notes
 +
|-
 +
|Chunk X || Int || The X Coordinate of the chunk
 +
|-
 +
|Chunk Z || Int || The Z Coordinate of the chunk
 +
|-
 +
|Primary bitmap || Unsigned Short || A bitmap which specifies which sections are not empty in this chunk
 +
|-
 +
|Add bitmap || Unsigned Short || A bitmap which specifies which sections need add information because of very high block ids. not yet used
 +
|}
 +
 +
==== Explosion ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="9" | 0x2A
 +
| X || Double ||
 +
|-
 +
| Y || Double ||
 +
|-
 +
| Z || Double ||
 +
|-
 +
| Radius || Float || Currently unused in the client
 +
|-
 +
| Record count || Int || This is the count, not the size. The size is 3 times this value.
 +
|-
 +
| Records || (Byte, Byte, Byte) × count || Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.
 +
|-
 +
| Player Motion X || Float || X velocity of the player being pushed by the explosion
 +
|-
 +
| Player Motion Y || Float || Y velocity of the player being pushed by the explosion
 +
|-
 +
| Player Motion Z || Float || Z velocity of the player being pushed by the explosion
 +
|}
 +
 +
==== Effect ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="6" | 0x2B
 +
| Effect ID || Int || The ID of the effect, see below.
 +
|-
 +
| X || Int || The X location of the effect multiplied by 8
 +
|-
 +
| Y || Byte || The Y location of the effect multiplied by 8
 +
|-
 +
| Z || Int || The Z location of the effect multiplied by 8
 +
|-
 +
| Data || Int || Extra data for certain effects, see below.
 +
|-
 +
| Disable relative volume || Bool || See above
 +
|}
 +
 +
'''Sound''':
 +
 +
*1000: <code>random.click</code>
 +
*1001: <code>random.click</code>
 +
*1002: <code>random.bow</code>
 +
*1003: <code>random.door_open</code> or <code>random.door_close</code> (50/50 chance)
 +
*1004: <code>random.fizz</code>
 +
*1005: Play a music disc. '''Data''': [http://www.minecraftwiki.net/wiki/Music_Discs Record ID]
 +
*''(1006 not assigned)''
 +
*1007: <code>mob.ghast.charge</code>
 +
*1008: <code>mob.ghast.fireball</code>
 +
*1009: <code>mob.ghast.fireball</code>, but with a lower volume.
 +
*1010: <code>mob.zombie.wood</code>
 +
*1011: <code>mob.zombie.metal</code>
 +
*1012: <code>mob.zombie.woodbreak</code>
 +
*1013: <code>mob.wither.spawn</code>
 +
*1014: <code>mob.wither.shoot</code>
 +
*1015: <code>mob.bat.takeoff</code>
 +
*1016: <code>mob.zombie.infect</code>
 +
*1017: <code>mob.zombie.unfect</code>
 +
*1018: <code>mob.enderdragon.end</code>
 +
*1020: <code>random.anvil_break</code>
 +
*1021: <code>random.anvil_use</code>
 +
*1022: <code>random.anvil_land</code>
 +
 +
'''Particle''':
 +
 +
*2000: Spawns 10 smoke particles, e.g. from a fire. '''Data''': direction, see below
 +
*2001: Block break. '''Data''': [http://www.minecraftwiki.net/wiki/Data_values Block ID]
 +
*2002: Splash potion. Particle effect + glass break sound. '''Data''': [http://www.lb-stuff.com/Minecraft/PotionDataValues1.9pre3.txt Potion ID]
 +
*2003: Eye of ender entity break animation - particles and sound
 +
*2004: Mob spawn particle effect: smoke + flames
 +
*2005: Spawn "happy villager" effect (hearts).
 +
 +
Smoke directions:
 +
 +
{| class="wikitable"
 +
! ID !! Direction
 +
|-
 +
| 0 || South - East
 +
|-
 +
| 1 || South
 +
|-
 +
| 2 || South - West
 +
|-
 +
| 3 || East
 +
|-
 +
| 4 || (Up or middle ?)
 +
|-
 +
| 5 || West
 +
|-
 +
| 6 || North - East
 +
|-
 +
| 7 || North
 +
|-
 +
| 8 || North - West
 +
|}
 +
 +
==== Sound Effect ====
 +
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="7" | 0x2C
 +
| Sound name || String ||
 +
|-
 +
| Effect position X || Int || Effect X multiplied by 8
 +
|-
 +
| Effect position Y || Int || Effect Y multiplied by 8
 +
|-
 +
| Effect position Z || Int || Effect Z multiplied by 8
 +
|-
 +
| Volume || Float || 1 is 100%, can be more
 +
|-
 +
| Pitch || Byte || 63 is 100%, can be more
 +
|-
 +
| Sound Category || Unsigned Byte || Possible values:
 +
MASTER: 0
 +
 +
MUSIC: 1
 +
 +
RECORDS: 2
 +
 +
WEATHER: 3
 +
 +
BLOCKS: 4
 +
 +
MOBS: 5
 +
 +
ANIMALS: 6
 +
 +
PLAYERS: 7
 +
|}
 +
 +
==== Particle ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="9" | 0x3F
 +
| Particle name || String || The name of the particle to create. A list can be found [https://gist.github.com/thinkofdeath/5110835 here]
 +
|-
 +
| X || Float || X position of the particle
 +
|-
 +
| Y || Float || Y position of the particle
 +
|-
 +
| Z || Float || Z position of the particle
 +
|-
 +
| Offset X || Float || This is added to the X position after being multiplied by random.nextGaussian()
 +
|-
 +
| Offset Y || Float || This is added to the Y position after being multiplied by random.nextGaussian()
 +
|-
 +
| Offset Z || Float || This is added to the Z position after being multiplied by random.nextGaussian()
 +
|-
 +
| Particle speed || Float || The speed of each particle
 +
|-
 +
| Number of particles || Int || The number of particles to create
 +
|}
 +
 +
==== Change Game State ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="2" | 0x2D
 +
| Reason || Byte ||
 +
|-
 +
| Value || Float || Depends on reason
 +
|}
 +
 +
'''Reason codes'''
 +
 +
{| class="wikitable"
 +
! Code !! Effect !! Notes
 +
|-
 +
| 0 || Invalid Bed || "tile.bed.notValid"
 +
|-
 +
| 1 || Begin raining ||
 +
|-
 +
| 2 || End raining ||
 +
|-
 +
| 3 || Change game mode || "gameMode.changed" 0 - Survival, 1 - Creative, 2 - Adventure
 +
|-
 +
| 4 || Enter credits ||
 +
|-
 +
| 5 || Demo messages || 0 - Show welcome to demo screen, 101 - Tell movement controls, 102 - Tell jump control, 103 - Tell inventory control
 +
|-
 +
| 6 | Bow hit sound ||
 +
|-
 +
| 7 || Fade value || The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze
 +
|-
 +
| 8 || Fade time || Time in ticks for the sky to fade
 +
|}
 +
 +
==== Spawn Global Entity ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="5" | 0x2E
 +
| Entity ID || Int || The entity ID of the thunderbolt
 +
|-
 +
| Type || Byte || The global entity type, currently always 1 for thunderbolt.
 +
|-
 +
| X || Int || Thunderbolt X a [[Data_Types#Fixed-point_numbers|fixed-point number]]
 +
|-
 +
| Y || Int || Thunderbolt Y a [[Data_Types#Fixed-point_numbers|fixed-point number]]
 +
|-
 +
| Z || Int || Thunderbolt Z a [[Data_Types#Fixed-point_numbers|fixed-point number]]
 +
|}
 +
 +
==== Open Window ====
 +
{| class="wikitable"
 +
! Packet ID !! Field Name !! Field Type !! Notes
 +
|-
 +
| rowspan="6" | 0x2F
 +
| Window id || Byte || A unique id number for the window to be displayed.  Notchian server implementation is a counter, starting at 1.
 +
|-
 +
| Inventory Type || Byte || The window type to use for display.  Check below
 +
|-
 +
| Window title || String || The title of the window.
 +
|-
 +
| Number of Slots || Byte || Number of slots in the window (excluding the number of slots in the player inventory).
 +
|-
 +
| Use provided window title || Bool || If false, the client will look up a string like "window.minecart". If true, the client uses what the server provides.
 +
|-
 +
| Entity ID || Int || EntityHorse's entityId. Only sent when window type is equal to 11 (AnimalChest).
 +
|}
 +
 +
See [[Inventory#Windows|inventory windows]] for further information.
  
 
== Status ==
 
== Status ==

Revision as of 19:43, 10 October 2013

This page documents the changes from the last stable Minecraft release (currently 1.6.2, protocol 74) to the current pre-release. Note that this page contains bleeding-edge information that may not be completely or correctly documented. He 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 occured to the respective packets there.

Protocol History

13w36a - Added sound category byte to 0x3E - Changed 0xC8 to a string:int map

13w37b -

1.6.3 - Terrain fixes to help moving to 1.7, no packet changes from 1.6.2

1.6.4 -

13w38a/b/c -

13w39a/b - UUIDs added to spawn named entity, game state 'gamemode' byte -> float

13w41a - Large protocol work

Protocol Version

13w41a -

13w39a/b - 80

13w38a/b/c - 79

1.6.4 - 78

1.6.3 - 77

13w37b - 76

13w36a - 75

Packet format

Field Name Field Type Notes
Length VarInt
Type VarInt
Data

Data Types

VarInt - Protocol Buffer 32-bit Varint

String - UTF-8 String

Handshaking

Serverbound

?

Packet ID Field Name Field Type Notes
0x00 VarInt
String
VarInt
VarInt

Play

Clientbound

Keep Alive

Packet ID Field Name Field Type Notes
0x00 Keep Alive ID Int


Join Game

Packet ID Field Name Field Type Notes
0x01 Entity ID Int The player's Entity ID
Level type String level-type in server.properties
Gamemode Byte 0: survival, 1: creative, 2: adventure. Bit 3 (0x8) is the hardcore flag
Dimension Byte -1: nether, 0: overworld, 1: end
Difficulty Unsigned Byte 0 thru 3 for Peaceful, Easy, Normal, Hard
Byte
Max Players Byte Used by the client to draw the player list

Chat Message

Packet ID Field Name Field Type Notes
0x02 JSON Data String https://gist.github.com/thinkofdeath/e882ce057ed83bac0a1c

Time Update

Packet ID Field Name Field Type Notes
0x03 Age of the world Long In ticks; not changed by server commands
Time of day Long The world (or region) time, in ticks. If negative the sun will stop moving at the Math.abs of the time

Entity Equipment

Packet ID Field Name Field Type Notes
0x04 EntityID Int Entity's ID
Slot Short Equipment slot: 0=held, 1-4=armor slot (1 - boots, 2 - leggings, 3 - chestplate, 4 - helmet)
Item Slot Item in slot format

Spawn Position

Packet ID Field Name Field Type Notes
0x05 X Int Spawn X in block coordinates
Y Int Spawn Y in block coordinates
Z Int in block coordinates

Update Health

Packet ID Field Name Field Type Notes
0x06 Health Float 0 or less = dead, 20 = full HP
Food Short 0 - 20
Food Saturation Float Seems to vary from 0.0 to 5.0 in integer increments

Respawn

Packet ID Field Name Field Type Notes
0x07 Dimension Int -1: The Nether, 0: The Overworld, 1: The End
Difficulty Byte 0 thru 3 for Peaceful, Easy, Normal, Hard.
Gamemode Byte 0: survival, 1: creative, 2: adventure. The hardcore flag is not included
World Height Short Defaults to 256
Level Type String

Player

Packet ID Field Name Field Type Notes
0x08 On Ground True if the client is on the ground, False otherwise

Player Position

Packet ID Field Name Field Type Notes
0x09 X Double Absolute position
Y Double Absolute position
Stance Double Used to modify the players bounding box when going up stairs, crouching, etc…
Z Double Absolute position
On Ground Bool True if the client is on the ground, False otherwise

Player Look

Packet ID Field Name Field Type Notes
0x0A Yaw Float Absolute rotation on the X Axis, in degrees
Pitch Float Absolute rotation on the Y Axis, in degrees
On Ground Bool True if the client is on the ground, False otherwise

Player Position And Look

Packet ID Field Name Field Type Notes
0x0B X Double Absolute position
Y Double Absolute position
Stance Double Used to modify the players bounding box when going up stairs, crouching, etc…
Z Double Absolute position
Yaw Float Absolute rotation on the X Axis, in degrees
Pitch Float Absolute rotation on the Y Axis, in degrees
On Ground Bool True if the client is on the ground, False otherwise

Held Item Change

Packet ID Field Name Field Type Notes
0x0C Slot Short The slot which the player has selected (0-8)

Use Bed

Packet ID Field Name Field Type Notes
0x0D Entity ID Int Player ID
Byte
X Int Bed headboard X as block coordinate
Y Unsigned Byte Bed headboard Y as block coordinate
Z Int Bed headboard Z as block coordinate

Animation

Packet ID Field Name Field Type Notes
0x0E Entity ID Int Player ID
Animation Byte Animation ID

Animation can be one of the following values:

ID Animation
0 No animation
1 Swing arm
2 Damage animation
3 Leave bed
5 Eat food
6 Critical effect
7 Magic critical effect
102 (unknown)
104 Crouch
105 Uncrouch

Spawn Player

Packet ID Field Name Field Type Notes
0x0F Entity ID Int Player's Entity ID
Player UUID String Player's UUID
Player Name String Player's Name
X Int Player X as a Fixed-Point number
Y Int Player X as a Fixed-Point number
Z Int Player X as a Fixed-Point number
Yaw Byte Player rotation as a packed byte
Pitch Byte Player rotation as a packet byte
Current Item Short The item the player is currently holding. Note that this should be 0 for "no item", unlike -1 used in other packets. A negative value crashes clients.
Metadata Metadata The client will crash if no metadata is sent

Collect Item

Packet ID Field Name Field Type Notes
0x10 Collected Entity ID Int
Collector Entity ID Int

Spawn Object

Packet ID Field Name Field Type Notes
0x11 Entity ID Int Entity ID of the object
Type Byte The of object (See Objects
X Int X position as a Fixed-Point number
Y Int Y position as a Fixed-Point number
Z Int Z position as a Fixed-Point number
Pitch Byte The pitch in steps of 2p/256
Yaw Byte The yaw in steps of 2p/256
Data Object Data

Spawn Mob

Packet ID Field Name Field Type Notes
0x12 Entity ID Int Entity's ID
Type Unsigned Byte The type of mob. See Mobs
X Int X position as a Fixed-Point number
Y Int Y position as a Fixed-Point number
Z Int Z position as a Fixed-Point number
Pitch Byte The pitch in steps of 2p/256
Head Pitch Byte The pitch in steps of 2p/256
Yaw Byte The yaw in steps of 2p/256
Velocity X Short
Velocity Y Short
Velocity Z Short
Metadata Metadata

Spawn Painting

Packet ID Field Name Field Type Notes
0x13 Entity ID Int Entity's ID
Title String Name of the painting. Max length 13
X Int Center X coordinate
Y Int Center Y coordinate
Z Int Center Z coordinate
Direction Int Direction the painting faces (0 -z, 1 -x, 2 +z, 3 +x)

Spawn Experience Orb

Packet ID Field Name Field Type Notes
0x14 Entity ID Int Entity's ID
X Int X position as a Fixed-Point number
Y Int Y position as a Fixed-Point number
Z Int Z position as a Fixed-Point number
Count Short The amount of experience this orb will reward once collected

Entity Velocity

Packet ID Field Name Field Type Notes
0x15 Entity ID Int Entity's ID
Velocity X Short Velocity on the X axis
Velocity Y Short Velocity on the Y axis
Velocity Z Short Velocity on the Z axis

Destroy Entitie s

Packet ID Field Name Field Type Notes
0x16 Count Byte Length of following array
Entity IDs Array of Int The list of entities of destroy

Entity

Packet ID Field Name Field Type Notes
0x17 Entity ID Int Entity's ID

Entity Relative Move

Packet ID Field Name Field Type Notes
0x18 Entity ID Int Entity's ID
DX Byte Change in X position as a Fixed-Point number
DY Byte Change in Y position as a Fixed-Point number
DZ Byte Change in Z position as a Fixed-Point number

Entity Look

Packet ID Field Name Field Type Notes
0x19 Entity ID Int Entity's ID
Yaw Byte The X Axis rotation as a fraction of 360
Pitch Byte The Y Axis rotation as a fraction of 360

Entity Look and Relative Move

Packet ID Field Name Field Type Notes
0x1A Entity ID Int Entity's ID
DX Byte Change in X position as a Fixed-Point number
DY Byte Change in Y position as a Fixed-Point number
DZ Byte Change in Z position as a Fixed-Point number
Yaw Byte The X Axis rotation as a fraction of 360
Pitch Byte The Y Axis rotation as a fraction of 360

Entity Teleport

Packet ID Field Name Field Type Notes
0x1B Entity ID Int Entity's ID
X Byte X position as a Fixed-Point number
Y Byte Y position as a Fixed-Point number
Z Byte Z position as a Fixed-Point number
Yaw Byte The X Axis rotation as a fraction of 360
Pitch Byte The Y Axis rotation as a fraction of 360

Entity Head Look

Packet ID Field Name Field Type Notes
0x1C Entity ID Int Entity's ID
Head Yaw Byte Head yaw in steps of 2p/256

Entity Status

Packet ID Field Name Field Type Notes
0x1D Entity ID Int Entity's ID
Entity Status Byte See below
Entity Status Meaning
2 Entity hurt
3 Entity dead
6 Wolf taming
7 Wolf tamed
8 Wolf shaking water off itself
9 (of self) Eating accepted by server
10 Sheep eating grass
11 Iron Golem handing over a rose
12 Spawn "heart" particles near a villager
13 Spawn particles indicating that a villager is angry and seeking revenge
14 Spawn happy particles near a villager
15 Spawn a "magic" particle near the Witch
16 Zombie converting into a villager by shaking violently (unused in recent update)
17 A firework exploding

Attach Entity

Packet ID Field Name Field Type Notes
0x1E Entity ID Int Entity's ID
Vehicle ID Int Vechicle's Entity ID
Leash Bool If true leashes the entity to the vehicle

Attach Entity

Packet ID Field Name Field Type Notes
0x1F Entity ID Int Entity's ID
Metadata Metadata

Entity Effect

Packet ID Field Name Field Type Notes
0x20 Entity ID Int Entity's ID
Effect ID Byte See [[1]]
Amplifier Byte
Duration Short

Remove Entity Effect

Packet ID Field Name Field Type Notes
0x21 Entity ID Int Entity's ID
Effect ID Byte

Set Experience

Packet ID Field Name Field Type Notes
0x22 Experience bar Float Between 0 and 1
Level Short
Total Experience Short

Entity Properties

Packet ID Field Name Field Type Notes
0x23 Entity ID Entity's ID
Count Int Length of following array
Properties Array of Property Data

Property Data structure:

Field Name Field Type Notes
Key String
Value Double
List Length Short Number of list elements that follow.
Modifiers Array of Modifier Data http://www.minecraftwiki.net/wiki/Attribute#Modifiers

Known key values:

Key Default Min Max Label
generic.maxHealth 20.0 0.0 Double.MaxValue Max Health
generic.followRange 32.0 0.0 2048.0 Follow Range
generic.knockbackResistance 0.0 0.0 1.0 Knockback Resistance
generic.movementSpeed 0.699999988079071 0.0 Double.MaxValue Movement Speed
generic.attackDamage 2.0 0.0 Double.MaxValue
horse.jumpStrength 0.7 0.0 2.0 Jump Strength
zombie.spawnReinforcements 0.0 0.0 1.0 Spawn Reinforcements Chance

Modifier Data structure:

Field Name Field Type Notes
UUID 128-bit integer
Amount Double
Operation Byte

Chunk Data

Packet ID Field Name Field Type Notes
0x24 Chunk X Int Chunk X coordinate
Chunk Z Int Chunk Z coordinate
Ground-Up continuous Boolean This is True if the packet represents all sections in this vertical column, where the primary bit map specifies exactly which sections are included, and which are air
Primary bit map Unsigned Short Bitmask with 1 for every 16x16x16 section which data follows in the compressed data.
Add bit map Unsigned Short Same as above, but this is used exclusively for the 'add' portion of the payload
Compressed size Int Size of compressed chunk data
Compressed data Byte array The chunk data is compressed using Zlib Deflate

Multi Block Change

Packet ID Field Name Field Type Notes
0x25 Chunk X Int Chunk X coordinate
Chunk Z Int Chunk Z Coordinate
Record count Short The number of blocks affected
Data size Int The total size of the data, in bytes. Should always be 4*record count
Records Array of Records

Record

Bit mask Width Meaning
00 00 00 0F 4 bits Block metadata
00 00 FF F0 12 bits Block ID
00 FF 00 00 8 bits Y co-ordinate
0F 00 00 00 4 bits Z co-ordinate, relative to chunk
F0 00 00 00 4 bits X co-ordinate, relative to chunk

Block Change

Packet ID Field Name Field Type Notes
0x26 X Int Block X Coordinate
Y Byte Block Y Coordinate
Z Int Block Z Coordinate
Block Type Short The new block type for the block
Block Data Byte The new data for the block

Block Action

Packet ID Field Name Field Type Notes
0x27 X Int Block X Coordinate
Y Byte Block Y Coordinate
Z Int Block Z Coordinate
Byte 1 Byte Varies depending on block - see Block_Actions
Byte 2 Byte Varies depending on block - see Block_Actions
Block Type Short The block type for the block

Block Action

Packet ID Field Name Field Type Notes
0x28 Entity ID Int Entity's ID
X Int Block Position
Y Int
Z Int
Destroy Stage Byte 0 - 9

Map Chunk Bulk

Packet ID Field Name Field Type Notes
0x29 Chunk column count Short The number of chunk in this packet
Data length Int The size of the data field
Sky light sent Bool Whether or not the chunk data contains a light nibble array. This is true in the main world, false in the end + nether
Data Byte Array Compressed chunk data
Meta information Meta See below

Meta

Field Name Field Type Notes
Chunk X Int The X Coordinate of the chunk
Chunk Z Int The Z Coordinate of the chunk
Primary bitmap Unsigned Short A bitmap which specifies which sections are not empty in this chunk
Add bitmap Unsigned Short A bitmap which specifies which sections need add information because of very high block ids. not yet used

Explosion

Packet ID Field Name Field Type Notes
0x2A X Double
Y Double
Z Double
Radius Float Currently unused in the client
Record count Int This is the count, not the size. The size is 3 times this value.
Records (Byte, Byte, Byte) × count Each record is 3 signed bytes long, each bytes are the XYZ (respectively) offsets of affected blocks.
Player Motion X Float X velocity of the player being pushed by the explosion
Player Motion Y Float Y velocity of the player being pushed by the explosion
Player Motion Z Float Z velocity of the player being pushed by the explosion

Effect

Packet ID Field Name Field Type Notes
0x2B Effect ID Int The ID of the effect, see below.
X Int The X location of the effect multiplied by 8
Y Byte The Y location of the effect multiplied by 8
Z Int The Z location of the effect multiplied by 8
Data Int Extra data for certain effects, see below.
Disable relative volume Bool See above

Sound:

  • 1000: random.click
  • 1001: random.click
  • 1002: random.bow
  • 1003: random.door_open or random.door_close (50/50 chance)
  • 1004: random.fizz
  • 1005: Play a music disc. Data: Record ID
  • (1006 not assigned)
  • 1007: mob.ghast.charge
  • 1008: mob.ghast.fireball
  • 1009: mob.ghast.fireball, but with a lower volume.
  • 1010: mob.zombie.wood
  • 1011: mob.zombie.metal
  • 1012: mob.zombie.woodbreak
  • 1013: mob.wither.spawn
  • 1014: mob.wither.shoot
  • 1015: mob.bat.takeoff
  • 1016: mob.zombie.infect
  • 1017: mob.zombie.unfect
  • 1018: mob.enderdragon.end
  • 1020: random.anvil_break
  • 1021: random.anvil_use
  • 1022: random.anvil_land

Particle:

  • 2000: Spawns 10 smoke particles, e.g. from a fire. Data: direction, see below
  • 2001: Block break. Data: Block ID
  • 2002: Splash potion. Particle effect + glass break sound. Data: Potion ID
  • 2003: Eye of ender entity break animation - particles and sound
  • 2004: Mob spawn particle effect: smoke + flames
  • 2005: Spawn "happy villager" effect (hearts).

Smoke directions:

ID Direction
0 South - East
1 South
2 South - West
3 East
4 (Up or middle ?)
5 West
6 North - East
7 North
8 North - West

Sound Effect

Packet ID Field Name Field Type Notes
0x2C Sound name String
Effect position X Int Effect X multiplied by 8
Effect position Y Int Effect Y multiplied by 8
Effect position Z Int Effect Z multiplied by 8
Volume Float 1 is 100%, can be more
Pitch Byte 63 is 100%, can be more
Sound Category Unsigned Byte Possible values:

MASTER: 0

MUSIC: 1

RECORDS: 2

WEATHER: 3

BLOCKS: 4

MOBS: 5

ANIMALS: 6

PLAYERS: 7

Particle

Packet ID Field Name Field Type Notes
0x3F Particle name String The name of the particle to create. A list can be found here
X Float X position of the particle
Y Float Y position of the particle
Z Float Z position of the particle
Offset X Float This is added to the X position after being multiplied by random.nextGaussian()
Offset Y Float This is added to the Y position after being multiplied by random.nextGaussian()
Offset Z Float This is added to the Z position after being multiplied by random.nextGaussian()
Particle speed Float The speed of each particle
Number of particles Int The number of particles to create

Change Game State

Packet ID Field Name Field Type Notes
0x2D Reason Byte
Value Float Depends on reason

Reason codes

Code Effect Notes
0 Invalid Bed "tile.bed.notValid"
1 Begin raining
2 End raining
3 Change game mode "gameMode.changed" 0 - Survival, 1 - Creative, 2 - Adventure
4 Enter credits
5 Demo messages 0 - Show welcome to demo screen, 101 - Tell movement controls, 102 - Tell jump control, 103 - Tell inventory control
Bow hit sound
7 Fade value The current darkness value. 1 = Dark, 0 = Bright, Setting the value higher causes the game to change color and freeze
8 Fade time Time in ticks for the sky to fade

Spawn Global Entity

Packet ID Field Name Field Type Notes
0x2E Entity ID Int The entity ID of the thunderbolt
Type Byte The global entity type, currently always 1 for thunderbolt.
X Int Thunderbolt X a fixed-point number
Y Int Thunderbolt Y a fixed-point number
Z Int Thunderbolt Z a fixed-point number

Open Window

Packet ID Field Name Field Type Notes
0x2F Window id Byte A unique id number for the window to be displayed. Notchian server implementation is a counter, starting at 1.
Inventory Type Byte The window type to use for display. Check below
Window title String The title of the window.
Number of Slots Byte Number of slots in the window (excluding the number of slots in the player inventory).
Use provided window title Bool If false, the client will look up a string like "window.minecart". If true, the client uses what the server provides.
Entity ID Int EntityHorse's entityId. Only sent when window type is equal to 11 (AnimalChest).

See inventory windows for further information.

Status

Clientbound

?

Packet ID Field Name Field Type Notes
0x00 String


?

Packet ID Field Name Field Type Notes
0x01 Long

Serverbound

?

Packet ID Field Name Field Type Notes
0x00


?

Packet ID Field Name Field Type Notes
0x01 Long

Login

Clientbound

?

Packet ID Field Name Field Type Notes
0x00 String


?

Packet ID Field Name Field Type Notes
0x01 String
Length Short
Byte array
Length Short
Byte array


?

Packet ID Field Name Field Type Notes
0x02 UUID String
Name String


Serverbound

?

Packet ID Field Name Field Type Notes
0x00 Name String

?

Packet ID Field Name Field Type Notes
0x01 Length Short
Byte array
Length Short
Byte array

Plugin Channels

MC|RPack

Field Name Field Type Example Notes
Resource pack URL UTF8 string http://example.com/pack.zip