Table of Contents

KeyName
TypeBehaviourPackInfos
TypeTexturePackInfos
TypeResourcePackIdVersions
TypeResourcePackIds
TypeExperiment
TypeExperiments
TypeGameMode
TypeGameRule
TypeGameRules
TypeBlob
TypeBlockProperties
TypeItemstates
TypeItemExtraDataWithBlockingTick
TypeItemExtraDataWithoutBlockingTick
TypeItemLegacy
TypeItem
Typevec3i
Typevec3u
Typevec3f
Typevec2f
TypeMetadataDictionary
TypeLink
TypeLinks
TypeEntityAttributes
TypeRotation
TypeBlockCoordinates
TypePlayerAttributes
TypeTransactionUseItem
TypeTransactionActions
TypeTransactionLegacy
TypeTransaction
TypeItemStacks
TypeRecipeIngredient
TypePotionTypeRecipes
TypePotionContainerChangeRecipes
TypeRecipes
TypeSkinImage
TypeSkin
TypePlayerRecords
TypeEnchant
TypeEnchantOption
TypeAction
TypeStackRequestSlotInfo
TypeItemStackRequest
TypeItemStackResponses
TypeItemComponentList
TypeCommandOrigin
TypeTrackedObject
TypeMapDecoration
TypeStructureBlockSettings
TypeEducationSharedResourceURI
TypeEducationExternalLinkSettings
TypeBlockUpdate
TypeTransitionType
TypeMaterialReducer
TypePermissionLevel
TypeWindowID
TypeWindowIDVarint
TypeWindowType
TypeContainerSlotType
TypeSoundType
TypeLegacyEntityType
TypeDeviceOS
0x1packet_login
TypeLoginTokens
0x2packet_play_status
0x3packet_server_to_client_handshake
0x4packet_client_to_server_handshake
0x5packet_disconnect
0x6packet_resource_packs_info
0x7packet_resource_pack_stack
0x8packet_resource_pack_client_response
0x9packet_text
0xapacket_set_time
0xbpacket_start_game
0xcpacket_add_player
0xdpacket_add_entity
0xepacket_remove_entity
0xfpacket_add_item_entity
0x11packet_take_item_entity
0x12packet_move_entity
0x13packet_move_player
0x14packet_rider_jump
0x15packet_update_block
0x16packet_add_painting
0x17packet_tick_sync
0x18packet_level_sound_event_old
0x19packet_level_event
0x1apacket_block_event
0x1bpacket_entity_event
0x1cpacket_mob_effect
0x1dpacket_update_attributes
0x1epacket_inventory_transaction
0x1fpacket_mob_equipment
0x20packet_mob_armor_equipment
0x21packet_interact
0x22packet_block_pick_request
0x23packet_entity_pick_request
0x24packet_player_action
0x26packet_hurt_armor
0x27packet_set_entity_data
0x28packet_set_entity_motion
0x29packet_set_entity_link
0x2apacket_set_health
0x2bpacket_set_spawn_position
0x2cpacket_animate
0x2dpacket_respawn
0x2epacket_container_open
0x2fpacket_container_close
0x30packet_player_hotbar
0x31packet_inventory_content
0x32packet_inventory_slot
0x33packet_container_set_data
0x34packet_crafting_data
0x35packet_crafting_event
0x36packet_gui_data_pick_item
0x37packet_adventure_settings
0x38packet_block_entity_data
0x39packet_player_input
0x3apacket_level_chunk
0x3bpacket_set_commands_enabled
0x3cpacket_set_difficulty
0x3dpacket_change_dimension
0x3epacket_set_player_game_type
0x3fpacket_player_list
0x40packet_simple_event
0x41packet_event
0x42packet_spawn_experience_orb
0x43packet_clientbound_map_item_data
0x44packet_map_info_request
0x45packet_request_chunk_radius
0x46packet_chunk_radius_update
0x47packet_item_frame_drop_item
0x48packet_game_rules_changed
0x49packet_camera
0x4apacket_boss_event
0x4bpacket_show_credits
0x4cpacket_available_commands
0x4dpacket_command_request
0x4epacket_command_block_update
0x4fpacket_command_output
0x50packet_update_trade
0x51packet_update_equipment
0x52packet_resource_pack_data_info
0x53packet_resource_pack_chunk_data
0x54packet_resource_pack_chunk_request
0x55packet_transfer
0x56packet_play_sound
0x57packet_stop_sound
0x58packet_set_title
0x59packet_add_behavior_tree
0x5apacket_structure_block_update
0x5bpacket_show_store_offer
0x5cpacket_purchase_receipt
0x5dpacket_player_skin
0x5epacket_sub_client_login
0x5fpacket_initiate_web_socket_connection
0x60packet_set_last_hurt_by
0x61packet_book_edit
0x62packet_npc_request
0x63packet_photo_transfer
0x64packet_modal_form_request
0x65packet_modal_form_response
0x66packet_server_settings_request
0x67packet_server_settings_response
0x68packet_show_profile
0x69packet_set_default_game_type
0x6apacket_remove_objective
0x6bpacket_set_display_objective
0x6cpacket_set_score
0x6dpacket_lab_table
0x6epacket_update_block_synced
0x6fpacket_move_entity_delta
0x70packet_set_scoreboard_identity
0x71packet_set_local_player_as_initialized
0x72packet_update_soft_enum
0x73packet_network_stack_latency
0x75packet_script_custom_event
0x76packet_spawn_particle_effect
0x77packet_available_entity_identifiers
0x78packet_level_sound_event_v2
0x79packet_network_chunk_publisher_update
0x7apacket_biome_definition_list
0x7bpacket_level_sound_event
0x7cpacket_level_event_generic
0x7dpacket_lectern_update
0x7epacket_video_stream_connect
0x7fpacket_add_ecs_entity
0x80packet_remove_ecs_entity
0x81packet_client_cache_status
0x82packet_on_screen_texture_animation
0x83packet_map_create_locked_copy
0x84packet_structure_template_data_export_request
0x85packet_structure_template_data_export_response
0x86packet_update_block_properties
0x87packet_client_cache_blob_status
0x88packet_client_cache_miss_response
0x89packet_education_settings
0x8apacket_emote
0x8bpacket_multiplayer_settings
0x8cpacket_settings_command
0x8dpacket_anvil_damage
0x8epacket_completed_using_item
0x8fpacket_network_settings
0x90packet_player_auth_input
0x91packet_creative_content
0x92packet_player_enchant_options
0x93packet_item_stack_request
0x94packet_item_stack_response
0x95packet_player_armor_damage
0x97packet_update_player_game_type
0x98packet_emote_list
0x9apacket_position_tracking_db_request
0x99packet_position_tracking_db_broadcast
0x9cpacket_packet_violation_warning
0x9dpacket_motion_prediction_hints
0x9epacket_animate_entity
0x9fpacket_camera_shake
0xa0packet_player_fog
0xa1packet_correct_player_move_prediction
0xa2packet_item_component
0xa3packet_filter_text_packet
0xa4packet_debug_renderer
0xa5packet_sync_entity_property
0xa6packet_add_volume_entity
0xa7packet_remove_volume_entity
0xa8packet_simulation_type
0xa9packet_npc_dialogue
0xaapacket_edu_uri_resource_packet
0xabpacket_create_photo
0xacpacket_update_subchunk_blocks
0xadpacket_photo_info_request
TypeSubChunkEntryWithoutCaching
TypeSubChunkEntryWithCaching
0xaepacket_subchunk
0xafpacket_subchunk_request
0xb0packet_client_start_item_cooldown
0xb1packet_script_message
0xb2packet_code_builder_source
0xb3packet_ticking_areas_load_status
0xb4packet_dimension_data
0xb5packet_agent_action
0xb6packet_change_mob_property
0xb7packet_lesson_progress
0xb8packet_request_ability
0xb9packet_request_permissions
0xbapacket_toast_request


Type
BehaviourPackInfos
Datatype

Field NameField TypeNotes
BehaviourPackInfos lengthli16
BehaviourPackInfos
array
uuidstring
versionstring
sizelu64
content keystring
sub pack namestring
content identitystring
has scriptsbool



Type
TexturePackInfos
Datatype

Field NameField TypeNotes
TexturePackInfos lengthli16
TexturePackInfos
array
uuidstring
versionstring
sizelu64
content keystring
sub pack namestring
content identitystring
has scriptsbool
rtx enabledbool



Type
ResourcePackIdVersions
Datatype

Field NameField TypeNotes
ResourcePackIdVersions lengthvarint
ResourcePackIdVersions
array
uuidstring

The ID of the resource pack.

versionstring

The version of the resource pack.

namestring

The subpack name of the resource pack.




Type
Experiment
Datatype

Field NameField TypeNotes
namestring
enabledbool



Type
GameMode
Datatype

Field NameField TypeNotes
GameModezigzag32 enum
0survival
1creative
2adventure
3survival spectator
4creative spectator
5fallback
6spectator



Type
GameRule
Datatype

Field NameField TypeNotes
namestring
editablebool
typevarint enum
1bool
2int
3float
value

if type
is boolbool
is intzigzag32
is floatlf32



Type
Blob
Datatype

CacheBlob represents a blob as used in the client side blob cache protocol. It holds a hash of its data and the full data of it.

Field NameField TypeNotes
hashlu64

Hash is the hash of the blob. The hash is computed using xxHash, and must be deterministic for the same chunk data.

payloadByteArray

Payload is the data of the blob. When sent, the client will associate the Hash of the blob with the Payload in it.




Type
BlockProperties
Datatype

Field NameField TypeNotes
BlockProperties lengthvarint
BlockProperties
array
namestring
statenbt



Type
Itemstates
Datatype

Field NameField TypeNotes
Itemstates lengthvarint
Itemstates
array
namestring
runtime idli16
component basedbool



Type
ItemExtraDataWithBlockingTick
Datatype

Field NameField TypeNotes
has nbtlu16 enum
65535true
0false
nbt

if has nbt
is true
versionu8
nbtlnbt
defaultvoid
can place on lengthli32
can place on
array
ShortString
can destroy lengthli32
can destroy
array
ShortString
blocking tickli64



Type
ItemExtraDataWithoutBlockingTick
Datatype

Field NameField TypeNotes
has nbtlu16 enum
65535true
0false
nbt

if has nbt
is true
versionu8
nbtlnbt
defaultvoid
can place on lengthli32
can place on
array
ShortString
can destroy lengthli32
can destroy
array
ShortString



Type
ItemLegacy
Datatype

Same as below but without a "networkStackID" boolean

Field NameField TypeNotes
network idzigzag32
🔁

if network id
is 0void
default
countlu16
metadatavarint
block runtime idzigzag32
extra

if network id
is /ShieldItemID["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithBlockingTick" }]

The Shield Item ID is sent in the StartGame packet. It is usually 355 in vanilla.

default["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithoutBlockingTick" }]



Type
Item
Datatype

An "ItemStack" here represents an Item instance. You can think about it like a pointer to an item class. The data for the class gets updated with the data in the item field As of 1.16.220, now functionally the same as Item just without an extra boolean when server auth inventories is disabled.

Field NameField TypeNotes
network idzigzag32
🔁

if network id
is 0void
default
countlu16
metadatavarint
has stack idu8

When server authoritative inventory is enabled, all allocated items have a unique ID used to identify a specifc item instance.

stack id

if has stack id
is 0void

StackNetworkID is the network ID of this item instance. If the stack is empty, 0 is always written for this field. If not, the field should be set to 1 if the server authoritative inventories are disabled in the StartGame packet, or to a unique stack ID if it is enabled.

defaultzigzag32
block runtime idzigzag32
extra

if network id
is /ShieldItemID["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithBlockingTick" }]

The Shield Item ID is sent in the StartGame packet. It is usually 355 in vanilla.

default["encapsulated", { "lengthType": "varint", "type": "ItemExtraDataWithoutBlockingTick" }]



Type
vec3i
Datatype

Field NameField TypeNotes
xzigzag32
yzigzag32
zzigzag32



Type
vec3u
Datatype

Field NameField TypeNotes
xvarint
yvarint
zvarint



Type
vec3f
Datatype

Field NameField TypeNotes
xlf32
ylf32
zlf32



Type
vec2f
Datatype

Field NameField TypeNotes
xlf32
zlf32



Type
MetadataDictionary
Datatype

Field NameField TypeNotes
MetadataDictionary lengthvarint
MetadataDictionary
array
keyvarint enum
0flags

https://github.com/pmmp/PocketMine-MP/blob/stable/src/pocketmine/entity/Entity.php#L101

1health
2variant
3color
4nametag
5owner eid
6target eid
7air
8potion color
9potion ambient
10jump duration
11hurt time
12hurt direction
13paddle time left
14paddle time right
15experience value
16minecart display block
17minecart display offset
18minecart has display
20old swell
21swell dir
22charge amount
23enderman held runtime id
24entity age
26player flags
27player index
28player bed position
29fireball power x
30fireball power y
31fireball power z
32aux power
33fish x
34fish z
35fish angle
36potion aux value
37lead holder eid
38scale
39interactive tag
40npc skin id
41url tag
42max airdata max air
43mark variant
44container type
45container base size
46container extra slots per strength
47block target
48wither invulnerable ticks
49wither target 1
50wither target 2
51wither target 3
52aerial attack
53boundingbox width
54boundingbox height
55fuse length
56rider seat position
57rider rotation locked
58rider max rotation
59rider min rotation
60rider rotation offset
61area effect cloud radius
62area effect cloud waiting
63area effect cloud particle id
64shulker peek id
65shulker attach face
66shulker attached
67shulker attach pos
68trading player eid
69trading career
70has command block
71command block command
72command block last output
73command block track output
74controlling rider seat number
75strength
76max strength
77spell casting color
78limited life
79armor stand pose index
80ender crystal time offset
81always show nametag
82color 2
83name author
84score tag
85balloon attached entity
86pufferfish size
87bubble time
88agent
89sitting amount
90sitting amount previous
91eating counter
92flags extended
93laying amount
94laying amount previous
95duration
96spawn time
97change rate
98change on pickup
99pickup count
100interact text
101trade tier
102max trade tier
103trade experience
104skin id
105spawning frames
106command block tick delay
107command block execute on first tick
108ambient sound interval
109ambient sound interval range
110ambient sound event name
111fall damage multiplier
112name raw text
113can ride target
114low tier cured discount
115high tier cured discount
116nearby cured discount
117nearby cured discount timestamp
118hitbox
119is buoyant
120base runtime id
121freezing effect strength
122buoyancy data
123goat horn count
124update properties
125movement sound distance offset
126heartbeat interval ticks
127heartbeat sound event
typevarint enum
0byte
1short
2int
3float
4string
5compound
6vec3i
7long
8vec3f
value

if key
is flagsMetadataFlags1
is flags extendedMetadataFlags2
default

if type
is bytei8
is shortli16
is intzigzag32
is floatlf32
is stringstring
is compoundnbt
is vec3ivec3i
is longzigzag64
is vec3fvec3f




Field NameField TypeNotes
ridden entity idzigzag64
rider entity idzigzag64
typeu8
immediatebool
rider initiatedbool



Type
EntityAttributes
Datatype

Field NameField TypeNotes
EntityAttributes lengthvarint
EntityAttributes
array
namestring
minlf32
valuelf32
maxlf32



Type
Rotation
Datatype

Field NameField TypeNotes
yawbyterot
pitchbyterot
head yawbyterot



Type
BlockCoordinates
Datatype

Field NameField TypeNotes
xzigzag32
yvarint
zzigzag32



Type
PlayerAttributes
Datatype

Field NameField TypeNotes
PlayerAttributes lengthvarint
PlayerAttributes
array
minlf32
maxlf32
currentlf32
defaultlf32
namestring



Type
TransactionUseItem
Datatype

UseItemTransactionData represents an inventory transaction data object sent when the client uses an item on a block. Also used in PlayerAuthoritativeInput packet

Field NameField TypeNotes
action typevarint enum
0click block

ActionType is the type of the UseItem inventory transaction. It is one of the action types found above, and specifies the way the player interacted with the block.

1click air
2break block
block positionvec3i

BlockPosition is the position of the block that was interacted with. This is only really a correct block position if ActionType is not UseItemActionClickAir.

facevarint

BlockFace is the face of the block that was interacted with. When clicking the block, it is the face clicked. When breaking the block, it is the face that was last being hit until the block broke.

hotbar slotvarint

HotBarSlot is the hot bar slot that the player was holding while clicking the block. It should be used to ensure that the hot bar slot and held item are correctly synchronised with the server.

held itemItem

HeldItem is the item that was held to interact with the block. The server should check if this item is actually present in the HotBarSlot.

player posvec3f

Position is the position of the player at the time of interaction. For clicking a block, this is the position at that time, whereas for breaking the block it is the position at the time of breaking.

click posvec3f

ClickedPosition is the position that was clicked relative to the block's base coordinate. It can be used to find out exactly where a player clicked the block.

block runtime idvarint

BlockRuntimeID is the runtime ID of the block that was clicked. It may be used by the server to verify that the player's world client-side is synchronised with the server's.




Type
TransactionActions
Datatype

Actions is a list of actions that took place, that form the inventory transaction together. Each of these actions hold one slot in which one item was changed to another. In general, the combination of all of these actions results in a balanced inventory transaction. This should be checked to ensure that no items are cheated into the inventory.

Field NameField TypeNotes
TransactionActions lengthvarint
TransactionActions
array
source typevarint enum
0container
1global
2world interaction
3creative
100craft slot
99999craft
🔁

if source type
is container or craft
inventory idWindowIDVarint
is world interaction
flagsvarint
is craft or craft slot
actionvarint
defaultvoid
slotvarint
old itemItem
new itemItem



Type
TransactionLegacy
Datatype

The Minecraft bedrock inventory system was refactored, but not all inventory actions use the new packet. This data structure holds actions that have not been updated to the new system.

Field NameField TypeNotes
legacy request idzigzag32

LegacyRequestID is an ID that is only non-zero at times when sent by the client. The server should always send 0 for this. When this field is not 0, the LegacySetItemSlots slice below will have values in it. LegacyRequestID ties in with the ItemStackResponse packet. If this field is non-0, the server should respond with an ItemStackResponse packet. Some inventory actions such as dropping an item out of the hotbar are still one using this packet, and the ItemStackResponse packet needs to tie in with it.

legacy transactions

if legacy request id
is 0void

legacy_transactions are only present if the LegacyRequestID is non-zero. These item slots inform the server of the slots that were changed during the inventory transaction, and the server should send back an ItemStackResponse packet with these slots present in it. (Or false with no slots, if rejected.)

default lengthvarint
default
array
container idu8
changed slots lengthvarint
changed slots
array
slot idu8



Type
Transaction
Datatype

Field NameField TypeNotes
legacyTransactionLegacy

Old transaction system data

transaction typevarint enum
0normal

What type of transaction took place

1inventory mismatch
2item use
3item use on entity
4item release
actionsTransactionActions

The list of inventory internal actions in this packet, e.g. inventory GUI actions

transaction data

if transaction type
is normal or inventory mismatchvoid

Extra data if an intenal inventory transaction did not take place, e.g. use of an item

is item useTransactionUseItem

UseItemTransactionData represents an inventory transaction data object sent when the client uses an item on a block.

is item use on entity
entity runtime idvarint64

UseItemOnEntityTransactionData represents an inventory transaction data object sent when the client uses an item on an entity. TargetEntityRuntimeID is the entity runtime ID of the target that was clicked. It is the runtime ID that was assigned to it in the AddEntity packet.

action typevarint enum
0interact

ActionType is the type of the UseItemOnEntity inventory transaction. It is one of the action types found in the constants above, and specifies the way the player interacted with the entity.

1attack
hotbar slotzigzag32

HotBarSlot is the hot bar slot that the player was holding while clicking the entity. It should be used to ensure that the hot bar slot and held item are correctly synchronised with the server.

held itemItem

HeldItem is the item that was held to interact with the entity. The server should check if this item is actually present in the HotBarSlot.

player posvec3f

Position is the position of the player at the time of clicking the entity.

click posvec3f

ClickedPosition is the position that was clicked relative to the entity's base coordinate. It can be used to find out exactly where a player clicked the entity.

is item release
action typevarint enum
0release

ReleaseItemTransactionData represents an inventory transaction data object sent when the client releases the item it was using, for example when stopping while eating or stopping the charging of a bow.
ActionType is the type of the ReleaseItem inventory transaction. It is one of the action types found in the constants above, and specifies the way the item was released. As of 1.13, the ActionType is always 0. This field can be ignored, because releasing food (by consuming it) or releasing a bow (to shoot an arrow) is essentially the same.

1consume
hotbar slotzigzag32

HotBarSlot is the hot bar slot that the player was holding while releasing the item. It should be used to ensure that the hot bar slot and held item are correctly synchronised with the server.

held itemItem

HeldItem is the item that was released. The server should check if this item is actually present in the HotBarSlot.

head posvec3f

HeadPosition is the position of the player's head at the time of releasing the item. This is used mainly for purposes such as spawning eating particles at that position.




Type
RecipeIngredient
Datatype

Field NameField TypeNotes
network idzigzag32
🔁

if network id
is 0void
default
network datazigzag32
countzigzag32



Type
PotionTypeRecipes
Datatype

Field NameField TypeNotes
PotionTypeRecipes lengthvarint
PotionTypeRecipes
array
input item idzigzag32
input item metazigzag32
ingredient idzigzag32
ingredient metazigzag32
output item idzigzag32
output item metazigzag32



Type
PotionContainerChangeRecipes
Datatype

Field NameField TypeNotes
PotionContainerChangeRecipes lengthvarint
PotionContainerChangeRecipes
array
input item idzigzag32
ingredient idzigzag32
output item idzigzag32



Type
Recipes
Datatype

Field NameField TypeNotes
Recipes lengthvarint
Recipes
array
typezigzag32 enum
0shapeless
1shaped
2furnace
3furnace with metadata

furnace_with_metadata is a recipe specifically used for furnace-type crafting stations. It is equal to furnace, except it has an input item with a specific metadata value, instead of any metadata value.

4multi
5shulker box
6shapeless chemistry
7shaped chemistry
recipe

if type
is shapeless or shulker box or shapeless chemistry
recipe idstring
input lengthvarint
input
array
RecipeIngredient
output lengthvarint
output
array
ItemLegacy
uuiduuid
blockstring
priorityzigzag32
network idvarint
is shaped or shaped chemistry
recipe idstring
widthzigzag32
heightzigzag32
Length for input below is width from above

2D input array, size of width*height

input
array
Length for __683 below is height from above
__683
array
RecipeIngredient
output lengthvarint
output
array
ItemLegacy
uuiduuid
blockstring
priorityzigzag32
network idvarint
is furnace
input idzigzag32
outputItemLegacy
blockstring
is furnace with metadata
input idzigzag32
input metazigzag32
outputItemLegacy
blockstring
is multi
uuiduuid
network idvarint



Type
SkinImage
Datatype

Field NameField TypeNotes
widthli32
heightli32
dataByteArray



Type
Skin
Datatype

Field NameField TypeNotes
skin idstring
play fab idstring
skin resource packstring
skin dataSkinImage
animations lengthli32
animations
array
skin imageSkinImage
animation typeli32
animation frameslf32
expression typelf32
cape dataSkinImage
geometry datastring
geometry data versionstring
animation datastring
cape idstring
full skin idstring
arm sizestring
skin colorstring
personal pieces lengthli32
personal pieces
array
piece idstring
piece typestring
pack idstring
is default piecebool
product idstring
piece tint colors lengthli32
piece tint colors
array
piece typestring
colors lengthli32
colors
array
string
premiumbool
personabool
cape on classicbool

PersonaCapeOnClassicSkin specifies if the skin had a Persona cape (in-game skin creator cape) equipped on a classic skin.

primary userbool



Type
PlayerRecords
Datatype

Field NameField TypeNotes
typeu8 enum
0add
1remove
records countvarint
Length for records below is records count from above
records
array
🔁

if type
is add
uuiduuid
entity unique idzigzag64
usernamestring
xbox user idstring
platform chat idstring
build platformli32
skin dataSkin
is teacherbool
is hostbool
is remove
uuiduuid
verified

if type
Length for is add below is records count from above
is add
array
bool



Type
Enchant
Datatype

Field NameField TypeNotes
idu8
levelu8



Type
EnchantOption
Datatype

Field NameField TypeNotes
costvarint
slot flagsli32
equip enchants lengthvarint
equip enchants
array
Enchant
held enchants lengthvarint
held enchants
array
Enchant
self enchants lengthvarint
self enchants
array
Enchant
namestring
option idzigzag32



Type
Action
Datatype

Field NameField TypeNotes
Actionzigzag32 enum
0start break
1abort break
2stop break
3get updated block
4drop item
5start sleeping
6stop sleeping
7respawn
8jump
9start sprint
10stop sprint
11start sneak
12stop sneak
13creative player destroy block
14dimension change ack

sent when spawning in a different dimension to tell the server we spawned

15start glide
16stop glide
17build denied
18crack break
19change skin
20set enchatnment seed

no longer used

21swimming
22stop swimming
23start spin attack
24stop spin attack
25interact block
26predict break
27continue break
28start item use on
29stop item use on



Type
StackRequestSlotInfo
Datatype

Source and Destination point to the source slot from which Count of the item stack were taken and the destination slot to which this item was moved.

Field NameField TypeNotes
slot typeContainerSlotType

ContainerID is the ID of the container that the slot was in.

slotu8

Slot is the index of the slot within the container with the ContainerID above.

stack idzigzag32

StackNetworkID is the unique stack ID that the client assumes to be present in this slot. The server must check if these IDs match. If they do not match, servers should reject the stack request that the action holding this info was in.




Type
ItemStackRequest
Datatype

ItemStackRequest is sent by the client to change item stacks in an inventory. It is essentially a replacement of the InventoryTransaction packet added in 1.16 for inventory specific actions, such as moving items around or crafting. The InventoryTransaction packet is still used for actions such as placing blocks and interacting with entities.

Field NameField TypeNotes
request idvarint

RequestID is a unique ID for the request. This ID is used by the server to send a response for this specific request in the ItemStackResponse packet.

actions lengthvarint
actions
array
type idu8 enum
0take

TakeStackRequestAction is sent by the client to the server to take x amount of items from one slot in a container to the cursor.

1place

PlaceStackRequestAction is sent by the client to the server to place x amount of items from one slot into another slot, such as when shift clicking an item in the inventory to move it around or when moving an item in the cursor into a slot.

2swap

SwapStackRequestAction is sent by the client to swap the item in its cursor with an item present in another container. The two item stacks swap places.

3drop

DropStackRequestAction is sent by the client when it drops an item out of the inventory when it has its inventory opened. This action is not sent when a player drops an item out of the hotbar using the Q button (or the equivalent on mobile). The InventoryTransaction packet is still used for that action, regardless of whether the item stack network IDs are used or not.

4destroy

DestroyStackRequestAction is sent by the client when it destroys an item in creative mode by moving it back into the creative inventory.

5consume

ConsumeStackRequestAction is sent by the client when it uses an item to craft another item. The original item is 'consumed'.

6create

CreateStackRequestAction is sent by the client when an item is created through being used as part of a recipe. For example, when milk is used to craft a cake, the buckets are leftover. The buckets are moved to the slot sent by the client here. Note that before this is sent, an action for consuming all items in the crafting table/grid is sent. Items that are not fully consumed when used for a recipe should not be destroyed there, but instead, should be turned into their respective resulting items.

7place in container

(as of 1.18.10) Not currently used

8take out container

(as of 1.18.10) Not currently used

9lab table combine

LabTableCombineStackRequestAction is sent by the client when it uses a lab table to combine item stacks.

10beacon payment

BeaconPaymentStackRequestAction is sent by the client when it submits an item to enable effects from a beacon. These items will have been moved into the beacon item slot in advance.

11mine block

MineBlockStackRequestAction is sent by the client when it breaks a block.

12craft recipe

CraftRecipeStackRequestAction is sent by the client the moment it begins crafting an item. This is the first action sent, before the Consume and Create item stack request actions. This action is also sent when an item is enchanted. Enchanting should be treated mostly the same way as crafting, where the old item is consumed.

13craft recipe auto

AutoCraftRecipeStackRequestAction is sent by the client similarly to the CraftRecipeStackRequestAction. The only difference is that the recipe is automatically created and crafted by shift clicking the recipe book.

14craft creative

CraftCreativeStackRequestAction is sent by the client when it takes an item out fo the creative inventory. The item is thus not really crafted, but instantly created.

15optional

CraftRecipeOptionalStackRequestAction is sent when using an anvil. When this action is sent, the CustomNames field in the respective stack request is non-empty and contains the name of the item created using the anvil.

16craft grindstone request

CraftGrindstoneRecipeStackRequestAction is sent when a grindstone recipe is crafted. It contains the RecipeNetworkID to identify the recipe crafted, and the cost for crafting the recipe.

17craft loom request

CraftLoomRecipeStackRequestAction is sent when a loom recipe is crafted. It simply contains the pattern identifier to figure out what pattern is meant to be applied to the item.

18non implemented

CraftNonImplementedStackRequestAction is an action sent for inventory actions that aren't yet implemented in the new system. These include, for example, anvils.

19results deprecated

CraftResultsDeprecatedStackRequestAction is an additional, deprecated packet sent by the client after crafting. It holds the final results and the amount of times the recipe was crafted. It shouldn't be used. This action is also sent when an item is enchanted. Enchanting should be treated mostly the same way as crafting, where the old item is consumed.

🔁

if type id
is take or place
countu8
sourceStackRequestSlotInfo
destinationStackRequestSlotInfo
is swap
sourceStackRequestSlotInfo

Source and Destination point to the source slot from which Count of the item stack were taken and the destination slot to which this item was moved.

destinationStackRequestSlotInfo
is drop
countu8

Count is the count of the item in the source slot that was taken towards the destination slot.

sourceStackRequestSlotInfo

Source is the source slot from which items were dropped to the ground.

randomlybool

Randomly seems to be set to false in most cases. I'm not entirely sure what this does, but this is what vanilla calls this field.

is destroy or consume
countu8

Count is the count of the item in the source slot that was destroyed.

sourceStackRequestSlotInfo

Source is the source slot from which items came that were destroyed by moving them into the creative inventory.

is create
result slot idu8

ResultsSlot is the slot in the inventory in which the results of the crafting ingredients are to be placed.

is beacon payment
primary effectzigzag32

PrimaryEffect and SecondaryEffect are the effects that were selected from the beacon.

secondary effectzigzag32
is mine block
unknown1zigzag32

// Unknown1 … TODO: Find out what this is for

predicted durabilityzigzag32

PredictedDurability is the durability of the item that the client assumes to be present at the time

network idzigzag32

StackNetworkID is the unique stack ID that the client assumes to be present at the time. The server must check if these IDs match. If they do not match, servers should reject the stack request that the action holding this info was in.

is craft recipe or craft recipe auto
recipe network idvarint

RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as of 1.16.

is craft creative
item idvarint

The stack ID of the creative item that is being created. This is one of the creative item stack IDs sent in the CreativeContent packet.

is optional
recipe network idvarint

For the cartography table, if a certain MULTI recipe is being called, this points to the network ID that was assigned.

filtered string indexli32

Most likely the index in the request's filter strings that this action is using

is craft grindstone request
recipe network idvarint

RecipeNetworkID is the network ID of the recipe that is about to be crafted. This network ID matches one of the recipes sent in the CraftingData packet, where each of the recipes have a RecipeNetworkID as

costvarint

Cost is the cost of the recipe that was crafted.

is craft loom request
patternstring

Pattern is the pattern identifier for the loom recipe.

is non implementedvoid
is results deprecated
result items lengthvarint
result items
array
ItemLegacy
times craftedu8
custom names lengthvarint

CustomNames is a list of custom names involved in the request. This is typically filled with one string when an anvil is used.

  • Used for the server to determine which strings should be filtered. Used in anvils to verify a renamed item.
custom names
array
string



Type
ItemStackResponses
Datatype

ItemStackResponse is a response to an individual ItemStackRequest.

Field NameField TypeNotes
ItemStackResponses lengthvarint
ItemStackResponses
array
statusu8 enum
0ok

Status specifies if the request with the RequestID below was successful. If this is the case, the ContainerInfo below will have information on what slots ended up changing. If not, the container info will be empty. A non-0 status means an error occurred and will result in the action being reverted.

1error
request idvarint

RequestID is the unique ID of the request that this response is in reaction to. If rejected, the client will undo the actions from the request with this ID.

🔁

if status
is ok
containers lengthvarint

ContainerInfo holds information on the containers that had their contents changed as a result of the request.

containers
array
slot typeContainerSlotType

ContainerID is the container ID of the container that the slots that follow are in. For the main inventory, this value seems to be 0x1b. For the cursor, this value seems to be 0x3a. For the crafting grid, this value seems to be 0x0d.

  • actually, this is ContainerSlotType - used by the inventory system that specifies the type of slot
slots lengthvarint

SlotInfo holds information on what item stack should be present in specific slots in the container.

slots
array
slotu8

Slot and HotbarSlot seem to be the same value every time: The slot that was actually changed. I'm not sure if these slots ever differ.

hotbar slotu8
countu8

Count is the total count of the item stack. This count will be shown client-side after the response is sent to the client.

item stack idvarint

StackNetworkID is the network ID of the new stack at a specific slot.

custom namestring

CustomName is the custom name of the item stack. It is used in relation to text filtering.

durability correctionzigzag32

DurabilityCorrection is the current durability of the item stack. This durability will be shown client-side after the response is sent to the client.




Type
ItemComponentList
Datatype

Field NameField TypeNotes
ItemComponentList lengthvarint
ItemComponentList
array
namestring

Name is the name of the item, which is a name like 'minecraft:stick'.

nbtnbt

Data is a map containing the components and properties of the item.




Type
CommandOrigin
Datatype

Field NameField TypeNotes
typevarint enum
0player

Origin is one of the values above that specifies the origin of the command. The origin may change, depending on what part of the client actually called the command. The command may be issued by a websocket server, for example.

1block
2minecart block
3dev console
4test
5automation player
6client automation
7dedicated server
8entity
9virtual
10game argument
11entity server
12precompiled
13game director entity server
14script
15executor
uuiduuid

UUID is the UUID of the command called. This UUID is a bit odd as it is not specified by the server. It is not clear what exactly this UUID is meant to identify, but it is unique for each command called.

request idstring

RequestID is an ID that identifies the request of the client. The server should send a CommandOrigin with the same request ID to ensure it can be matched with the request by the caller of the command. This is especially important for websocket servers and it seems that this field is only non-empty for these websocket servers.

player entity id

if type
is dev console or test
player entity idzigzag64

PlayerUniqueID is an ID that identifies the player, the same as the one found in the AdventureSettings packet. Filling it out with 0 seems to work. PlayerUniqueID is only written if Origin is CommandOriginDevConsole or CommandOriginTest.




Type
TrackedObject
Datatype

MapTrackedObject is an object on a map that is 'tracked' by the client, such as an entity or a block. This object may move, which is handled client-side.

Field NameField TypeNotes
typeli32 enum
0entity

Type is the type of the tracked object. It is either MapObjectTypeEntity or MapObjectTypeBlock.

1block
entity unique id

if type
is entityzigzag64

EntityUniqueID is the unique ID of the entity, if the tracked object was an entity. It needs not to be filled out if Type is not MapObjectTypeEntity.

block position

if type
is blockBlockCoordinates

BlockPosition is the position of the block, if the tracked object was a block. It needs not to be filled out if Type is not MapObjectTypeBlock.




Type
MapDecoration
Datatype

MapDecoration is a fixed decoration on a map: Its position or other properties do not change automatically client-side.

Field NameField TypeNotes
typeu8
rotationu8

Rotation is the rotation of the map decoration. It is byte due to the 16 fixed directions that the map decoration may face.

xu8

X is the offset on the X axis in pixels of the decoration.

yu8

Y is the offset on the Y axis in pixels of the decoration.

labelstring

Label is the name of the map decoration. This name may be of any value.

color abgrvarint

Colour is the colour of the map decoration. Some map decoration types have a specific colour set automatically, whereas others may be changed.




Type
StructureBlockSettings
Datatype

Field NameField TypeNotes
palette namestring

PaletteName is the name of the palette used in the structure. Currently, it seems that this field is always 'default'.

ignore entitiesbool

IgnoreEntities specifies if the structure should ignore entities or include them. If set to false, entities will also show up in the exported structure.

ignore blocksbool

IgnoreBlocks specifies if the structure should ignore blocks or include them. If set to false, blocks will show up in the exported structure.

non ticking players and ticking areasbool
sizeBlockCoordinates

Size is the size of the area that is about to be exported. The area exported will start at the Position + Offset, and will extend as far as Size specifies.

structure offsetBlockCoordinates

Offset is the offset position that was set in the structure block. The area exported is offset by this position. TODO: This will be renamed to offset soon

last editing player unique idzigzag64

LastEditingPlayerUniqueID is the unique ID of the player that last edited the structure block that these settings concern.

rotationu8 enum
0none

Rotation is the rotation that the structure block should obtain. See the constants above for available options.

190 deg
2180 deg
3270 deg
mirroru8 enum
0none

Mirror specifies the way the structure should be mirrored. It is either no mirror at all, mirror on the x/z axis or both.

1x axis
2z axis
3both axes
animation modeu8 enum
0none
1layers
2blocks
animation durationlf32

How long the duration for this animation is

integritylf32

Integrity is usually 1, but may be set to a number between 0 and 1 to omit blocks randomly, using the Seed that follows.

seedlu32

Seed is the seed used to omit blocks if Integrity is not equal to one. If the Seed is 0, a random seed is selected to omit blocks.

pivotvec3f

Pivot is the pivot around which the structure may be rotated.




Type
EducationSharedResourceURI
Datatype

EducationSharedResourceURI is an education edition feature that is used for transmitting education resource settings to clients. It contains a button name and a link URL.

Field NameField TypeNotes
button namestring

ButtonName is the button name of the resource URI.

link uristring

LinkURI is the link URI for the resource URI.




Type
EducationExternalLinkSettings
Datatype

Field NameField TypeNotes
urlstring

URL is the external link URL.

display namestring

DisplayName is the display name in game.




Type
BlockUpdate
Datatype

Field NameField TypeNotes
positionBlockCoordinates
runtime idvarint
flagsvarint
entity unique idzigzag64

EntityUniqueID is the unique ID of the falling block entity that the block transitions to or that the entity transitions from. Note that for both possible values for TransitionType, the EntityUniqueID should point to the falling block entity involved.

transition typevarint enum



Type
TransitionType
Datatype

TransitionType is the type of the transition that happened. It is either BlockToEntityTransition, when a block placed becomes a falling entity, or EntityToBlockTransition, when a falling entity hits the ground and becomes a solid block again.

Field NameField TypeNotes
TransitionType enum
0entity

For falling sand, when a sand turns to an entity

1create

When sand turns back to a new block

2destroy



Type
MaterialReducer
Datatype

Field NameField TypeNotes
mixzigzag32
items
network idzigzag32
countzigzag32



Type
PermissionLevel
Datatype

Field NameField TypeNotes
PermissionLevelvarint enum
0visitor
1member
2operator
3custom



Type
WindowID
Datatype

List of Window IDs. When a new container is opened (container_open), a new sequential Window ID is created. Below window IDs are hard-coded and created when the game starts and the server does not send a container_open for them.

Field NameField TypeNotes
WindowIDi8 enum
-100drop contents
-24beacon
-23trading output
-22trading use inputs
-21trading input 2
-20trading input 1
-17enchant output
-16enchant material
-15enchant input
-13anvil output
-12anvil result
-11anvil material
-10container input
-5crafting use ingredient
-4crafting result
-3crafting remove ingredient
-2crafting add ingredient
-1none
0inventory
1first
100last
119offhand
120armor
121creative
122hotbar
123fixed inventory
124ui



Type
WindowIDVarint
Datatype

Field NameField TypeNotes
WindowIDVarintvarint enum
-100drop contents
-24beacon
-23trading output
-22trading use inputs
-21trading input 2
-20trading input 1
-17enchant output
-16enchant material
-15enchant input
-13anvil output
-12anvil result
-11anvil material
-10container input
-5crafting use ingredient
-4crafting result
-3crafting remove ingredient
-2crafting add ingredient
-1none
0inventory
1first
100last
119offhand
120armor
121creative
122hotbar
123fixed inventory
124ui



Type
WindowType
Datatype

Field NameField TypeNotes
WindowTypei8 enum
-9none
-1inventory
0container
1workbench
2furnace
3enchantment
4brewing stand
5anvil
6dispenser
7dropper
8hopper
9cauldron
10minecart chest
11minecart hopper
12horse
13beacon
14structure editor
15trading
16command block
17jukebox
18armor
19hand
20compound creator
21element constructor
22material reducer
23lab table
24loom
25lectern
26grindstone
27blast furnace
28smoker
29stonecutter
30cartography
31hud
32jigsaw editor
33smithing table



Type
ContainerSlotType
Datatype

Used in inventory transactions.

Field NameField TypeNotes
ContainerSlotTypeu8 enum
0anvil input
1anvil material
2anvil result
3smithing table input
4smithing table material
5smithing table result
6armor
7container
8beacon payment
9brewing input
10brewing result
11brewing fuel
12hotbar and inventory
13crafting input
14crafting output
15recipe construction
16recipe nature
17recipe items
18recipe search
19recipe search bar
20recipe equipment
21enchanting input
22enchanting lapis
23furnace fuel
24furnace ingredient
25furnace output
26horse equip
27hotbar
28inventory
29shulker
30trade ingredient1
31trade ingredient2
32trade result
33offhand
34compcreate input
35compcreate output
36elemconstruct output
37matreduce input
38matreduce output
39labtable input
40loom input
41loom dye
42loom material
43loom result
44blast furnace ingredient
45smoker ingredient
46trade2 ingredient1
47trade2 ingredient2
48trade2 result
49grindstone input
50grindstone additional
51grindstone result
52stonecutter input
53stonecutter result
54cartography input
55cartography additional
56cartography result
57barrel
58cursor
59creative output



Type
SoundType
Datatype

Field NameField TypeNotes
SoundTypevarint enum
0ItemUseOn
1Hit
2Step
3Fly
4Jump
5Break
6Place
7HeavyStep
8Gallop
9Fall
10Ambient
11AmbientBaby
12AmbientInWater
13Breathe
14Death
15DeathInWater
16DeathToZombie
17Hurt
18HurtInWater
19Mad
20Boost
21Bow
22SquishBig
23SquishSmall
24FallBig
25FallSmall
26Splash
27Fizz
28Flap
29Swim
30Drink
31Eat
32Takeoff
33Shake
34Plop
35Land
36Saddle
37Armor
38MobArmorStandPlace
39AddChest
40Throw
41Attack
42AttackNoDamage
43AttackStrong
44Warn
45Shear
46Milk
47Thunder
48Explode
49Fire
50Ignite
51Fuse
52Stare
53Spawn
54Shoot
55BreakBlock
56Launch
57Blast
58LargeBlast
59Twinkle
60Remedy
61Infect
62LevelUp
63BowHit
64BulletHit
65ExtinguishFire
66ItemFizz
67ChestOpen
68ChestClosed
69ShulkerBoxOpen
70ShulkerBoxClosed
71EnderChestOpen
72EnderChestClosed
73PowerOn
74PowerOff
75Attach
76Detach
77Deny
78Tripod
79Pop
80DropSlot
81Note
82Thorns
83PistonIn
84PistonOut
85Portal
86Water
87LavaPop
88Lava
89Burp
90BucketFillWater
91BucketFillLava
92BucketEmptyWater
93BucketEmptyLava
94ArmorEquipChain
95ArmorEquipDiamond
96ArmorEquipGeneric
97ArmorEquipGold
98ArmorEquipIron
99ArmorEquipLeather
100ArmorEquipElytra
101Record13
102RecordCat
103RecordBlocks
104RecordChirp
105RecordFar
106RecordMall
107RecordMellohi
108RecordStal
109RecordStrad
110RecordWard
111Record11
112RecordWait
113StopRecord
114Flop
115GuardianCurse
116MobWarning
117MobWarningBaby
118Teleport
119ShulkerOpen
120ShulkerClose
121Haggle
122HaggleYes
123HaggleNo
124HaggleIdle
125ChorusGrow
126ChorusDeath
127Glass
128PotionBrewed
129CastSpell
130PrepareAttackSpell
131PrepareSummon
132PrepareWololo
133Fang
134Charge
135CameraTakePicture
136LeashKnotPlace
137LeashKnotBreak
138AmbientGrowl
139AmbientWhine
140AmbientPant
141AmbientPurr
142AmbientPurreow
143DeathMinVolume
144DeathMidVolume
145ImitateBlaze
146ImitateCaveSpider
147ImitateCreeper
148ImitateElderGuardian
149ImitateEnderDragon
150ImitateEnderman
151ImitateEndermite
152ImitateEvocationIllager
153ImitateGhast
154ImitateHusk
155ImitateIllusionIllager
156ImitateMagmaCube
157ImitatePolarBear
158ImitateShulker
159ImitateSilverfish
160ImitateSkeleton
161ImitateSlime
162ImitateSpider
163ImitateStray
164ImitateVex
165ImitateVindicationIllager
166ImitateWitch
167ImitateWither
168ImitateWitherSkeleton
169ImitateWolf
170ImitateZombie
171ImitateZombiePigman
172ImitateZombieVillager
173EnderEyePlaced
174EndPortalCreated
175AnvilUse
176BottleDragonBreath
177PortalTravel
178TridentHit
179TridentReturn
180TridentRiptide1
181TridentRiptide2
182TridentRiptide3
183TridentThrow
184TridentThunder
185TridentHitGround
186Default
187FletchingTableUse
188ElemConstructOpen
189IceBombHit
190BalloonPop
191LtReactionIceBomb
192LtReactionBleach
193LtReactionElephantToothpaste
194LtReactionElephantToothpaste2
195LtReactionGlowStick
196LtReactionGlowStick2
197LtReactionLuminol
198LtReactionSalt
199LtReactionFertilizer
200LtReactionFireball
201LtReactionMagnesiumSalt
202LtReactionMiscFire
203LtReactionFire
204LtReactionMiscExplosion
205LtReactionMiscMystical
206LtReactionMiscMystical2
207LtReactionProduct
208SparklerUse
209GlowStickUse
210SparklerActive
211ConvertToDrowned
212BucketFillFish
213BucketEmptyFish
214BubbleColumnUpwards
215BubbleColumnDownwards
216BubblePop
217BubbleUpInside
218BubbleDownInside
219HurtBaby
220DeathBaby
221StepBaby
222SpawnBaby
223Born
224TurtleEggBreak
225TurtleEggCrack
226TurtleEggHatched
227LayEgg
228TurtleEggAttacked
229BeaconActivate
230BeaconAmbient
231BeaconDeactivate
232BeaconPower
233ConduitActivate
234ConduitAmbient
235ConduitAttack
236ConduitDeactivate
237ConduitShort
238Swoop
239BambooSaplingPlace
240PreSneeze
241Sneeze
242AmbientTame
243Scared
244ScaffoldingClimb
245CrossbowLoadingStart
246CrossbowLoadingMiddle
247CrossbowLoadingEnd
248CrossbowShoot
249CrossbowQuickChargeStart
250CrossbowQuickChargeMiddle
251CrossbowQuickChargeEnd
252AmbientAggressive
253AmbientWorried
254CantBreed
255ShieldBlock
256LecternBookPlace
257GrindstoneUse
258Bell
259CampfireCrackle
260Roar
261Stun
262SweetBerryBushHurt
263SweetBerryBushPick
264CartographyTableUse
265StonecutterUse
266ComposterEmpty
267ComposterFill
268ComposterFillLayer
269ComposterReady
270BarrelOpen
271BarrelClose
272RaidHorn
273LoomUse
274AmbientInRaid
275UicartographyTableUse
276UistonecutterUse
277UiloomUse
278SmokerUse
279BlastFurnaceUse
280SmithingTableUse
281Screech
282Sleep
283FurnaceUse
284MooshroomConvert
285MilkSuspiciously
286Celebrate
287JumpPrevent
288AmbientPollinate
289BeehiveDrip
290BeehiveEnter
291BeehiveExit
292BeehiveWork
293BeehiveShear
294HoneybottleDrink
295AmbientCave
296Retreat
297ConvertToZombified
298Admire
299StepLava
300Tempt
301Panic
302Angry
303AmbientMoodWarpedForest
304AmbientMoodSoulsandValley
305AmbientMoodNetherWastes
306AmbientMoodBasaltDeltas
307AmbientMoodCrimsonForest
308RespawnAnchorCharge
309RespawnAnchorDeplete
310RespawnAnchorSetSpawn
311RespawnAnchorAmbient
312SoulEscapeQuiet
313SoulEscapeLoud
314RecordPigstep
315LinkCompassToLodestone
316UseSmithingTable
317EquipNetherite
318AmbientLoopWarpedForest
319AmbientLoopSoulsandValley
320AmbientLoopNetherWastes
321AmbientLoopBasaltDeltas
322AmbientLoopCrimsonForest
323AmbientAdditionWarpedForest
324AmbientAdditionSoulsandValley
325AmbientAdditionNetherWastes
326AmbientAdditionBasaltDeltas
327AmbientAdditionCrimsonForest
328SculkSensorPowerOn
329SculkSensorPowerOff
330BucketFillPowderSnow
331BucketEmptyPowderSnow
332PointedDripstoneCauldronDripWater
333PointedDripstoneCauldronDripLava
334PointedDripstoneDripWater
335PointedDripstoneDripLava
336CaveVinesPickBerries
337BigDripleafTiltDown
338BigDripleafTiltUp
339CopperWaxOn
340CopperWaxOff
341Scrape
342PlayerHurtDrown
343PlayerHurtOnFire
344PlayerHurtFreeze
345UseSpyglass
346StopUsingSpyglass
347AmethystBlockChime
348AmbientScreamer
349HurtScreamer
350DeathScreamer
351MilkScreamer
352JumpToBlock
353PreRam
354PreRamScreamer
355RamImpact
356RamImpactScreamer
357SquidInkSquirt
358GlowSquidInkSquirt
359ConvertToStray
360CakeAddCandle
361ExtinguishCandle
362AmbientCandle
363BlockClick
364BlockClickFail
365SculkCatalystBloom
366SculkShriekerShriek
367WardenNearbyClose
368WardenNearbyCloser
369WardenNearbyClosest
370WardenSlightlyAngry
371RecordOtherside
372Tongue
373CrackIronGolem
374RepairIronGolem
375Listening
376Heartbeat
377HornBreak
378SculkPlace
379SculkSpread
380SculkCharge
381SculkSensorPlace
382SculkShriekerPlace
383goat call 0
384goat call 1
385goat call 2
386goat call 3
387goat call 4
388goat call 5
389goat call 6
390goat call 7
391goat call 8
392goat call 9
393goat harmony 0
394goat harmony 1
395goat harmony 2
396goat harmony 3
397goat harmony 4
398goat harmony 5
399goat harmony 6
400goat harmony 7
401goat harmony 8
402goat harmony 9
403goat melody 0
404goat melody 1
405goat melody 2
406goat melody 3
407goat melody 4
408goat melody 5
409goat melody 6
410goat melody 7
411goat melody 8
412goat melody 9
413goat bass 0
414goat bass 1
415goat bass 2
416goat bass 3
417goat bass 4
418goat bass 5
419goat bass 6
420goat bass 7
421goat bass 8
422goat bass 9
423_
424_
425_
426ImitateWarden
427ListeningAngry
428ItemGiven
429ItemTaken
430Disappeared
431Reappeared
432_
433FrogspawnHatched
434LaySpawn
435FrogspawnBreak
436SonicBoom
437SonicCharge
438SoundeventItemThrown
439Record5
440ConvertToFrog
441Undefined



Type
LegacyEntityType
Datatype

TODO: remove?

Field NameField TypeNotes
LegacyEntityTypeli32 enum
10chicken
11cow
12pig
13sheep
14wolf
15villager
16mooshroom
17squid
18rabbit
19bat
20iron golem
21snow golem
22ocelot
23horse
24donkey
25mule
26skeleton horse
27zombie horse
28polar bear
29llama
30parrot
31dolphin
32zombie
33creeper
34skeleton
35spider
36zombie pigman
37slime
38enderman
39silverfish
40cave spider
41ghast
42magma cube
43blaze
44zombie villager
45witch
46stray
47husk
48wither skeleton
49guardian
50elder guardian
51npc
52wither
53ender dragon
54shulker
55endermite
56agent
57vindicator
58phantom
61armor stand
62tripod camera
63player
64item
65tnt
66falling block
67moving block
68xp bottle
69xp orb
70eye of ender signal
71ender crystal
72fireworks rocket
73thrown trident
74turtle
75cat
76shulker bullet
77fishing hook
78chalkboard
79dragon fireball
80arrow
81snowball
82egg
83painting
84minecart
85fireball
86splash potion
87ender pearl
88leash knot
89wither skull
90boat
91wither skull dangerous
93lightning bolt
94small fireball
95area effect cloud
96hopper minecart
97tnt minecart
98chest minecart
100command block minecart
101lingering potion
102llama spit
103evocation fang
104evocation illager
105vex
106ice bomb
107balloon
108pufferfish
109salmon
110drowned
111tropicalfish
112cod
113panda



Type
DeviceOS
Datatype

Field NameField TypeNotes



Login Sequence

The login process is as follows:

1
packet login
Serverbound

Field NameField TypeNotes
protocol versioni32

Protocol version (Big Endian!)

tokens["encapsulated", { "lengthType": "varint", "type": "LoginTokens" }]



Type
LoginTokens
Datatype

Field NameField TypeNotes
identityLittleString

JSON array of JWT data: contains the display name, UUID and XUID It should be signed by the Mojang public key

clientLittleString

Skin related data




2
packet play status
Clientbound

Field NameField TypeNotes
statusi32 enum
0login success

Sent after Login has been successfully decoded and the player has logged in

1failed client

Displays "Could not connect: Outdated client!"

2failed spawn

Displays "Could not connect: Outdated server!"

3player spawn

Sent after world data to spawn the player

4failed invalid tenant

Displays "Unable to connect to world. Your school does not have access to this server."

5failed vanilla edu

Displays "The server is not running Minecraft: Education Edition. Failed to connect."

6failed edu vanilla

Displays "The server is running an incompatible edition of Minecraft. Failed to connect."

7failed server full

Displays "Wow this server is popular! Check back later to see if space opens up. Server Full"




3
packet server to client handshake
Clientbound

Field NameField TypeNotes
tokenstring

Contains the salt to complete the Diffie-Hellman key exchange




4
packet client to server handshake
Serverbound

Sent by the client in response to a Server To Client Handshake packet sent by the server. It is the first encrypted packet in the login handshake and serves as a confirmation that encryption is correctly initialized client side. It has no fields.

Field NameField TypeNotes



5
packet disconnect
Clientbound

Sent by the server to disconnect a client.

Field NameField TypeNotes
hide disconnect reasonbool

Specifies if the disconnection screen should be hidden when the client is disconnected, meaning it will be sent directly to the main menu.

messagestring

An optional message to show when disconnected.




6
packet resource packs info
Clientbound

Field NameField TypeNotes
must acceptbool

If the resource pack requires the client accept it.

has scriptsbool

If scripting is enabled.

force server packsbool

ForcingServerPacks is currently an unclear field.

behaviour packsBehaviourPackInfos

A list of behaviour packs that the client needs to download before joining the server. All of these behaviour packs will be applied together.

texture packsTexturePackInfos

A list of resource packs that the client needs to download before joining the server. The order of these resource packs is not relevant in this packet. It is however important in the Resource Pack Stack packet.




7
packet resource pack stack
Clientbound

Field NameField TypeNotes
must acceptbool

If the resource pack must be accepted for the player to join the server.

behavior packsResourcePackIdVersions

[inline]

resource packsResourcePackIdVersions

[inline]

game versionstring
experimentsExperiments
experiments previously usedbool



8
packet resource pack client response
Serverbound

Field NameField TypeNotes
response statusu8 enum
0none
1refused
2send packs
3have all packs
4completed
resourcepackidsResourcePackIds

All of the pack IDs.




9
packet text
Bidirectional

Sent by the client to the server to send chat messages, and by the server to the client to forward or send messages, which may be chat, popups, tips etc.

Field NameField TypeNotes
typeu8 enum
0raw

TextType is the type of the text sent. When a client sends this to the server, it should always be TextTypeChat. If the server sends it, it may be one of the other text types above.

1chat
2translation
3popup
4jukebox popup
5tip
6system
7whisper
8announcement
9json whisper
10json
needs translationbool

NeedsTranslation specifies if any of the messages need to be translated. It seems that where % is found in translatable text types, these are translated regardless of this bool. Translatable text types include TextTypeTip, TextTypePopup and TextTypeJukeboxPopup.

🔁

if type
is chat or whisper or announcement
source namestring
messagestring
is raw or tip or system or json whisper or json
messagestring
is translation or popup or jukebox popup
messagestring
parameters lengthvarint
parameters
array
string
xuidstring

The XUID of the player who sent this message.

platform chat idstring

PlatformChatID is an identifier only set for particular platforms when chatting (presumably only for Nintendo Switch). It is otherwise an empty string, and is used to decide which players are able to chat with each other.




10
packet set time
Clientbound

For additional information and examples of all the chat types above, see here: https://imgur.com/a/KhcFscg Sent by the server to update the current time client-side. The client actually advances time client-side by itself, so this packet does not need to be sent each tick. It is merely a means of synchronizing time between server and client.

Field NameField TypeNotes
timezigzag32

Time is the current time. The time is not limited to 24000 (time of day), but continues progressing after that.




11
packet start game
Clientbound

Sent by the server to send information about the world the player will be spawned in.

Field NameField TypeNotes
entity idzigzag64

The unique ID of the player. The unique ID is a value that remains consistent across different sessions of the same world, but most unofficial servers simply fill the runtime ID of the entity out for this field.

runtime entity idvarint64

The runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

player gamemodeGameMode

PlayerGameMode is the game mode the player currently has. It is a value from 0-4, with 0 being survival mode, 1 being creative mode, 2 being adventure mode, 3 being survival spectator and 4 being creative spectator. This field may be set to 5 to make the client fall back to the game mode set in the WorldGameMode field.

player positionvec3f

The spawn position of the player in the world. In servers this is often the same as the world's spawn position found below.

rotationvec2f

The pitch and yaw of the player

seedlu64

The seed used to generate the world.

biome typeli16
biome namestring
dimensionzigzag32 enum
0overworld

Dimension is the ID of the dimension that the player spawns in. It is a value from 0-2, with 0 being the overworld, 1 being the nether and 2 being the end.

1nether
2end
generatorzigzag32

Generator is the generator used for the world. It is a value from 0-4, with 0 being old limited worlds, 1 being infinite worlds, 2 being flat worlds, 3 being nether worlds and 4 being end worlds. A value of 0 will actually make the client stop rendering chunks you send beyond the world limit.

world gamemodeGameMode

The world game mode that a player gets when it first spawns in the world. It is shown in the settings and is used if the Player Gamemode is set to 5.

difficultyzigzag32

Difficulty is the difficulty of the world. It is a value from 0-3, with 0 being peaceful, 1 being easy, 2 being normal and 3 being hard.

spawn positionBlockCoordinates

The block on which the world spawn of the world. This coordinate has no effect on the place that the client spawns, but it does have an effect on the direction that a compass poInts.

achievements disabledbool

Defines if achievements are disabled in the world. The client crashes if this value is set to true while the player's or the world's game mode is creative, and it's recommended to simply always set this to false as a server.

day cycle stop timezigzag32

The time at which the day cycle was locked if the day cycle is disabled using the respective game rule. The client will maIntain this time as Boolean as the day cycle is disabled.

edu offerzigzag32

Some Minecraft: Education Edition field that specifies what 'region' the world was from, with 0 being None, 1 being RestOfWorld, and 2 being China. The actual use of this field is unknown.

edu features enabledbool

Specifies if the world has education edition features enabled, such as the blocks or entities specific to education edition.

edu product uuidstring
rain levellf32

The level specifying the Intensity of the rain falling. When set to 0, no rain falls at all.

lightning levellf32
has confirmed platform locked contentbool

The level specifying the Intensity of the thunder. This may actually be set independently from the rain level, meaning dark clouds can be produced without rain.

is multiplayerbool

Specifies if the world is a multi-player game. This should always be set to true for servers.

broadcast to lanbool

Specifies if LAN broadcast was Intended to be enabled for the world.

xbox live broadcast modevarint

The mode used to broadcast the joined game across XBOX Live.

platform broadcast modevarint

The mode used to broadcast the joined game across the platform.

enable commandsbool

If commands are enabled for the player. It is recommended to always set this to true on the server, as setting it to false means the player cannot, under any circumstance, use a command.

is texturepacks requiredbool

Specifies if the texture pack the world might hold is required, meaning the client was forced to download it before joining.

gamerulesGameRules

Defines game rules currently active with their respective values. The value of these game rules may be either 'bool', 'Int32' or 'Float32'. Some game rules are server side only, and don't necessarily need to be sent to the client.

experimentsExperiments
experiments previously usedbool
bonus chestbool

Specifies if the world had the bonus map setting enabled when generating it. It does not have any effect client-side.

map enabledbool

Specifies if the world has the start with map setting enabled, meaning each joining player obtains a map. This should always be set to false, because the client obtains a map all on its own accord if this is set to true.

permission levelzigzag32

The permission level of the player. It is a value from 0-3, with 0 being visitor, 1 being member, 2 being operator and 3 being custom.

server chunk tick rangeli32

The radius around the player in which chunks are ticked. Most servers set this value to a fixed number, as it does not necessarily affect anything client-side.

has locked behavior packbool

Specifies if the texture pack of the world is locked, meaning it cannot be disabled from the world. This is typically set for worlds on the marketplace that have a dedicated texture pack.

has locked resource packbool

Specifies if the texture pack of the world is locked, meaning it cannot be disabled from the world. This is typically set for worlds on the marketplace that have a dedicated texture pack.

is from locked world templatebool

Specifies if the world from the server was from a locked world template. For servers this should always be set to false.

msa gamertags onlybool
is from world templatebool

Specifies if the world from the server was from a locked world template. For servers this should always be set to false.

is world template option lockedbool

Specifies if the world was a template that locks all settings that change properties above in the settings GUI. It is recommended to set this to true for servers that do not allow things such as setting game rules through the GUI.

only spawn v1 villagersbool

A hack that Mojang put in place to preserve backwards compatibility with old villagers. The his never actually read though, so it has no functionality.

game versionstring

The version of the game from which Vanilla features will be used. The exact function of this field isn't clear.

limited world widthli32
limited world lengthli32
is new netherbool
edu resource uriEducationSharedResourceURI
experimental gameplay overridebool
level idstring

A base64 encoded world ID that is used to identify the world.

world namestring

The name of the world that the player is joining. Note that this field shows up above the player list for the rest of the game session, and cannot be changed. Setting the server name to this field is recommended.

premium world template idstring

A UUID specific to the premium world template that might have been used to generate the world. Servers should always fill out an empty String for this.

is trialbool

Specifies if the world was a trial world, meaning features are limited and there is a time limit on the world.

movement authorityzigzag32 enum
0client

MovementType specifies the way the server handles player movement. Available options are packet.AuthoritativeMovementModeClient, packet.AuthoritativeMovementModeServer and packet.AuthoritativeMovementModeServerWithRewind, where server the server authoritative types result in the client sending PlayerAuthInput packets instead of MovePlayer packets and the rewind mode requires sending the tick of movement and several actions. Specifies if the client or server is authoritative over the movement of the player, meaning it controls the movement of it.

1server
2server with rewind

PlayerAuthInputPacket + a bunch of junk that solves a nonexisting problem

rewind history sizezigzag32

RewindHistorySize is the amount of history to keep at maximum if MovementType is packet.AuthoritativeMovementModeServerWithRewind.

server authoritative block breakingbool

ServerAuthoritativeBlockBreaking specifies if block breaking should be sent through packet.PlayerAuthInput or not. This field is somewhat redundant as it is always enabled if MovementType is packet.AuthoritativeMovementModeServer or packet.AuthoritativeMovementModeServerWithRewind

current tickli64

The total time in ticks that has elapsed since the start of the world.

enchantment seedzigzag32

The seed used to seed the random used to produce enchantments in the enchantment table. Note that the exact correct random implementation must be used to produce the correct results both client- and server-side.

block propertiesBlockProperties

BlockProperties is a list of all the custom blocks registered on the server.

itemstatesItemstates

A list of all items with their legacy IDs which are available in the game. Failing to send any of the items that are in the game will crash mobile clients.

multiplayer correlation idstring

A unique ID specifying the multi-player session of the player. A random UUID should be filled out for this field.

server authoritative inventorybool

ServerAuthoritativeInventory specifies if the server authoritative inventory system is enabled. This is a new system introduced in 1.16. Backwards compatibility with the inventory transactions has to some extent been preserved, but will eventually be removed.

enginestring

The server's engine version, used for telemetry

property datanbt

PropertyData contains properties that should be applied on the player. These properties are the same as the ones that are sent in the SyncActorProperty packet.

block pallette checksumlu64

A checksum to ensure block types between the server and client match

world template iduuid

WorldTemplateID is a UUID that identifies the template that was used to generate the world. Servers that do not use a world based off of a template can set this to an empty UUID.




12
packet add player
Clientbound

Field NameField TypeNotes
uuiduuid

UUID is the UUID of the player. It is the same UUID that the client sent in the Login packet at the start of the session. A player with this UUID must exist in the player list (built up using the Player List packet) for it to show up in-game.

usernamestring

Username is the name of the player. This username is the username that will be set as the initial name tag of the player.

unique entity idzigzag64

The unique ID of the player. The unique ID is a value that remains consistent across different sessions of the same world, but most unoffical servers simply fill the runtime ID of the player out for this field.

runtime entity idvarint64

The runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

platform chat idstring

An identifier only set for particular platforms when chatting (presumably only for Nintendo Switch). It is otherwise an empty string, and is used to decide which players are able to chat with each other.

positionvec3f
velocityvec3f
pitchlf32
yawlf32
head yawlf32
held itemItem
gamemodeGameMode
metadataMetadataDictionary
flagsvarint
command permissionvarint
action permissionsvarint
permission levelvarint
custom stored permissionsvarint
user idli64
linksLinks
device idstring
device osDeviceOS



13
packet add entity
Clientbound

Field NameField TypeNotes
entity id selfzigzag64
runtime entity idvarint64
entity typestring
positionvec3f
velocityvec3f
pitchlf32
yawlf32
head yawlf32
attributesEntityAttributes
metadataMetadataDictionary
linksLinks



14
packet remove entity
Clientbound

Field NameField TypeNotes
entity id selfzigzag64



15
packet add item entity
Clientbound

Field NameField TypeNotes
entity id selfzigzag64
runtime entity idvarint64
itemItem
positionvec3f
velocityvec3f
metadataMetadataDictionary
is from fishingbool



17
packet take item entity
Clientbound

Field NameField TypeNotes
runtime entity idvarint64
targetvarint



18
packet move entity
Bidirectional

MoveActorAbsolute is sent by the server to move an entity to an absolute position. It is typically used for movements where high accuracy isn't needed, such as for long range teleporting.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the runtime ID of the entity. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

flagsu8

Flags is a combination of flags that specify details of the movement. It is a combination of the flags above.

positionvec3f

Position is the position to spawn the entity on. If the entity is on a distance that the player cannot see it, the entity will still show up if the player moves closer.

rotationRotation

Rotation is a Vec3 holding the X, Y and Z rotation of the entity after the movement. This is a Vec3 for the reason that projectiles like arrows don't have yaw/pitch, but do have roll.




19
packet move player
Bidirectional

MovePlayer is sent by players to send their movement to the server, and by the server to update the movement of player entities to other players.

Field NameField TypeNotes
runtime idvarint

EntityRuntimeID is the runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

positionvec3f

Position is the position to spawn the player on. If the player is on a distance that the viewer cannot see it, the player will still show up if the viewer moves closer.

pitchlf32

Pitch is the vertical rotation of the player. Facing straight forward yields a pitch of 0. Pitch is measured in degrees.

yawlf32

Yaw is the horizontal rotation of the player. Yaw is also measured in degrees

head yawlf32

HeadYaw is the same as Yaw, except that it applies specifically to the head of the player. A different value for HeadYaw than Yaw means that the player will have its head turned

modeu8 enum
0normal

Mode is the mode of the movement. It specifies the way the player's movement should be shown to other players. It is one of the constants below.

1reset
2teleport
3rotation
on groundbool

OnGround specifies if the player is considered on the ground. Note that proxies or hacked clients could fake this to always be true, so it should not be taken for granted.

ridden runtime idvarint

RiddenEntityRuntimeID is the runtime ID of the entity that the player might currently be riding. If not riding, this should be left 0.

teleport

if mode
is teleport
causeli32 enum
0unknown

TeleportCause is written only if Mode is MoveModeTeleport. It specifies the cause of the teleportation, which is one of the constants above.

1projectile
2chorus fruit
3command
4behavior
source entity typeLegacyEntityType

TeleportSourceEntityType is the entity type that caused the teleportation, for example an ender pearl. TODO: is this still a integer and not a string?

tickvarint64



20
packet rider jump
Bidirectional

Field NameField TypeNotes
jump strengthzigzag32



21
packet update block
Clientbound

UpdateBlock is sent by the server to update a block client-side, without resending the entire chunk that the block is located in. It is particularly useful for small modifications like block breaking/placing.

Field NameField TypeNotes
positionBlockCoordinates

Position is the block position at which a block is updated.

block runtime idvarint

NewBlockRuntimeID is the runtime ID of the block that is placed at Position after sending the packet to the client.

flagsUpdateBlockFlags

Flags is a combination of flags that specify the way the block is updated client-side. It is a combination of the flags above, but typically sending only the BlockUpdateNetwork flag is sufficient.

layervarint

Layer is the world layer on which the block is updated. For most blocks, this is the first layer, as that layer is the default layer to place blocks on, but for blocks inside of each other, this differs.




22
packet add painting
Clientbound

Field NameField TypeNotes
entity id selfzigzag64
runtime entity idvarint64
coordinatesvec3f
directionzigzag32
titlestring



23
packet tick sync
Bidirectional

TickSync is sent by the client and the server to maintain a synchronized, server-authoritative tick between the client and the server. The client sends this packet first, and the server should reply with another one of these packets, including the response time.

Field NameField TypeNotes
request timeli64

ClientRequestTimestamp is the timestamp on which the client sent this packet to the server. The server should fill out that same value when replying. The ClientRequestTimestamp is always 0

response timeli64

ServerReceptionTimestamp is the timestamp on which the server received the packet sent by the client. When the packet is sent by the client, this value is 0. ServerReceptionTimestamp is generally the current tick of the server. It isn't an actual timestamp, as the field implies




24
packet level sound event old
Bidirectional

Field NameField TypeNotes
sound idu8
positionvec3f
block idzigzag32
entity typezigzag32
is baby mobbool
is globalbool



25
packet level event
Clientbound

Field NameField TypeNotes
eventzigzag32 enum
1000sound click
1001sound click fail
1002sound shoot
1003sound door
1004sound fizz
1005sound ignite
1007sound ghast
1008sound ghast shoot
1009sound blaze shoot
1010sound door bump
1012sound door crash
1018sound enderman teleport
1020sound anvil break
1021sound anvil use
1022sound anvil fall
1030sound pop
1032sound portal
1040sound itemframe add item
1041sound itemframe remove
1042sound itemframe place
1043sound itemframe remove item
1044sound itemframe rotate item
1050sound camera
1051sound orb
1052sound totem
1060sound armor stand break
1061sound armor stand hit
1062sound armor stand fall
1063sound armor stand place
1064pointed dripstone land
1065dye used
1066ink sack used
2000particle shoot
2001particle destroy
2002particle splash
2003particle eye despawn
2004particle spawn
2005particle crop growth
2006particle guardian curse
2007particle death smoke
2008particle block force field
2009particle projectile hit
2010particle dragon egg teleport
2011particle crop eaten
2012particle critical
2013particle enderman teleport
2014particle punch block
2015particle bubble
2016particle evaporate
2017particle destroy armor stand
2018particle breaking egg
2019particle destroy egg
2020particle evaporate water
2021particle destroy block no sound
2022particle knockback roar
2023particle teleport trail
2024particle point cloud
2025particle explosion
2026particle block explosion
2027particle vibration signal
2028particle dripstone drip
2029particle fizz effect
2030particle wax on
2031particle wax off
2032particle scrape
2033particle electric spark
2034particle turtle egg
2035particle sculk shriek
2036sculk catalyst bloom
2037sculk charge
2038sculk charge pop
2039sonic explosion
3001start rain
3002start thunder
3003stop rain
3004stop thunder
3005pause game
3006pause game no screen
3007set game speed
3500redstone trigger
3501cauldron explode
3502cauldron dye armor
3503cauldron clean armor
3504cauldron fill potion
3505cauldron take potion
3506cauldron fill water
3507cauldron take water
3508cauldron add dye
3509cauldron clean banner
3600block start break
3601block stop break
4000set data
9800players sleeping
9801sleeping players
16384add particle mask
16385add particle bubble

0x4000 | + particle ID

16386add particle bubble manual
16387add particle critical
16388add particle block force field
16389add particle smoke
16390add particle explode
16391add particle evaporation
16392add particle flame
16393add particle candle flame
16394add particle lava
16395add particle large smoke
16396add particle redstone
16397add particle rising red dust
16398add particle item break
16399add particle snowball poof
16400add particle huge explode
16401add particle huge explode seed
16402add particle mob flame
16403add particle heart
16404add particle terrain
16405add particle town aura
16406add particle portal
16408add particle water splash
16409add particle water splash manual
16410add particle water wake
16411add particle drip water
16412add particle drip lava
16413add particle drip honey
16414add particle stalactite drip water
16415add particle stalactite drip lava
16416add particle falling dust
16417add particle mob spell
16418add particle mob spell ambient
16419add particle mob spell instantaneous
16420add particle ink
16421add particle slime
16422add particle rain splash
16423add particle villager angry
16424add particle villager happy
16425add particle enchantment table
16426add particle tracking emitter
16427add particle note
16428add particle witch spell
16429add particle carrot
16430add particle mob appearance
16431add particle end rod
16432add particle dragons breath
16433add particle spit
16434add particle totem
16435add particle food
16436add particle fireworks starter
16437add particle fireworks spark
16438add particle fireworks overlay
16439add particle balloon gas
16440add particle colored flame
16441add particle sparkler
16442add particle conduit
16443add particle bubble column up
16444add particle bubble column down
16445add particle sneeze
16446add particle shulker bullet
16447add particle bleach
16448add particle dragon destroy block
16449add particle mycelium dust
16450add particle falling red dust
16451add particle campfire smoke
16452add particle tall campfire smoke
16453add particle dragon breath fire
16454add particle dragon breath trail
16455add particle blue flame
16456add particle soul
16457add particle obsidian tear
16458add particle portal reverse
16459add particle snowflake
16460add particle vibration signal
16461add particle sculk sensor redstone
16462add particle spore blossom shower
16463add particle spore blossom ambient
16464add particle wax
16465add particle electric spark
positionvec3f
datazigzag32



26
packet block event
Clientbound

Field NameField TypeNotes
positionBlockCoordinates

Position is the position of the block that an event occurred at.

typezigzag32 enum
0sound

EventType is the type of the block event. The event type decides the way the event data that follows is used

1change state
datazigzag32

EventData holds event type specific data. For chests for example, opening the chest means the data must be 1




27
packet entity event
Bidirectional

Field NameField TypeNotes
runtime entity idvarint64
event idu8 enum
1jump
2hurt animation
3death animation
4arm swing
5stop attack
6tame fail
7tame success
8shake wet
9use item
10eat grass animation
11fish hook bubble
12fish hook position
13fish hook hook
14fish hook tease
15squid ink cloud
16zombie villager cure
18respawn
19iron golem offer flower
20iron golem withdraw flower
21love particles
22villager angry
23villager happy
24witch spell particles
25firework particles
26in love particles
27silverfish spawn animation
28guardian attack
29witch drink potion
30witch throw potion
31minecart tnt prime fuse
32creeper prime fuse
33air supply expired
34player add xp levels
35elder guardian curse
36agent arm swing
37ender dragon death
38dust particles
39arrow shake
57eating item
60baby animal feed
61death smoke cloud
62complete trade
63remove leash
64caravan
65consume totem
66player check treasure hunter achievement
67entity spawn
68dragon puke
69item entity merge
70start swim
71balloon pop
72treasure hunt
73agent summon
74charged crossbow
75fall
76grow up
77vibration detected
datazigzag32



28
packet mob effect
Clientbound

Field NameField TypeNotes
runtime entity idvarint64
event idu8
effect idzigzag32
amplifierzigzag32
particlesbool
durationzigzag32



29
packet update attributes
Clientbound

Field NameField TypeNotes
runtime entity idvarint64
attributesPlayerAttributes
tickvarint64



30
packet inventory transaction
Bidirectional

InventoryTransaction is a packet sent by the client. It essentially exists out of multiple sub-packets, each of which have something to do with the inventory in one way or another. Some of these sub-packets directly relate to the inventory, others relate to interaction with the world, that could potentially result in a change in the inventory.

Field NameField TypeNotes
transactionTransaction



31
packet mob equipment
Bidirectional

Field NameField TypeNotes
runtime entity idvarint64
itemItem
slotu8
selected slotu8
window idWindowID



32
packet mob armor equipment
Bidirectional

Field NameField TypeNotes
runtime entity idvarint64
helmetItem
chestplateItem
leggingsItem
bootsItem



33
packet interact
Bidirectional

Interact is sent by the client when it interacts with another entity in some way. It used to be used for normal entity and block interaction, but this is no longer the case now.

Field NameField TypeNotes
action idu8 enum
3leave vehicle

Action type is the ID of the action that was executed by the player. It is one of the constants that may be found above.

4mouse over entity
6open inventory
target entity idvarint64

TargetEntityRuntimeID is the runtime ID of the entity that the player interacted with. This is empty for the InteractActionOpenInventory action type.

position

if action id
is mouse over entity or leave vehiclevec3f

Position associated with the ActionType above. For the InteractActionMouseOverEntity, this is the position relative to the entity moused over over which the player hovered with its mouse/touch. For the InteractActionLeaveVehicle, this is the position that the player spawns at after leaving the vehicle.




34
packet block pick request
Serverbound

Field NameField TypeNotes
xzigzag32
yzigzag32
zzigzag32
add user databool
selected slotu8



35
packet entity pick request
Serverbound

Field NameField TypeNotes
runtime entity idlu64
selected slotu8
with databool

WithData is true if the pick request requests the entity metadata.




36
packet player action
Serverbound

PlayerAction is sent by the client when it executes any action, for example starting to sprint, swim, starting the breaking of a block, dropping an item, etc.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the runtime ID of the player. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

actionAction

ActionType is the ID of the action that was executed by the player. It is one of the constants that may be found above.

positionBlockCoordinates

BlockPosition is the position of the target block, if the action with the ActionType set concerned a block. If that is not the case, the block position will be zero.

result positionBlockCoordinates

ResultPosition is the position of the action's result. When a UseItemOn action is sent, this is the position of the block clicked, but when a block is placed, this is the position at which the block will be placed.

facezigzag32

BlockFace is the face of the target block that was touched. If the action with the ActionType set concerned a block. If not, the face is always 0.




38
packet hurt armor
Clientbound

Field NameField TypeNotes
causezigzag32
damagezigzag32
armor slotszigzag64



39
packet set entity data
Bidirectional

Field NameField TypeNotes
runtime entity idvarint64
metadataMetadataDictionary
tickvarint64



40
packet set entity motion
Bidirectional

SetActorMotion is sent by the server to change the client-side velocity of an entity. It is usually used in combination with server-side movement calculation.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the runtime ID of the entity. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

velocityvec3f

Velocity is the new velocity the entity gets. This velocity will initiate the client-side movement of the entity.





SetActorLink is sent by the server to initiate an entity link client-side, meaning one entity will start riding another.

Field NameField TypeNotes
linkLink



42
packet set health
Clientbound

Field NameField TypeNotes
healthzigzag32



43
packet set spawn position
Clientbound

Field NameField TypeNotes
spawn typezigzag32 enum
0player
1world
player positionBlockCoordinates
dimensionzigzag32
world positionBlockCoordinates



44
packet animate
Bidirectional

Field NameField TypeNotes
action idzigzag32 enum
0none
1swing arm
2unknown
3wake up
4critical hit
5magic critical hit
128row right
129row left
runtime entity idvarint64
🔁

if action id
is row right or row left
boat rowing timelf32



45
packet respawn
Bidirectional

Field NameField TypeNotes
positionvec3f
stateu8
runtime entity idvarint64



46
packet container open
Clientbound

ContainerOpen is sent by the server to open a container client-side. This container must be physically present in the world, for the packet to have any effect. Unlike Java Edition, Bedrock Edition requires that chests for example must be present and in range to open its inventory.

Field NameField TypeNotes
window idWindowID

WindowID is the ID representing the window that is being opened. It may be used later to close the container using a ContainerClose packet.

window typeWindowType

ContainerType is the type ID of the container that is being opened when opening the container at the position of the packet. It depends on the block/entity, and could, for example, be the window type of a chest or a hopper, but also a horse inventory.

coordinatesBlockCoordinates

ContainerPosition is the position of the container opened. The position must point to a block entity that actually has a container. If that is not the case, the window will not be opened and the packet will be ignored, if a valid ContainerEntityUniqueID has not also been provided.

runtime entity idzigzag64

ContainerEntityUniqueID is the unique ID of the entity container that was opened. It is only used if the ContainerType is one that points to an entity, for example a horse.




47
packet container close
Bidirectional

ContainerClose is sent by the server to close a container the player currently has opened, which was opened using the ContainerOpen packet, or by the client to tell the server it closed a particular container, such as the crafting grid.

Field NameField TypeNotes
window idWindowID

WindowID is the ID representing the window of the container that should be closed. It must be equal to the one sent in the ContainerOpen packet to close the designated window.

serverbool

ServerSide determines whether or not the container was force-closed by the server. If this value is not set correctly, the client may ignore the packet and respond with a PacketViolationWarning.




48
packet player hotbar
Bidirectional

PlayerHotBar is sent by the server to the client. It used to be used to link hot bar slots of the player to actual slots in the inventory, but as of 1.2, this was changed and hot bar slots are no longer a free floating part of the inventory. Since 1.2, the packet has been re-purposed, but its new functionality is not clear.

Field NameField TypeNotes
selected slotvarint
window idWindowID
select slotbool



49
packet inventory content
Bidirectional

InventoryContent is sent by the server to update the full content of a particular inventory. It is usually sent for the main inventory of the player, but also works for other inventories that are currently opened by the player.

Field NameField TypeNotes
window idWindowIDVarint

WindowID is the ID that identifies one of the windows that the client currently has opened, or one of the consistent windows such as the main inventory.

inputItemStacks

Content is the new content of the inventory. The length of this slice must be equal to the full size of the inventory window updated.




50
packet inventory slot
Bidirectional

InventorySlot is sent by the server to update a single slot in one of the inventory windows that the client currently has opened. Usually this is the main inventory, but it may also be the off hand or, for example, a chest inventory.

Field NameField TypeNotes
window idWindowIDVarint

WindowID is the ID of the window that the packet modifies. It must point to one of the windows that the client currently has opened.

slotvarint

Slot is the index of the slot that the packet modifies. The new item will be set to the slot at this index.

itemItem

NewItem is the item to be put in the slot at Slot. It will overwrite any item that may currently be present in that slot.




51
packet container set data
Clientbound

ContainerSetData is sent by the server to update specific data of a single container, meaning a block such as a furnace or a brewing stand. This data is usually used by the client to display certain features client-side.

Field NameField TypeNotes
window idWindowID

WindowID is the ID of the window that should have its data set. The player must have a window open with the window ID passed, or nothing will happen.

propertyzigzag32

Key is the key of the property. It is one of the constants that can be found above. Multiple properties share the same key, but the functionality depends on the type of the container that the data is set to. IF FURNACE: 0: furnacetickcount 1: furnacelittime 2: furnacelitduration 3: furnacestoredxp 4: furnacefuelaux IF BREWING STAND: 0: brewtime 1: brewfuelamount 2: brewfuel_total

valuezigzag32

Value is the value of the property. Its use differs per property.




52
packet crafting data
Clientbound

Field NameField TypeNotes
recipesRecipes
potion type recipesPotionTypeRecipes

PotionContainerChangeRecipes is a list of all recipes to convert a potion from one type to another, such as from a drinkable potion to a splash potion, or from a splash potion to a lingering potion.

potion container recipesPotionContainerChangeRecipes
material reducers lengthvarint

MaterialReducers is a list of all material reducers which is used in education edition chemistry.

material reducers
array
MaterialReducer
clear recipesbool

ClearRecipes indicates if all recipes currently active on the client should be cleaned. Doing this means that the client will have no recipes active by itself: Any CraftingData packets previously sent will also be discarded, and only the recipes in this CraftingData packet will be used.




53
packet crafting event
Bidirectional

CraftingEvent is sent by the client when it crafts a particular item. Note that this packet may be fully ignored, as the InventoryTransaction packet provides all the information required.

Field NameField TypeNotes
window idWindowID

WindowID is the ID representing the window that the player crafted in.

recipe typezigzag32 enum
0inventory

CraftingType is a type that indicates the way the crafting was done, for example if a crafting table was used.

1crafting
2workbench
recipe iduuid

RecipeUUID is the UUID of the recipe that was crafted. It points to the UUID of the recipe that was sent earlier in the CraftingData packet.

input lengthvarint

Input is a list of items that the player put into the recipe so that it could create the Output items. These items are consumed in the process.

input
array
Item
result lengthvarint

Output is a list of items that were obtained as a result of crafting the recipe.

result
array
Item



54
packet gui data pick item
Clientbound

GUIDataPickItem is sent by the server to make the client 'select' a hot bar slot. It currently appears to be broken however, and does not actually set the selected slot to the hot bar slot set in the packet.

Field NameField TypeNotes
item namestring

ItemName is the name of the item that shows up in the top part of the popup that shows up when selecting an item. It is shown as if an item was selected by the player itself.

item effectsstring

ItemEffects is the line under the ItemName, where the effects of the item are usually situated.

hotbar slotli32

HotBarSlot is the hot bar slot to be selected/picked. This does not currently work, so it does not matter what number this is.




55
packet adventure settings
Bidirectional

AdventureSettings is sent by the server to update game-play related features, in particular permissions to access these features for the client. It includes allowing the player to fly, build and mine, and attack entities. Most of these flags should be checked server-side instead of using this packet only. The client may also send this packet to the server when it updates one of these settings through the in-game settings interface. The server should verify if the player actually has permission to update those settings.

Field NameField TypeNotes
flagsAdventureFlags

Flags is a set of flags that specify certain properties of the player, such as whether or not it can fly and/or move through blocks. It is one of the AdventureFlag constants above.

command permissionvarint enum
0normal

CommandPermissionLevel is a permission level that specifies the kind of commands that the player is allowed to use.

1operator
2host
3automation
4admin
action permissionsActionPermissions

ActionPermissions is, much like Flags, a set of flags that specify actions that the player is allowed to undertake, such as whether it is allowed to edit blocks, open doors etc. It is a combination of the ActionPermission constants above.

permission levelPermissionLevel

PermissionLevel is the permission level of the player as it shows up in the player list built up using the PlayerList packet. It is one of the PermissionLevel constants above.

custom stored permissionsvarint

Custom permissions

user idli64

PlayerUniqueID is a unique identifier of the player. It appears it is not required to fill this field out with a correct value. Simply writing 0 seems to work.




56
packet block entity data
Bidirectional

Field NameField TypeNotes
positionBlockCoordinates
nbtnbt



57
packet player input
Serverbound

Field NameField TypeNotes
motion xlf32
motion zlf32
jumpingbool
sneakingbool



58
packet level chunk
Clientbound

LevelChunk is sent by the server to provide the client with a chunk of a world data (16xYx16 blocks). Typically a certain amount of chunks is sent to the client before sending it the spawn PlayStatus packet, so that the client spawns in a loaded world.

Field NameField TypeNotes
xzigzag32

ChunkX is the X coordinate of the chunk sent. (To translate a block's X to a chunk's X: x >> 4)

zzigzag32

ChunkZ is the Z coordinate of the chunk sent. (To translate a block's Z to a chunk's Z: z >> 4)

sub chunk countvarint

SubChunkCount is the amount of sub chunks that are part of the chunk sent. Depending on if the cache is enabled, a list of blob hashes will be sent, or, if disabled, the sub chunk data. On newer versions, if this is a negative value it indicates to use the Subchunk Polling mechanism

highest subchunk count

if sub chunk count
is -2lu16

HighestSubChunk is the highest sub-chunk at the position that is not all air. It is only set if the RequestMode is set to protocol.SubChunkRequestModeLimited.

cache enabledbool

CacheEnabled specifies if the client blob cache should be enabled. This system is based on hashes of blobs which are consistent and saved by the client in combination with that blob, so that the server does not have to send the same chunk multiple times. If the client does not yet have a blob with the hash sent, it will send a ClientCacheBlobStatus packet containing the hashes is does not have the data of.

blobs

if cache enabled
is true
hashes lengthvarint

BlobHashes is a list of all blob hashes used in the chunk. It is composed of SubChunkCount + 1 hashes, with the first SubChunkCount hashes being those of the sub chunks and the last one that of the biome of the chunk. If CacheEnabled is set to false, BlobHashes can be left empty.

hashes
array
lu64
payloadByteArray

RawPayload is a serialised string of chunk data. The data held depends on if CacheEnabled is set to true. If set to false, the payload is composed of multiple sub-chunks, each of which carry a version which indicates the way they are serialised, followed by biomes, border blocks and tile entities. If CacheEnabled is true, the payload consists out of the border blocks and tile entities only.




59
packet set commands enabled
Clientbound

Field NameField TypeNotes
enabledbool



60
packet set difficulty
Clientbound

Field NameField TypeNotes
difficultyvarint



61
packet change dimension
Clientbound

Field NameField TypeNotes
dimensionzigzag32
positionvec3f
respawnbool



62
packet set player game type
Bidirectional

SetPlayerGameType is sent by the server to update the game type (game mode) of the player

Field NameField TypeNotes
gamemodeGameMode

The new gamemode for the player. Some of these game types require additional flags to be set in an AdventureSettings packet for the game mode to obtain its full functionality.




63
packet player list
Clientbound

Field NameField TypeNotes
recordsPlayerRecords



64
packet simple event
Clientbound

Field NameField TypeNotes
event typelu16



65
packet event
Clientbound

Event is sent by the server to send an event with additional data. It is typically sent to the client for telemetry reasons, much like the SimpleEvent packet.

Field NameField TypeNotes
runtime idvarint64
event typezigzag32 enum
0achievement awarded
1entity interact
2portal built
3portal used
4mob killed
5cauldron used
6player death
7boss killed
8agent command
9agent created
10banner pattern removed
11commaned executed
12fish bucketed
13mob born
14pet died
15cauldron block used
16composter block used
17bell block used
18actor definition
19raid update
20player movement anomaly
21player moement corrected
22honey harvested
23target block hit
24piglin barter
25waxed or unwaxed copper
use player idu8
event datarestBuffer



66
packet spawn experience orb
Clientbound

Field NameField TypeNotes
positionvec3f
countzigzag32



67
packet clientbound map item data
Clientbound

ClientBoundMapItemData is sent by the server to the client to update the data of a map shown to the client. It is sent with a combination of flags that specify what data is updated. The ClientBoundMapItemData packet may be used to update specific parts of the map only. It is not required to send the entire map each time when updating one part.

Field NameField TypeNotes
map idzigzag64

MapID is the unique identifier that represents the map that is updated over network. It remains consistent across sessions.

update flagsUpdateMapFlags

UpdateFlags is a combination of flags found above that indicate what parts of the map should be updated client-side.

dimensionu8

Dimension is the dimension of the map that should be updated, for example the overworld (0), the nether (1) or the end (2).

lockedbool

LockedMap specifies if the map that was updated was a locked map, which may be done using a cartography table.

included in

if update flags.initialisation
is true lengthvarint

The following fields apply only for the MapUpdateFlagInitialisation. MapsIncludedIn holds an array of map IDs that the map updated is included in. This has to do with the scale of the map: Each map holds its own map ID and all map IDs of maps that include this map and have a bigger scale. This means that a scale 0 map will have 5 map IDs in this slice, whereas a scale 4 map will have only 1 (its own). The actual use of this field remains unknown.

is true
array
zigzag64
scale

if update flags.initialisation || update flags.decoration || update flags.texture
is trueu8

Scale is the scale of the map as it is shown in-game. It is written when any of the MapUpdateFlags are set to the UpdateFlags field.

tracked

if update flags.decoration
is true
objects lengthvarint

The following fields apply only for the MapUpdateFlagDecoration. TrackedObjects is a list of tracked objects on the map, which may either be entities or blocks. The client makes sure these tracked objects are actually tracked. (position updated etc.)

objects
array
TrackedObject
decorations lengthvarint
decorations
array
MapDecoration
texture

if update flags.texture
is true
widthzigzag32

Updates to the map contents itself (texture) Width is the width of the texture area that was updated. The width may be a subset of the total width of the map.

heightzigzag32

Height is the height of the texture area that was updated. The height may be a subset of the total height of the map

x offsetzigzag32

XOffset is the X offset in pixels at which the updated texture area starts. From this X, the updated texture will extend exactly Width pixels to the right.

y offsetzigzag32

YOffset is the Y offset in pixels at which the updated texture area starts. From this Y, the updated texture will extend exactly Height pixels up.

pixels lengthvarint

Pixels is a list of pixel colours for the new texture of the map. It is indexed as Pixels[y][x], with the length of the outer slice having to be exactly Height long and the inner slices exactly Width long. To access this array, use $width * y + x

pixels
array
varint



68
packet map info request
Bidirectional

Field NameField TypeNotes
map idzigzag64



69
packet request chunk radius
Bidirectional

RequestChunkRadius is sent by the client to the server to update the server on the chunk view radius that it has set in the settings. The server may respond with a ChunkRadiusUpdated packet with either the chunk radius requested, or a different chunk radius if the server chooses so.

Field NameField TypeNotes
chunk radiuszigzag32

ChunkRadius is the requested chunk radius. This value is always the value set in the settings of the player.




70
packet chunk radius update
Clientbound

ChunkRadiusUpdated is sent by the server in response to a RequestChunkRadius packet. It defines the chunk radius that the server allows the client to have. This may be lower than the chunk radius requested by the client in the RequestChunkRadius packet.

Field NameField TypeNotes
chunk radiuszigzag32

ChunkRadius is the final chunk radius that the client will adapt when it receives the packet. It does not have to be the same as the requested chunk radius.




71
packet item frame drop item
Bidirectional

Field NameField TypeNotes
coordinatesBlockCoordinates



72
packet game rules changed
Clientbound

Field NameField TypeNotes
rulesGameRules



73
packet camera
Clientbound

Camera is sent by the server to use an Education Edition camera on a player. It produces an image client-side.

Field NameField TypeNotes
camera entity unique idzigzag64

CameraEntityUniqueID is the unique ID of the camera entity from which the picture was taken.

target player unique idzigzag64

TargetPlayerUniqueID is the unique ID of the target player. The unique ID is a value that remains consistent across different sessions of the same world, but most servers simply fill the runtime ID of the player out for this field.




74
packet boss event
Bidirectional

Field NameField TypeNotes
boss entity idzigzag64
typevarint enum
0show bar

S2C: Shows the boss-bar to the player.

1register player

C2S: Registers a player to a boss fight.

2hide bar

S2C: Removes the boss-bar from the client.

3unregister player

C2S: Unregisters a player from a boss fight.

4set bar progress

S2C: Sets the bar percentage.

5set bar title

S2C: Sets title of the bar.

6update properties

S2C: darkens the sky

7texture

S2C: Not implemented :( Intended to alter bar appearance, but these currently produce no effect on client-side whatsoever.

8query

C2S: Client asking the server to resend all boss data.

🔁

if type
is show bar
titlestring

BossBarTitle is the title shown above the boss bar. It currently does not function, and instead uses the name tag of the boss entity at all times. It is only set if the EventType is BossEventShow or BossEventTitle.

progresslf32

HealthPercentage is the percentage of health that is shown in the boss bar. It currently does not function, and instead uses the health percentage of the boss entity at all times. It is only set if the EventType is BossEventShow or BossEventHealthPercentage.

screen darkeningli16

ScreenDarkening currently seems not to do anything.

colorvarint

Colour is the colour of the boss bar that is shown when a player is subscribed. It currently does not function. It is only set if the EventType is BossEventShow, BossEventAppearanceProperties or BossEventTexture. Format is ARGB

overlayvarint

Overlay is the overlay of the boss bar that is shown on top of the boss bar when a player is subscribed. It currently does not function. It is only set if the EventType is BossEventShow, BossEventAppearanceProperties or BossEventTexture.

is register player or unregister player or query
player idzigzag64

PlayerUniqueID is the unique ID of the player that is registered to or unregistered from the boss fight. It is set if EventType is either BossEventRegisterPlayer or BossEventUnregisterPlayer.

is set bar progress
progresslf32
is set bar title
titlestring
is update properties
screen darkeningli16
colorvarint
overlayvarint
is texture
colorvarint
overlayvarint



75
packet show credits
Clientbound

Field NameField TypeNotes
runtime entity idvarint64
statuszigzag32



76
packet available commands
Clientbound

This packet sends a list of commands to the client. Commands can have arguments, and some of those arguments can have 'enum' values, which are a list of possible values for the argument. The serialization is rather complex and involves palettes like chunks.

Field NameField TypeNotes
values lenvarint

The length of the enums for all the command parameters in this packet

_enum_type["enum_size_based_on_values_len"]

Not read from stream: instead calculated from the values_len field If the valueslen < 0xff => byte, If the valueslen < 0xffff => short, If the values_len < 0xffffff => int

Length for enum values below is values len from above

Here all the enum values for all of the possible commands are stored to one array palette

enum values
array
string
suffixes lengthvarint

Integer parameters may sometimes have a prefix, such as the XP command: /xp [player: target] <- here, the xp command gives experience points /xp L [player: target] <- here, the xp command gives experience levels This is the palette of suffixes

suffixes
array
string
enums lengthvarint

The list of enum objects

enums
array
namestring

The name of the enum

values lengthvarint

The values in the enum

values
array
🔁

if ../ enum type
is byteu8

The indexes to value in the palette

is shortlu16
is intlu32
command data lengthvarint
command data
array
namestring
descriptionstring
flagslu16
permission levelu8
aliasli32
overloads lengthvarint

The list of overload parameters for this command

overloads
array
__3510 lengthvarint

Each of the parameters gets an array of posible overloads

__3510
array
parameter namestring

The name of the parameter shown to the user (the amount in /xp <amount: int>)

value typelu16 enum
1int
3float
4value
5wildcard int
6operator
7command operator
8target
10wildcard target
17file path
23integer range
38equipment slots
39string
47block position
48position
51message
53raw text
57json
67block states
70command
enum typelu16 enum
16valid

In MC, this + prior field are combined to one 32bit bitfield

32enum
256suffixed
1024soft enum
optionalbool

Is this parameter required?

optionsCommandFlags

Additinal options for this command (thanks macroshaft…)

dynamic enums lengthvarint

There are two types of enums: static enums which cannot be changed after sending AvaliableCommands, (unless you resend the whole packet) and 'soft' or 'dynamic' enums like below which is an array that can be updated with the UpdateSoftEnum packet

dynamic enums
array
namestring
values lengthvarint
values
array
string
enum constraints lengthvarint
enum constraints
array
value indexli32
enum indexli32
constraints lengthvarint
constraints
array
constraintu8 enum
0cheats enabled
1operator permissions
2host permissions



77
packet command request
Serverbound

ParamOptionCollapseEnum specifies if the enum (only if the Type is actually an enum type. If not, setting this to true has no effect) should be collapsed. This means that the options of the enum are never shown in the actual usage of the command, but only as auto-completion, like it automatically does with enums that have a big amount of options. To illustrate, it can make <$Name: bool>. enumsizebasedonvalues_len: native CommandRequest is sent by the client to request the execution of a server-side command. Although some servers support sending commands using the Text packet, this packet is guaranteed to have the correct result.

Field NameField TypeNotes
commandstring

CommandLine is the raw entered command line. The client does no parsing of the command line by itself (unlike it did in the early stages), but lets the server do that.

originCommandOrigin

Origin holds information about the command sender that will be returnd back in the command response

internalbool

Internal specifies if the command request internal. Setting it to false seems to work and the usage of this field is not known.




78
packet command block update
Serverbound

CommandBlockUpdate is sent by the client to update a command block at a specific position. The command block may be either a physical block or an entity.

Field NameField TypeNotes
is blockbool

Block specifies if the command block updated was an actual physical block. If false, the command block is in a minecart and has an entity runtime ID instead.

🔁

if is block
is true
positionBlockCoordinates

Position is the position of the command block updated. It is only set if Block is set to true. Nothing happens if no command block is set at this position. Position is the position of the command block updated. It is only set if Block is set to true. Nothing happens if no command block is set at this position.

modevarint enum
0impulse

Mode is the mode of the command block. It is either CommandBlockImpulse, CommandBlockChain or CommandBlockRepeat. It is only set if Block is set to true.

1repeat
2chain
needs redstonebool

NeedsRedstone specifies if the command block needs to be powered by redstone to be activated. If false, the command block is always active. The field is only set if Block is set to true.

conditionalbool

Conditional specifies the behaviour of the command block if the command block before it (the opposite side of the direction the arrow if facing) fails to execute. If set to false, it will activate at all times, whereas if set to true, it will activate only if the previous command block executed successfully. The field is only set if Block is set to true.

is false
minecart entity runtime idvarint64
commandstring

Command is the command currently entered in the command block. This is the command that is executed when the command block is activated.

last outputstring

LastOutput is the output of the last command executed by the command block. It may be left empty to show simply no output at all, in combination with setting ShouldTrackOutput to false.

namestring

Name is the name of the command block updated. If not empty, it will show this name hovering above the command block when hovering over the block with the cursor.

should track outputbool

ShouldTrackOutput specifies if the command block tracks output. If set to false, the output box won't be shown within the command block.

tick delayli32

TickDelay is the delay in ticks between executions of a command block, if it is a repeating command block.

execute on first tickbool

ExecuteOnFirstTick specifies if the command block should execute on the first tick, AKA as soon as the command block is enabled.




79
packet command output
Clientbound

Field NameField TypeNotes
originCommandOrigin

CommandOrigin is the data specifying the origin of the command. In other words, the source that the command request was from, such as the player itself or a websocket server. The client forwards the messages in this packet to the right origin, depending on what is sent here.

output typei8 enum
1last

OutputType specifies the type of output that is sent.

2silent
3all
4data set
success countvarint

SuccessCount is the amount of times that a command was executed successfully as a result of the command that was requested. For servers, this is usually a rather meaningless fields, but for vanilla, this is applicable for commands created with Functions.

output lengthvarint

OutputMessages is a list of all output messages that should be sent to the player. Whether they are shown or not, depends on the type of the messages.

output
array
successbool

Success indicates if the output message was one of a successful command execution. If set to true, the output message is by default coloured white, whereas if set to false, the message is by default coloured red.

message idstring

Message is the message that is sent to the client in the chat window. It may either be simply a message or a translated built-in string like 'commands.tp.success.coordinates', combined with specific parameters below.

parameters lengthvarint

Parameters is a list of parameters that serve to supply the message sent with additional information, such as the position that a player was teleported to or the effect that was applied to an entity. These parameters only apply for the Minecraft built-in command output.

parameters
array
string
data set

if output type
is data setstring
defaultvoid



80
packet update trade
Clientbound

UpdateTrade is sent by the server to update the trades offered by a villager to a player. It is sent at the moment that a player interacts with a villager.

Field NameField TypeNotes
window idWindowID

WindowID is the ID that identifies the trading window that the client currently has opened.

window typeWindowType

WindowType is an identifier specifying the type of the window opened. In vanilla, it appears this is always filled out with 15.

sizevarint

Size is the amount of trading options that the villager has.

trade tiervarint

TradeTier is the tier of the villager that the player is trading with. The tier starts at 0 with a first two offers being available, after which two additional offers are unlocked each time the tier becomes one higher.

villager unique idvarint64

VillagerUniqueID is the unique ID of the villager entity that the player is trading with. The TradeTier sent above applies to this villager.

entity unique idvarint64

EntityUniqueID is the unique ID of the entity (usually a player) for which the trades are updated. The updated trades may apply only to this entity.

display namestring

DisplayName is the name displayed at the top of the trading UI. It is usually used to represent the profession of the villager in the UI.

new trading uibool

NewTradeUI specifies if the villager should be using the new trade UI (The one added in 1.11.) rather than the old one. This should usually be set to true.

economic tradesbool

Trading based on Minecraft economy - specifies if the prices of the villager's offers are modified by an increase in demand for the item. (A mechanic added in 1.11.) Buying more of the same item will increase the price of that particular item. https://minecraft.gamepedia.com/Trading#Economics

offersnbt

NBT serialised compound of offers that the villager has.




81
packet update equipment
Clientbound

UpdateEquip is sent by the server to the client upon opening a horse inventory. It is used to set the content of the inventory and specify additional properties, such as the items that are allowed to be put in slots of the inventory.

Field NameField TypeNotes
window idWindowID

WindowID is the identifier associated with the window that the UpdateEquip packet concerns. It is the ID sent for the horse inventory that was opened before this packet was sent.

window typeWindowType

WindowType is the type of the window that was opened. Generally, this is the type of a horse inventory, as the packet is specifically made for that.

sizeu8

Size is the size of the horse inventory that should be opened. A bigger size does, in fact, change the amount of slots displayed.

entity idzigzag64

EntityUniqueID is the unique ID of the entity whose equipment was 'updated' to the player. It is typically the horse entity that had its inventory opened.

inventorynbt

inventory is a network NBT serialised compound holding the content of the inventory of the entity (the equipment) and additional data such as the allowed items for a particular slot, used to make sure only saddles can be put in the saddle slot etc.




82
packet resource pack data info
Clientbound

ResourcePackDataInfo is sent by the server to the client to inform the client about the data contained in one of the resource packs that are about to be sent.

Field NameField TypeNotes
pack idstring

UUID is the unique ID of the resource pack that the info concerns.

max chunk sizelu32

DataChunkSize is the maximum size in bytes of the chunks in which the total size of the resource pack to be sent will be divided. A size of 1MB (1024*1024) means that a resource pack of 15.5MB will be split into 16 data chunks.

chunk countlu32

ChunkCount is the total amount of data chunks that the sent resource pack will exist out of. It is the total size of the resource pack divided by the DataChunkSize field. The client doesn't actually seem to use this field. Rather, it divides the size by the chunk size to calculate it itself.

sizelu64

Size is the total size in bytes that the resource pack occupies. This is the size of the compressed archive (zip) of the resource pack.

hashByteArray

Hash is a SHA256 hash of the content of the resource pack.

is premiumbool

Premium specifies if the resource pack was a premium resource pack, meaning it was bought from the Minecraft store.

pack typeu8 enum
1addon

PackType is the type of the resource pack. It is one of the resource pack types listed.

2cached
3copy protected
4behavior
5persona piece
6resources
7skins
8world template



83
packet resource pack chunk data
Clientbound

ResourcePackChunkData is sent to the client so that the client can download the resource pack. Each packet holds a chunk of the compressed resource pack, of which the size is defined in the ResourcePackDataInfo packet sent before.

Field NameField TypeNotes
pack idstring

UUID is the unique ID of the resource pack that the chunk of data is taken out of.

chunk indexlu32

ChunkIndex is the current chunk index of the chunk. It is a number that starts at 0 and is incremented for each resource pack data chunk sent to the client.

progresslu64

DataOffset is the current progress in bytes or offset in the data that the resource pack data chunk is taken from.

payloadByteArray

RawPayload is a byte slice containing a chunk of data from the resource pack. It must be of the same size or less than the DataChunkSize set in the ResourcePackDataInfo packet.




84
packet resource pack chunk request
Serverbound

ResourcePackChunkRequest is sent by the client to request a chunk of data from a particular resource pack, that it has obtained information about in a ResourcePackDataInfo packet.

Field NameField TypeNotes
pack idstring

UUID is the unique ID of the resource pack that the chunk of data is requested from.

chunk indexlu32

ChunkIndex is the requested chunk index of the chunk. It is a number that starts at 0 and is incremented for each resource pack data chunk requested.




85
packet transfer
Clientbound

Field NameField TypeNotes
server addressstring
portlu16



86
packet play sound
Clientbound

Field NameField TypeNotes
namestring
coordinatesBlockCoordinates
volumelf32
pitchlf32



87
packet stop sound
Clientbound

Field NameField TypeNotes
namestring
stop allbool



88
packet set title
Clientbound

SetTitle is sent by the server to make a title, subtitle or action bar shown to a player. It has several fields that allow setting the duration of the titles.

Field NameField TypeNotes
typezigzag32 enum
0clear

ActionType is the type of the action that should be executed upon the title of a player. It is one of the constants above and specifies the response of the client to the packet.

1reset
2set title
3set subtitle
4action bar message
5set durations
6set title json
7set subtitle json
8action bar message json
textstring

Text is the text of the title, which has a different meaning depending on the ActionType that the packet has. The text is the text of a title, subtitle or action bar, depending on the type set.

fade in timezigzag32

FadeInDuration is the duration that the title takes to fade in on the screen of the player. It is measured in 20ths of a second (AKA in ticks).

stay timezigzag32

RemainDuration is the duration that the title remains on the screen of the player. It is measured in 20ths of a second (AKA in ticks).

fade out timezigzag32

FadeOutDuration is the duration that the title takes to fade out of the screen of the player. It is measured in 20ths of a second (AKA in ticks).

xuidstring

XUID is the XBOX Live user ID of the player, which will remain consistent as long as the player is logged in with the XBOX Live account. It is empty if the user is not logged into its XBL account.

platform online idstring

PlatformOnlineID is either a uint64 or an empty string.




89
packet add behavior tree
Clientbound

Field NameField TypeNotes
behaviortreestring



90
packet structure block update
Clientbound

StructureBlockUpdate is sent by the client when it updates a structure block using the in-game UI. The data it contains depends on the type of structure block that it is. In Minecraft Bedrock Edition v1.11, there is only the Export structure block type, but in v1.13 the ones present in Java Edition will, according to the wiki, be added too.

Field NameField TypeNotes
positionBlockCoordinates

Position is the position of the structure block that is updated.

structure namestring

StructureName is the name of the structure that was set in the structure block's UI. This is the name used to export the structure to a file.

data fieldstring

DataField is the name of a function to run, usually used during natural generation. A description can be found here: https://minecraft.gamepedia.com/Structure_Block#Data.

include playersbool

IncludePlayers specifies if the 'Include Players' toggle has been enabled, meaning players are also exported by the structure block.

show bounding boxbool

ShowBoundingBox specifies if the structure block should have its bounds outlined. A thin line will encapsulate the bounds of the structure if set to true.

structure block typezigzag32

StructureBlockType is the type of the structure block updated. A list of structure block types that will be used can be found in the constants above.

settingsStructureBlockSettings

Settings is a struct of settings that should be used for exporting the structure. These settings are identical to the last sent in the StructureBlockUpdate packet by the client.

redstone save modezigzag32

RedstoneSaveMode is the mode that should be used to save the structure when used with redstone. In Java Edition, this is always stored in memory, but in Bedrock Edition it can be stored either to disk or memory. See the constants above for the options.

should triggerbool

ShouldTrigger specifies if the structure block should be triggered immediately after this packet reaches the server.




91
packet show store offer
Clientbound

ShowStoreOffer is sent by the server to show a Marketplace store offer to a player. It opens a window client-side that displays the item. The ShowStoreOffer packet only works on the partnered servers: Servers that are not partnered will not have a store buttons show up in the in-game pause menu and will, as a result, not be able to open store offers on the client side. Sending the packet does therefore not work when using a proxy that is not connected to with the domain of one of the partnered servers.

Field NameField TypeNotes
offer idstring

OfferID is a string that identifies the offer for which a window should be opened. While typically a UUID, the ID could be anything.

show allbool

ShowAll specifies if all other offers of the same 'author' as the one of the offer associated with the OfferID should also be displayed, alongside the target offer.




92
packet purchase receipt
Serverbound

PurchaseReceipt is sent by the client to the server to notify the server it purchased an item from the Marketplace store that was offered by the server. The packet is only used for partnered servers.

Field NameField TypeNotes
receipts lengthvarint

Receipts is a list of receipts, or proofs of purchases, for the offers that have been purchased by the player.

receipts
array
string



93
packet player skin
Bidirectional

Field NameField TypeNotes
uuiduuid
skinSkin
skin namestring
old skin namestring
is verifiedbool



94
packet sub client login
Clientbound

SubClientLogin is sent when a sub-client joins the server while another client is already connected to it. The packet is sent as a result of split-screen game play, and allows up to four players to play using the same network connection. After an initial Login packet from the 'main' client, each sub-client that connects sends a SubClientLogin to request their own login.

Field NameField TypeNotes
tokens["encapsulated", { "lengthType": "varint", "type": "LoginTokens" }]

ConnectionRequest is a string containing information about the player and JWTs that may be used to verify if the player is connected to XBOX Live. The connection request also contains the necessary client public key to initiate encryption. The ConnectionRequest in this packet is identical to the one found in the Login packet.




95
packet initiate web socket connection
Clientbound

AutomationClientConnect is used to make the client connect to a websocket server. This websocket server has the ability to execute commands on the behalf of the client and it can listen for certain events fired by the client.

Field NameField TypeNotes
serverstring

ServerURI is the URI to make the client connect to. It can be, for example, 'localhost:8000/ws' to connect to a websocket server on the localhost at port 8000.




96
packet set last hurt by
Clientbound

SetLastHurtBy is sent by the server to let the client know what entity type it was last hurt by. At this moment, the packet is useless and should not be used. There is no behaviour that depends on if this packet is sent or not.

Field NameField TypeNotes
entity typevarint



97
packet book edit
Clientbound

BookEdit is sent by the client when it edits a book. It is sent each time a modification was made and the player stops its typing 'session', rather than simply after closing the book.

Field NameField TypeNotes
typeu8 enum
0replace page
1add page
2delete page
3swap pages
4sign
slotu8
🔁

if type
is replace page or add page
page numberu8
textstring
photo namestring

Only available on Education Edition.

is delete page
page numberu8
is swap pages
page1u8
page2u8
is sign
titlestring
authorstring
xuidstring



98
packet npc request
Bidirectional

NPCRequest is sent by the client when it interacts with an NPC. The packet is specifically made for Education Edition, where NPCs are available to use.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the runtime ID of the NPC entity that the player interacted with. It is the same as sent by the server when spawning the entity.

request typeu8 enum
0set actions

RequestType is the type of the request, which depends on the permission that the player has. It will be either a type that indicates that the NPC should show its dialog, or that it should open the editing window.

1execute action
2execute closing commands
3set name
4set skin
5set interaction text
commandstring

CommandString is the command string set in the NPC. It may consist of multiple commands, depending on what the player set in it.

action typeu8 enum
0set actions

ActionType is the type of the action to execute.

1execute action
2execute closing commands
3set name
4set skin
5set interact text
6execute openining commands
scene namestring

SceneName is the name of the scene.




99
packet photo transfer
Serverbound

PhotoTransfer is sent by the server to transfer a photo (image) file to the client. It is typically used to transfer photos so that the client can display it in a portfolio in Education Edition. While previously usable in the default Bedrock Edition, the displaying of photos in books was disabled and the packet now has little use anymore.

Field NameField TypeNotes
image namestring

PhotoName is the name of the photo to transfer. It is the exact file name that the client will download the photo as, including the extension of the file.

image datastring

PhotoData is the raw data of the photo image. The format of this data may vary: Formats such as JPEG or PNG work, as long as PhotoName has the correct extension.

book idstring

BookID is the ID of the book that the photo is associated with. If the PhotoName in a book with this ID is set to PhotoName, it will display the photo (provided Education Edition is used). The photo image is downloaded to a sub-folder with this book ID.

photo typeu8

PhotoType is one of the three photo types above.

source typeu8

SourceType is the source photo type. It is one of the three photo types above.

owner entity unique idli64

OwnerEntityUniqueID is the entity unique ID of the photo's owner.

new photo namestring

NewPhotoName is the new name of the photo.




100
packet modal form request
Clientbound

ModalFormRequest is sent by the server to make the client open a form. This form may be either a modal form which has two options, a menu form for a selection of options and a custom form for properties.

Field NameField TypeNotes
form idvarint

FormID is an ID used to identify the form. The ID is saved by the client and sent back when the player submits the form, so that the server can identify which form was submitted.

datastring

FormData is a JSON encoded object of form data. The content of the object differs, depending on the type of the form sent, which is also set in the JSON.




101
packet modal form response
Serverbound

ModalFormResponse is sent by the client in response to a ModalFormRequest, after the player has submitted the form sent. It contains the options/properties selected by the player, or a JSON encoded 'null' if the form was closed by clicking the X at the top right corner of the form.

Field NameField TypeNotes
form idvarint

FormID is the form ID of the form the client has responded to. It is the same as the ID sent in the ModalFormRequest, and may be used to identify which form was submitted.

datastring

ResponseData is a JSON encoded value representing the response of the player. If the form was cancelled, a JSON encoded 'null' is in the response. For a modal form, the response is either true or false, for a menu form, the response is an integer specifying the index of the button clicked, and for a custom form, the response is an array containing a value for each element.




102
packet server settings request
Serverbound

ServerSettingsRequest is sent by the client to request the settings specific to the server. These settings are shown in a separate tab client-side, and have the same structure as a custom form. ServerSettingsRequest has no fields.

Field NameField TypeNotes



103
packet server settings response
Clientbound

ServerSettingsResponse is optionally sent by the server in response to a ServerSettingsRequest from the client. It is structured the same as a ModalFormRequest packet, and if filled out correctly, will show a specific tab for the server in the settings of the client. A ModalFormResponse packet is sent by the client in response to a ServerSettingsResponse, when the client fills out the settings and closes the settings again.

Field NameField TypeNotes
form idvarint

FormID is an ID used to identify the form. The ID is saved by the client and sent back when the player submits the form, so that the server can identify which form was submitted.

datastring

FormData is a JSON encoded object of form data. The content of the object differs, depending on the type of the form sent, which is also set in the JSON.




104
packet show profile
Clientbound

ShowProfile is sent by the server to show the XBOX Live profile of one player to another.

Field NameField TypeNotes
xuidstring

XUID is the XBOX Live User ID of the player whose profile should be shown to the player. If it is not a valid XUID, the client ignores the packet.




105
packet set default game type
Clientbound

SetDefaultGameType is sent by the client when it toggles the default game type in the settings UI, and is sent by the server when it actually changes the default game type, resulting in the toggle being changed in the settings UI.

Field NameField TypeNotes
gamemodeGameMode

GameType is the new game type that is set. When sent by the client, this is the requested new default game type.




106
packet remove objective
Clientbound

RemoveObjective is sent by the server to remove a scoreboard objective. It is used to stop showing a scoreboard to a player.

Field NameField TypeNotes
objective namestring

ObjectiveName is the name of the objective that the scoreboard currently active has. This name must be identical to the one sent in the SetDisplayObjective packet.




107
packet set display objective
Clientbound

SetDisplayObjective is sent by the server to display an object as a scoreboard to the player. Once sent, it should be followed up by a SetScore packet to set the lines of the packet.

Field NameField TypeNotes
display slotstring

DisplaySlot is the slot in which the scoreboard should be displayed. Available options can be found in the constants above.

objective namestring

ObjectiveName is the name of the objective that the scoreboard displays. Filling out a random unique value for this field works: It is not displayed in the scoreboard.

display namestring

DisplayName is the name, or title, that is displayed at the top of the scoreboard.

criteria namestring

CriteriaName is the name of the criteria that need to be fulfilled in order for the score to be increased. This can be any kind of string and does not show up client-side.

sort orderzigzag32

SortOrder is the order in which entries on the scoreboard should be sorted. It is one of the constants that may be found above.




108
packet set score
Clientbound

SetScore is sent by the server to send the contents of a scoreboard to the player. It may be used to either add, remove or edit entries on the scoreboard.

Field NameField TypeNotes
actionu8 enum
0change

ActionType is the type of the action to execute upon the scoreboard with the entries that the packet has. If ActionType is ScoreboardActionModify, all entries will be added to the scoreboard if not yet present, or modified if already present. If set to ScoreboardActionRemove, all scoreboard entries set will be removed from the scoreboard.

1remove
entries lengthvarint
entries
array
scoreboard idzigzag64
objective namestring
scoreli32
🔁

if ../action
is change
entry typei8 enum
1player
2entity
3fake player
entity unique id

if entry type
is player or entityzigzag64
custom name

if entry type
is fake playerstring



109
packet lab table
Bidirectional

LabTable is sent by the client to let the server know it started a chemical reaction in Education Edition, and is sent by the server to other clients to show the effects. The packet is only functional if Education features are enabled.

Field NameField TypeNotes
action typeu8 enum
0combine

ActionType is the type of the action that was executed. It is one of the constants above. Typically, only LabTableActionCombine is sent by the client, whereas LabTableActionReact is sent by the server.

1react
positionvec3i

Position is the position at which the lab table used was located.

reaction typeu8

ReactionType is the type of the reaction that took place as a result of the items put into the lab table. The reaction type can be either that of an item or a particle, depending on whatever the result was of the reaction.




110
packet update block synced
Clientbound

UpdateBlockSynced is sent by the server to synchronise the falling of a falling block entity with the transitioning back and forth from and to a solid block. It is used to prevent the entity from flickering, and is used in places such as the pushing of blocks with pistons.

Field NameField TypeNotes
positionBlockCoordinates

Position is the block position at which a block is updated.

block runtime idvarint

NewBlockRuntimeID is the runtime ID of the block that is placed at Position after sending the packet to the client.

flagsUpdateBlockFlags

Flags is a combination of flags that specify the way the block is updated client-side. It is a combination of the flags above, but typically sending only the BlockUpdateNetwork flag is sufficient.

layervarint

Layer is the world layer on which the block is updated. For most blocks, this is the first layer, as that layer is the default layer to place blocks on, but for blocks inside of each other, this differs.

entity unique idzigzag64

EntityUniqueID is the unique ID of the falling block entity that the block transitions to or that the entity transitions from. Note that for both possible values for TransitionType, the EntityUniqueID should point to the falling block entity involved.

transition typevarint enum



111
packet move entity delta
Clientbound

TransitionType is the type of the transition that happened. It is either BlockToEntityTransition, when a block placed becomes a falling entity, or EntityToBlockTransition, when a falling entity hits the ground and becomes a solid block again. MoveActorDelta is sent by the server to move an entity. The packet is specifically optimised to save as much space as possible, by only writing non-zero fields. As of 1.16.100, this packet no longer actually contains any deltas.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the runtime ID of the entity that is being moved. The packet works provided a non-player entity with this runtime ID is present.

flagsDeltaMoveFlags

Flags is a list of flags that specify what data is in the packet.

x

if flags.has x
is truelf32
y

if flags.has y
is truelf32
z

if flags.has z
is truelf32
rot x

if flags.has rot x
is trueu8
rot y

if flags.has rot y
is trueu8
rot z

if flags.has rot z
is trueu8



112
packet set scoreboard identity
Clientbound

SetScoreboardIdentity is sent by the server to change the identity type of one of the entries on a scoreboard. This is used to change, for example, an entry pointing to a player, to a fake player when it leaves the server, and to change it back to a real player when it joins again. In non-vanilla situations, the packet is quite useless.

Field NameField TypeNotes
actioni8 enum
0register identity

ActionType is the type of the action to execute. The action is either ScoreboardIdentityActionRegister to associate an identity with the entry, or ScoreboardIdentityActionClear to remove associations with an entity.

1clear identity
entries lengthvarint

Entries is a list of all entries in the packet. Each of these entries points to one of the entries on a scoreboard. Depending on ActionType, their identity will either be registered or cleared.

entries
array
scoreboard idzigzag64
entity unique id

if ../action
is register identityzigzag64
defaultvoid



113
packet set local player as initialized
Serverbound

SetLocalPlayerAsInitialised is sent by the client in response to a PlayStatus packet with the status set to spawn. The packet marks the moment at which the client is fully initialised and can receive any packet without discarding it.

Field NameField TypeNotes
runtime entity idvarint64

EntityRuntimeID is the entity runtime ID the player was assigned earlier in the login sequence in the StartGame packet.




114
packet update soft enum
Clientbound

Field NameField TypeNotes



115
packet network stack latency
Bidirectional

NetworkStackLatency is sent by the server (and the client, on development builds) to measure the latency over the entire Minecraft stack, rather than the RakNet latency. It has other usages too, such as the ability to be used as some kind of acknowledgement packet, to know when the client has received a certain other packet.

Field NameField TypeNotes
timestamplu64

Timestamp is the timestamp of the network stack latency packet. The client will, if NeedsResponse is set to true, send a NetworkStackLatency packet with this same timestamp packet in response.

needs responseu8

NeedsResponse specifies if the sending side of this packet wants a response to the packet, meaning that the other side should send a NetworkStackLatency packet back.




117
packet script custom event
Bidirectional

ScriptCustomEvent is sent by both the client and the server. It is a way to let scripts communicate with the server, so that the client can let the server know it triggered an event, or the other way around. It is essentially an RPC kind of system.

Field NameField TypeNotes
event namestring

EventName is the name of the event. The script and the server will use this event name to identify the data that is sent.

event datastring

EventData is the data of the event. This data is typically a JSON encoded string, that the script is able to encode and decode too.




118
packet spawn particle effect
Clientbound

SpawnParticleEffect is sent by the server to spawn a particle effect client-side. Unlike other packets that result in the appearing of particles, this packet can show particles that are not hardcoded in the client. They can be added and changed through behaviour packs to implement custom particles.

Field NameField TypeNotes
dimensionu8

Dimension is the dimension that the particle is spawned in. Its exact usage is not clear, as the dimension has no direct effect on the particle.

entity idzigzag64

EntityUniqueID is the unique ID of the entity that the spawned particle may be attached to. If this ID is not -1, the Position below will be interpreted as relative to the position of the entity associated with this unique ID.

positionvec3f

Position is the position that the particle should be spawned at. If the position is too far away from the player, it will not show up. If EntityUniqueID is not -1, the position will be relative to the position of the entity.

particle namestring

ParticleName is the name of the particle that should be shown. This name may point to a particle effect that is built-in, or to one implemented by behaviour packs.

molang variablesByteArray

MoLangVariables is an encoded JSON map of MoLang variables that may be applicable to the particle spawn. This can just be left empty in most cases. TODO: Investigate, probably not a ByteArray…




119
packet available entity identifiers
Clientbound

AvailableActorIdentifiers is sent by the server at the start of the game to let the client know all entities that are available on the server.

Field NameField TypeNotes
nbtnbt

SerialisedEntityIdentifiers is a network NBT serialised compound of all entity identifiers that are available in the server.




120
packet level sound event v2
Bidirectional

Not used. Use packet_level_sound_event.

Field NameField TypeNotes
sound idu8
positionvec3f
block idzigzag32
entity typestring
is baby mobbool
is globalbool



121
packet network chunk publisher update
Clientbound

NetworkChunkPublisherUpdate is sent by the server to change the point around which chunks are and remain loaded. This is useful for mini-game servers, where only one area is ever loaded, in which case the NetworkChunkPublisherUpdate packet can be sent in the middle of it, so that no chunks ever need to be additionally sent during the course of the game. In reality, the packet is not extraordinarily useful, and most servers just send it constantly at the position of the player. If the packet is not sent at all, no chunks will be shown to the player, regardless of where they are sent.

Field NameField TypeNotes
coordinatesBlockCoordinates

Position is the block position around which chunks loaded will remain shown to the client. Most servers set this position to the position of the player itself.

radiusvarint

Radius is the radius in blocks around Position that chunks sent show up in and will remain loaded in. Unlike the RequestChunkRadius and ChunkRadiusUpdated packets, this radius is in blocks rather than chunks, so the chunk radius needs to be multiplied by 16. (Or shifted to the left by 4.)




122
packet biome definition list
Clientbound

BiomeDefinitionList is sent by the server to let the client know all biomes that are available and implemented on the server side. It is much like the AvailableActorIdentifiers packet, but instead functions for biomes.

Field NameField TypeNotes
nbtnbt

SerialisedBiomeDefinitions is a network NBT serialised compound of all definitions of biomes that are available on the server.




123
packet level sound event
Bidirectional

LevelSoundEvent is sent by the server to make any kind of built-in sound heard to a player. It is sent to, for example, play a stepping sound or a shear sound. The packet is also sent by the client, in which case it could be forwarded by the server to the other players online. If possible, the packets from the client should be ignored however, and the server should play them on its own accord.

Field NameField TypeNotes
sound idSoundType

SoundType is the type of the sound to play. Some of the sound types require additional data, which is set in the EventData field.

positionvec3f

Position is the position of the sound event. The player will be able to hear the direction of the sound based on what position is sent here.

extra datazigzag32

ExtraData is a packed integer that some sound types use to provide extra data. An example of this is the note sound, which is composed of a pitch and an instrument type.

entity typestring

EntityType is the string entity type of the entity that emitted the sound, for example 'minecraft:skeleton'. Some sound types use this entity type for additional data.

is baby mobbool

BabyMob specifies if the sound should be that of a baby mob. It is most notably used for parrot imitations, which will change based on if this field is set to true or not.

is globalbool

DisableRelativeVolume specifies if the sound should be played relatively or not. If set to true, the sound will have full volume, regardless of where the Position is, whereas if set to false, the sound's volume will be based on the distance to Position.




124
packet level event generic
Clientbound

LevelEventGeneric is sent by the server to send a 'generic' level event to the client. This packet sends an NBT serialised object and may for that reason be used for any event holding additional data.

Field NameField TypeNotes
event idvarint

EventID is a unique identifier that identifies the event called. The data that follows has fields in the NBT depending on what event it is.

nbtnbtLoop

SerialisedEventData is a network little endian serialised object of event data, with fields that vary depending on EventID. Unlike many other NBT structures, this data is not actually in a compound but just loosely floating NBT tags. To decode using the nbt package, you would need to append 0x0a00 at the start (compound id and name length) and add 0x00 at the end, to manually wrap it in a compound. Likewise, you would have to remove these bytes when encoding.




125
packet lectern update
Clientbound

LecternUpdate is sent by the client to update the server on which page was opened in a book on a lectern, or if the book should be removed from it.

Field NameField TypeNotes
pageu8

Page is the page number in the book that was opened by the player on the lectern.

page countu8

PageCount is the number of pages that the book opened in the lectern has.

positionvec3i

Position is the position of the lectern that was updated. If no lectern is at the block position, the packet should be ignored.

drop bookbool

DropBook specifies if the book currently set on display in the lectern should be dropped server-side.




126
packet video stream connect
Clientbound

This packet was removed.

Field NameField TypeNotes
server uristring
frame send frequencylf32
actionu8
resolution xli32
resolution yli32



127
packet add ecs entity
Clientbound

This is NOT a Minecraft entity, but an entity in the Entity Component System (ECS) for the game engine Minecrat Bedrock uses. Internally, all 'Minecraft entities' are known as Actors including in packet names and fields. However, these are irrelevant internal details so we don't do the renames in these protocol definitions, for simplicity we just use Entity. AddEntity is sent by the server to the client. Its function is not entirely clear: It does not add an entity in the sense of an in-game entity, but has to do with the ECS that Minecraft uses.

Field NameField TypeNotes
network idvarint64

EntityNetworkID is the network ID of the entity that should be added.




128
packet remove ecs entity
Clientbound

RemoveEntity is sent by the server to the client. Its function is not entirely clear: It does not remove an entity in the sense of an in-game entity, but has to do with the ECS that Minecraft uses

Field NameField TypeNotes
network idvarint64

EntityNetworkID is the network ID of the entity that should be removed.




129
packet client cache status
Bidirectional

ClientCacheStatus is sent by the client to the server at the start of the game. It is sent to let the server know if it supports the client-side blob cache. Clients such as Nintendo Switch do not support the cache, and attempting to use it anyway will fail.

Field NameField TypeNotes
enabledbool

Enabled specifies if the blob cache is enabled. If false, the server should not attempt to use the blob cache. If true, it may do so, but it may also choose not to use it.




130
packet on screen texture animation
Clientbound

OnScreenTextureAnimation is sent by the server to show a certain animation on the screen of the player. The packet is used, as an example, for when a raid is triggered and when a raid is defeated.

Field NameField TypeNotes
animation typelu32

AnimationType is the type of the animation to show. The packet provides no further extra data to allow modifying the duration or other properties of the animation.




131
packet map create locked copy
Clientbound

MapCreateLockedCopy is sent by the server to create a locked copy of one map into another map. In vanilla, it is used in the cartography table to create a map that is locked and cannot be modified.

Field NameField TypeNotes
original map idzigzag64

OriginalMapID is the ID of the map that is being copied. The locked copy will obtain all content that is visible on this map, except the content will not change.

new map idzigzag64

NewMapID is the ID of the map that holds the locked copy of the map that OriginalMapID points to. Its contents will be impossible to change.




132
packet structure template data export request
Clientbound

StructureTemplateDataRequest is sent by the client to request data of a structure.

Field NameField TypeNotes
namestring

StructureName is the name of the structure that was set in the structure block's UI. This is the name used to export the structure to a file.

positionBlockCoordinates

Position is the position of the structure block that has its template data requested.

settingsStructureBlockSettings

Settings is a struct of settings that should be used for exporting the structure. These settings are identical to the last sent in the StructureBlockUpdate packet by the client.

request typeu8 enum
1export from save

RequestType specifies the type of template data request that the player sent.

2export from load
3query saved structure



133
packet structure template data export response
Clientbound

StructureTemplateDataResponse is sent by the server to send data of a structure to the client in response to a StructureTemplateDataRequest packet.

Field NameField TypeNotes
namestring
successbool
nbt

if success
is truenbt
response typeu8 enum
1export

ResponseType specifies the response type of the packet. This depends on the RequestType field sent in the StructureTemplateDataRequest packet and is one of the constants above.

2query



134
packet update block properties
Clientbound

No longer used.

Field NameField TypeNotes
nbtnbt



135
packet client cache blob status
Clientbound

ClientCacheBlobStatus is part of the blob cache protocol. It is sent by the client to let the server know what blobs it needs and which blobs it already has, in an ACK type system.

Field NameField TypeNotes
missesvarint

The number of MISSes in this packet

havesvarint

The number of HITs in this packet

Length for missing below is misses from above

A list of blob hashes that the client does not have a blob available for. The server should send the blobs matching these hashes as soon as possible.

missing
array
lu64
Length for have below is haves from above

A list of hashes that the client does have a cached blob for. Server doesn't need to send.

have
array
lu64



136
packet client cache miss response
Clientbound

ClientCacheMissResponse is part of the blob cache protocol. It is sent by the server in response to a ClientCacheBlobStatus packet and contains the blob data of all blobs that the client acknowledged not to have yet.

Field NameField TypeNotes
blobs lengthvarint
blobs
array
Blob



137
packet education settings
Clientbound

EducationSettings is a packet sent by the server to update Minecraft: Education Edition related settings. It is unused by the normal base game.

Field NameField TypeNotes
CodeBuilderDefaultURIstring

CodeBuilderDefaultURI is the default URI that the code builder is ran on. Using this, a Code Builder program can make code directly affect the server.

CodeBuilderTitlestring

CodeBuilderTitle is the title of the code builder shown when connected to the CodeBuilderDefaultURI.

CanResizeCodeBuilderbool

CanResizeCodeBuilder specifies if clients connected to the world should be able to resize the code builder when it is opened.

disable legacy title barbool
post process filterstring
screenshot border pathstring
has agent capabilitiesbool
agent capabilities

if has agent capabilities
is true
hasbool
can modify blocksbool
HasOverrideURIbool
OverrideURI

if HasOverrideURI
is truestring
HasQuizbool

HasQuiz specifies if the world has a quiz connected to it.

has external link settingsbool
external link settings

if has external link settings
hasbool
urlstring
display namestring



138
packet emote
Bidirectional

Emote is sent by both the server and the client. When the client sends an emote, it sends this packet to the server, after which the server will broadcast the packet to other players online.

Field NameField TypeNotes
entity idvarint64

EntityRuntimeID is the entity that sent the emote. When a player sends this packet, it has this field set as its own entity runtime ID.

emote idstring

EmoteID is the ID of the emote to send.

flagsu8

Flags is a combination of flags that change the way the Emote packet operates. When the server sends this packet to other players, EmoteFlagServerSide must be present.




139
packet multiplayer settings
Serverbound

MultiPlayerSettings is sent by the client to update multi-player related settings server-side and sent back to online players by the server. The MultiPlayerSettings packet is a Minecraft: Education Edition packet. It has no functionality for the base game.

Field NameField TypeNotes
action typezigzag32 enum
0enable multiplayer

ActionType is the action that should be done when this packet is sent. It is one of the constants that may be found above.

1disable multiplayer
2refresh join code



140
packet settings command
Serverbound

SettingsCommand is sent by the client when it changes a setting in the settings that results in the issuing of a command to the server, such as when Show Coordinates is enabled.

Field NameField TypeNotes
command linestring

CommandLine is the full command line that was sent to the server as a result of the setting that the client changed.

suppress outputbool

SuppressOutput specifies if the client requests the suppressing of the output of the command that was executed. Generally this is set to true, as the client won't need a message to confirm the output of the change.




141
packet anvil damage
Serverbound

AnvilDamage is sent by the client to request the dealing damage to an anvil. This packet is completely pointless and the server should never listen to it.

Field NameField TypeNotes
damageu8

Damage is the damage that the client requests to be dealt to the anvil.

positionBlockCoordinates

AnvilPosition is the position in the world that the anvil can be found at.




142
packet completed using item
Clientbound

CompletedUsingItem is sent by the server to tell the client that it should be done using the item it is currently using.

Field NameField TypeNotes
used item idli16

UsedItemID is the item ID of the item that the client completed using. This should typically be the ID of the item held in the hand.

use methodli32 enum
0equip armor

UseMethod is the method of the using of the item that was completed. It is one of the constants that may be found above.

1eat
2attack
3consume
4throw
5shoot
6place
7fill bottle
8fill bucket
9pour bucket
10use tool
11interact
12retrieved
13dyed
14traded



143
packet network settings
Bidirectional

NetworkSettings is sent by the server to update a variety of network settings. These settings modify the way packets are sent over the network stack.

Field NameField TypeNotes
compression thresholdu16

CompressionThreshold is the minimum size of a packet that is compressed when sent. If the size of a packet is under this value, it is not compressed. When set to 0, all packets will be left uncompressed.




144
packet player auth input
Serverbound

PlayerAuthInput is sent by the client to allow for server authoritative movement. It is used to synchronise the player input with the position server-side. The client sends this packet when the ServerAuthoritativeMovementMode field in the StartGame packet is set to true, instead of the MovePlayer packet. The client will send this packet once every tick.

Field NameField TypeNotes
pitchlf32

Pitch that the player reports it has.

yawlf32

Yaw that player reports it has.

positionvec3f

Position holds the position that the player reports it has.

move vectorvec2f

MoveVector is a Vec2 that specifies the direction in which the player moved, as a combination of X/Z values which are created using the WASD/controller stick state.

head yawlf32

HeadYaw is the horizontal rotation of the head that the player reports it has.

input dataInputFlag

InputData is a combination of bit flags that together specify the way the player moved last tick. It is a combination of the flags above.

input modevarint enum
0unknown

InputMode specifies the way that the client inputs data to the screen. It is one of the constants that may be found above.

1mouse
2touch
3game pad
4motion controller
play modevarint enum
0normal

PlayMode specifies the way that the player is playing. The values it holds, which are rather random, may be found above.

1teaser
2screen
3viewer
4reality
5placement
6living room
7exit level
8exit level living room
9num modes
gaze direction

if play mode
is realityvec3f

InteractionModel is a constant representing the interaction model the player is using. GazeDirection is the direction in which the player is gazing, when the PlayMode is PlayModeReality: In other words, when the player is playing in virtual reality.

tickvarint64

Tick is the server tick at which the packet was sent. It is used in relation to CorrectPlayerMovePrediction.

deltavec3f

Delta was the delta between the old and the new position. There isn't any practical use for this field as it can be calculated by the server itself.

transaction

if input data.item interact
is true
legacyTransactionLegacy
actionsTransactionActions
dataTransactionUseItem
item stack request

if input data.item stack request
is trueItemStackRequest
block action

if input data.block action
is true lengthzigzag32
is true
array
actionAction
🔁

if action
is start break or abort break or crack break or predict break or continue break
positionBlockCoordinates

BlockPosition is the position of the target block, if the action with the ActionType set concerned a block. If that is not the case, the block position will be zero.

facezigzag32

BlockFace is the face of the target block that was touched. If the action with the ActionType set concerned a block. If not, the face is always 0.




145
packet creative content
Clientbound

CreativeContent is a packet sent by the server to set the creative inventory's content for a player. Introduced in 1.16, this packet replaces the previous method - sending an InventoryContent packet with creative inventory window ID. As of v1.16.100, this packet must be sent during the login sequence. Not sending it will stop the client from joining the server.

Field NameField TypeNotes
items lengthvarint

Items is a list of the items that should be added to the creative inventory.

items
array
entry idvarint
itemItemLegacy



146
packet player enchant options
Clientbound

PlayerEnchantOptions is sent by the server to update the enchantment options displayed when the user opens the enchantment table and puts an item in. This packet was added in 1.16 and allows the server to decide on the enchantments that can be selected by the player. The PlayerEnchantOptions packet should be sent once for every slot update of the enchantment table. The vanilla server sends an empty PlayerEnchantOptions packet when the player opens the enchantment table (air is present in the enchantment table slot) and sends the packet with actual enchantments in it when items are put in that can have enchantments.

Field NameField TypeNotes
options lengthvarint

Options is a list of possible enchantment options for the item that was put into the enchantment table.

options
array
EnchantOption



147
packet item stack request
Serverbound

ItemStackRequest is sent by the client to change item stacks in an inventory. It is essentially a replacement of the InventoryTransaction packet added in 1.16 for inventory specific actions, such as moving items around or crafting. The InventoryTransaction packet is still used for actions such as placing blocks and interacting with entities.

Field NameField TypeNotes
requests lengthvarint
requests
array
ItemStackRequest



148
packet item stack response
Clientbound

ItemStackResponse is sent by the server in response to an ItemStackRequest packet from the client. This packet is used to either approve or reject ItemStackRequests from the client. If a request is approved, the client will simply continue as normal. If rejected, the client will undo the actions so that the inventory should be in sync with the server again.

Field NameField TypeNotes
responsesItemStackResponses

Responses is a list of responses to ItemStackRequests sent by the client before. Responses either approve or reject a request from the client. Vanilla limits the size of this slice to 4096.




149
packet player armor damage
Clientbound

PlayerArmourDamage is sent by the server to damage the armour of a player. It is a very efficient packet, but generally it's much easier to just send a slot update for the damaged armour.

Field NameField TypeNotes
typeArmorDamageType

Bitset holds a bitset of 4 bits that indicate which pieces of armour need to have damage dealt to them. The first bit, when toggled, is for a helmet, the second for the chestplate, the third for the leggings and the fourth for boots.

helmet damage

if type.head
is truezigzag32
chestplate damage

if type.chest
is truezigzag32
leggings damage

if type.legs
is truezigzag32
boots damage

if type.feet
is truezigzag32



151
packet update player game type
Serverbound

UpdatePlayerGameType is sent by the server to change the game mode of a player. It is functionally identical to the SetPlayerGameType packet.

Field NameField TypeNotes
gamemodeGameMode

GameType is the new game type of the player. It is one of the constants that can be found in setplayergame_type.go. Some of these game types require additional flags to be set in an AdventureSettings packet for the game mode to obtain its full functionality.

player unique idzigzag64

PlayerUniqueID is the entity unique ID of the player that should have its game mode updated. If this packet is sent to other clients with the player unique ID of another player, nothing happens.




152
packet emote list
Serverbound

EmoteList is sent by the client every time it joins the server and when it equips new emotes. It may be used by the server to find out which emotes the client has available. If the player has no emotes equipped, this packet is not sent. Under certain circumstances, this packet is also sent from the server to the client, but I was unable to find when this is done.

Field NameField TypeNotes
player idvarint64

PlayerRuntimeID is the runtime ID of the player that owns the emote pieces below. If sent by the client, this player runtime ID is always that of the player itself.

emote pieces lengthvarint

EmotePieces is a list of emote pieces that the player with the runtime ID above has.

emote pieces
array
uuid



154
packet position tracking db request
Serverbound

PositionTrackingDBClientRequest is a packet sent by the client to request the position and dimension of a 'tracking ID'. These IDs are tracked in a database by the server. In 1.16, this is used for lodestones. The client will send this request to find the position a lodestone compass needs to point to. If found, it will point to the lodestone. If not, it will start spinning around. A PositionTrackingDBServerBroadcast packet should be sent in response to this packet.

Field NameField TypeNotes
actionu8 enum
0query

RequestAction is the action that should be performed upon the receiving of the packet. It is one of the constants found above.

tracking idzigzag32

TrackingID is a unique ID used to identify the request. The server responds with a PositionTrackingDBServerBroadcast packet holding the same ID, so that the client can find out what that packet was in response to.




153
packet position tracking db broadcast
Clientbound

PositionTrackingDBServerBroadcast is sent by the server in response to the PositionTrackingDBClientRequest packet. This packet is, as of 1.16, currently only used for lodestones. The server maintains a database with tracking IDs and their position and dimension. The client will request these tracking IDs, (NBT tag set on the lodestone compass with the tracking ID?) and the server will respond with the status of those tracking IDs. What is actually done with the data sent depends on what the client chooses to do with it. For the lodestone compass, it is used to make the compass point towards lodestones and to make it spin if the lodestone at a position is no longer there.

Field NameField TypeNotes
broadcast actionu8 enum
0update

BroadcastAction specifies the status of the position tracking DB response. It is one of the constants above, specifying the result of the request with the ID below. The Update action is sent for setting the position of a lodestone compass, the Destroy and NotFound to indicate that there is not (no longer) a lodestone at that position.

1destory
2not found
tracking idzigzag32

TrackingID is the ID of the PositionTrackingDBClientRequest packet that this packet was in response to. The tracking ID is also present as the 'id' field in the SerialisedData field.

nbtnbt



156
packet packet violation warning
Serverbound

PacketViolationWarning is sent by the client when it receives an invalid packet from the server. It holds some information on the error that occurred.

Field NameField TypeNotes
violation typezigzag32 enum
0malformed
severityzigzag32 enum
0warning

Severity specifies the severity of the packet violation. The action the client takes after this violation depends on the severity sent.

1final warning
2terminating
packet idzigzag32

PacketID is the ID of the invalid packet that was received.

reasonstring

ViolationContext holds a description on the violation of the packet.




157
packet motion prediction hints
Clientbound

MotionPredictionHints is sent by the server to the client. There is a predictive movement component for entities. This packet fills the "history" of that component and entity movement is computed based on the points. Vanilla sends this packet instead of the SetActorMotion packet when 'spatial optimisations' are enabled.

Field NameField TypeNotes
entity runtime idvarint64

EntityRuntimeID is the runtime ID of the entity whose velocity is sent to the client.

velocityvec3f

Velocity is the server-calculated velocity of the entity at the point of sending the packet.

on groundbool

OnGround specifies if the server currently thinks the entity is on the ground.




158
packet animate entity
Clientbound

AnimateEntity is sent by the server to animate an entity client-side. It may be used to play a single animation, or to activate a controller which can start a sequence of animations based on different conditions specified in an animation controller. Much of the documentation of this packet can be found at https://minecraft.gamepedia.com/BedrockEditionbetaanimationdocumentation.

Field NameField TypeNotes
animationstring

Animation is the name of a single animation to start playing.

next statestring

NextState is the first state to start with. These states are declared in animation controllers (which, in themselves, are animations too). These states in turn may have animations and transitions to move to a next state.

stop conditionstring

StopCondition is a MoLang expression that specifies when the animation should be stopped.

stop condition versionli32

StopConditionVersion is the MoLang stop condition version.

controllerstring

Controller is the animation controller that is used to manage animations. These controllers decide when to play which animation.

blend out timelf32

How long to move from the previous animation to the next.

runtime entity ids lengthvarint

EntityRuntimeIDs is list of runtime IDs of entities that the animation should be applied to.

runtime entity ids
array
varint64



159
packet camera shake
Clientbound

CameraShake is sent by the server to make the camera shake client-side. This feature was added for map- making partners.

Field NameField TypeNotes
intensitylf32

Intensity is the intensity of the shaking. The client limits this value to 4, so anything higher may not work.

durationlf32

Duration is the number of seconds the camera will shake for.

typeu8

Type is the type of shake, and is one of the constants listed above. The different type affects how the shake looks in game.

actionu8 enum
0add

Action is the action to be performed, and is one of the constants listed above. Currently the different actions will either add or stop shaking the client.

1stop



160
packet player fog
Clientbound

PlayerFog is sent by the server to render the different fogs in the Stack. The types of fog are controlled by resource packs to change how they are rendered, and the ability to create custom fog.

Field NameField TypeNotes
stack lengthvarint

Stack is a list of fog identifiers to be sent to the client. Examples of fog identifiers are "minecraft:fogocean" and "minecraft:foghell".

stack
array
string



161
packet correct player move prediction
Clientbound

CorrectPlayerMovePrediction is sent by the server if and only if StartGame.ServerAuthoritativeMovementMode is set to AuthoritativeMovementModeServerWithRewind. The packet is used to correct movement at a specific point in time.

Field NameField TypeNotes
positionvec3f

Position is the position that the player is supposed to be at at the tick written in the field below. The client will change its current position based on movement after that tick starting from the Position.

deltavec3f

Delta is the change in position compared to what the client sent as its position at that specific tick.

on groundbool

OnGround specifies if the player was on the ground at the time of the tick below.

tickvarint64

Tick is the tick of the movement which was corrected by this packet.




162
packet item component
Clientbound

ItemComponent is sent by the server to attach client-side components to a custom item.

Field NameField TypeNotes
entriesItemComponentList

entries holds a list of all custom items with their respective components set.




163
packet filter text packet
Clientbound

FilterText is sent by the both the client and the server. The client sends the packet to the server to allow the server to filter the text server-side. The server then responds with the same packet and the safer version of the text.

Field NameField TypeNotes
textstring

Text is either the text from the client or the safer version of the text sent by the server.

from serverbool

FromServer indicates if the packet was sent by the server or not.




164
packet debug renderer
Clientbound

ClientBoundDebugRenderer is sent by the server to spawn an outlined cube on client-side.

Field NameField TypeNotes
typeli32 enum
1clear

Type is the type of action. It is one of the constants above.

2add cube
🔁

if type
is clearvoid
is add cube
textstring

Text is the text that is displayed above the debug.

positionvec3f

Position is the position to spawn the debug on.

redlf32

Red is the red value from the RGBA colour rendered on the debug.

greenlf32

Green is the green value from the RGBA colour rendered on the debug.

bluelf32

Blue is the blue value from the RGBA colour rendered on the debug.

alphalf32

Alpha is the alpha value from the RGBA colour rendered on the debug.

durationli64

Duration is how long the debug will last in the world for. It is measured in milliseconds.




165
packet sync entity property
Clientbound

Sent by the server to synchronize/update entity properties as NBT, an alternative to Set Entity Data.

Field NameField TypeNotes
nbtnbt



166
packet add volume entity
Clientbound

AddVolumeEntity sends a volume entity's definition and components from server to client.

Field NameField TypeNotes
runtime idvarint64

EntityRuntimeID is the runtime ID of the entity. The runtime ID is unique for each world session, and entities are generally identified in packets using this runtime ID.

nbtnbt

EntityMetadata is a map of entity metadata, which includes flags and data properties that alter in particular the way the entity looks.

encoding identifierstring
instance namestring
bounds
minBlockCoordinates
maxBlockCoordinates
dimensionzigzag32
engine versionstring



167
packet remove volume entity
Clientbound

RemoveVolumeEntity indicates a volume entity to be removed from server to client.

Field NameField TypeNotes
entity idvarint64

The Runtime Entity ID




168
packet simulation type
Datatype

SimulationType is an in-progress packet. We currently do not know the use case.

Field NameField TypeNotes
typeu8 enum
0game

SimulationType is the simulation type selected

1editor
2test
3invalid



169
packet npc dialogue
Datatype

NPCDialogue is a packet that allows the client to display dialog boxes for interacting with NPCs.

Field NameField TypeNotes
entity idlu64

ActorUniqueID is the ID of the NPC being requested.

action typevarint enum
0open

ActionType is the type of action for the packet.

1close
dialoguestring

Dialogue is the text that the client should see.

screen namestring

SceneName is the scene the data was pulled from for the client.

npc namestring

NPCName is the name of the NPC to be displayed to the client.

action jsonstring

ActionJSON is the JSON string of the buttons/actions the server can perform.




170
packet edu uri resource packet
Datatype

Field NameField TypeNotes
resourceEducationSharedResourceURI



171
packet create photo
Datatype

CreatePhoto is a packet that allows players to export photos from their portfolios into items in their inventory. This packet only works on the Education Edition version of Minecraft.

Field NameField TypeNotes
entity unique idli64

EntityUniqueID is the unique ID of the entity.

photo namestring

PhotoName is the name of the photo.

item namestring

ItemName is the name of the photo as an item.




172
packet update subchunk blocks
Datatype

UpdateSubChunkBlocks is essentially just UpdateBlock packet, however for a set of blocks in a sub chunk.

Field NameField TypeNotes
xzigzag32

SubChunkX, SubChunkY, and SubChunkZ help identify the sub chunk.

yzigzag32
zzigzag32
blocks lengthvarint

Blocks contains each updated block change entry.

blocks
array
BlockUpdate
extra lengthvarint

Extra contains each updated block change entry for the second layer, usually for waterlogged blocks.

extra
array
BlockUpdate



173
packet photo info request
Datatype

Field NameField TypeNotes
photo idzigzag64



Type
SubChunkEntryWithoutCaching
Datatype

Field NameField TypeNotes
SubChunkEntryWithoutCaching lengthlu32
SubChunkEntryWithoutCaching
array
dxu8
dyu8
dzu8
resultu8 enum
0undefined
1success
2chunk not found
3invalid dimension
4player not found
5y index out of bounds
6success all air
payloadByteArray

Payload has the terrain data, if the chunk isn't empty and caching is disabled

heightmap typeu8 enum
0no data
1has data
2too high
3too low
heightmap

if heightmap type
is has data["buffer", { "count": 256 }]



Type
SubChunkEntryWithCaching
Datatype

Field NameField TypeNotes
SubChunkEntryWithCaching lengthlu32
SubChunkEntryWithCaching
array
dxu8
dyu8
dzu8
resultu8 enum
0undefined
1success
2chunk not found
3invalid dimension
4player not found
5y index out of bounds
6success all air
payload

if result
is success all airvoid

Payload has the terrain data, if the chunk isn't empty and caching is disabled

defaultByteArray
heightmap typeu8 enum
0no data
1has data
2too high
3too low
heightmap

if heightmap type
is has data["buffer", { "count": 256 }]
blob idlu64



174
packet subchunk
Clientbound

SubChunk sends data about multiple sub-chunks around a center point.

Field NameField TypeNotes
cache enabledbool
dimensionzigzag32
originvec3i

Origin point

entries

if cache enabled
is trueSubChunkEntryWithCaching
is falseSubChunkEntryWithoutCaching



175
packet subchunk request
Serverbound

Field NameField TypeNotes
dimensionzigzag32
originvec3i

Origin point

requests lengthlu32
requests
array
dxu8
dyu8
dzu8



176
packet client start item cooldown
Serverbound

ClientStartItemCooldown is sent by the client to the server to initiate a cooldown on an item. The purpose of this packet isn't entirely clear.

Field NameField TypeNotes
categorystring
durationzigzag32

Duration is the duration of ticks the cooldown should last.




177
packet script message
Serverbound

ScriptMessage is used to communicate custom messages from the client to the server, or from the server to the client. While the name may suggest this packet is used for the discontinued scripting API, it is likely instead for the GameTest framework.

Field NameField TypeNotes
message idstring

Message ID is the identifier of the message, used by either party to identify the message data sent.

datastring

Data contains the data of the message.




178
packet code builder source
Clientbound

CodeBuilderSource is an Education Edition packet sent by the client to the server to run an operation with a

Field NameField TypeNotes
valuestring

Operation is used to distinguish the operation performed. It is always one of the constants listed above. Category is used to distinguish the category of the operation performed. It is always one of the constants Value contains extra data about the operation performed. It is always empty unless the operation is




179
packet ticking areas load status
Clientbound

TickingAreasLoadStatus is sent by the server to the client to notify the client of a ticking area's loading status.

Field NameField TypeNotes
preloadbool

Preload is true if the server is waiting for the area's preload.




180
packet dimension data
Clientbound

DimensionData is a packet sent from the server to the client containing information about data-driven dimensions that the server may have registered. This packet does not seem to be sent by default, rather only being sent when any data-driven dimensions are registered.

Field NameField TypeNotes
definitions lengthvarint
definitions
array
idstring
max heightzigzag32
min heightzigzag32
generatorzigzag32 enum
0legacy
1overworld
2flat
3nether
4end
5void



181
packet agent action
Clientbound

AgentAction is an Education Edition packet sent from the server to the client to return a response to a previously requested action.

Field NameField TypeNotes
request idstring
bodystring



182
packet change mob property
Clientbound

ChangeMobProperty is a packet sent from the server to the client to change one of the properties of a mob client-side.

Field NameField TypeNotes
entity unique idzigzag64

EntityUniqueID is the unique ID of the entity whose property is being changed.

propertystring

Property is the name of the property being updated.

bool valuebool

BoolValue is set if the property value is a bool type. If the type is not a bool, this field is ignored.

string valuestring

StringValue is set if the property value is a string type. If the type is not a string, this field is ignored.

int valuezigzag32

IntValue is set if the property value is an int type. If the type is not an int, this field is ignored.

float valuelf32

FloatValue is set if the property value is a float type. If the type is not a float, this field is ignored.




183
packet lesson progress
Datatype

LessonProgress is a packet sent by the server to the client to inform the client of updated progress on a lesson. This packet only functions on the Minecraft: Education Edition version of the game.

Field NameField TypeNotes
actionu8

Action is the action the client should perform to show progress. This is one of the constants defined above.

scorezigzag32

Score is the score the client should use when displaying the progress.

identifierstring

Identifier is the identifier of the lesson that is being progressed.




184
packet request ability
Serverbound

RequestAbility is a packet sent by the client to the server to request permission for a specific ability from the server.

Field NameField TypeNotes
value typeu8 enum
1bool

Ability is the ability that the client is requesting. This is one of the constants defined above. Value type decides which of the fields you should read/write from

2float
bool valuebool

If value type is bool, use this value

float vallf32

If value type is float, use this value




185
packet request permissions
Serverbound

RequestPermissions is a packet sent from the client to the server to request permissions that the client does not currently have. It can only be sent by operators and host in vanilla Minecraft.

Field NameField TypeNotes
entity unique idli64

EntityUniqueID is the unique ID of the player. The unique ID is unique for the entire world and is often used in packets. Most servers send an EntityUniqueID equal to the EntityRuntimeID.

permission levelPermissionLevel

PermissionLevel is the current permission level of the player. Same as constants in AdventureSettings packet.

requested permissionsRequestPermissions

RequestedPermissions contains the requested permission flags.




186
packet toast request
Datatype

ToastRequest is a packet sent from the server to the client to display a toast to the top of the screen. These toasts are the same as the ones seen when, for example, loading a new resource pack or obtaining an achievement.

Field NameField TypeNotes
titlestring

Title is the title of the toast.

messagestring

Message is the message that the toast may contain alongside the title.