Network packets
The messages that shape Minecraft Bedrock network traffic, ordered by packet identifier.
Packets
Ordered by network identifier1
LoginPacket
→2PlayStatusPacket
Used after the Server handles a Login or (Sub)Client Authentication Packet
If everything is good, then it sends this packet to the client to finish the handshake.
If everything is not good, it terminates the connection.
→3ServerToClientHandshakePacketSent from the server at the end of the login packet
→4ClientToServerHandshakePacket
→5DisconnectPacket
→6ResourcePacksInfoPacketSends resource pack information to the client including pack IDs, versions, sizes, and content keys.
→7ResourcePackStackPacketSent to client in response to ResourcePackClientResponsePacket with info on current resource pack stack.
→8ResourcePackClientResponsePacketSent to MinecraftGame to complete the resource pack loading process.
→9TextPacketUsed for commands, messages, and other info printed to the screen. Most of which are server->client or server broadcasted to all clients, but some cases have a client to other client via the server
→10SetTimePacketEvery so often (and at login) the server sends the current time to the client, and additionally the client can set the server time through 2 commands: DayLockCommand and TimeCommand
→11StartGamePacketThe player movement mode is also specified here, see ServerAuthMovementMode enum documentation for details on the modes.
→12AddPlayerPacketA new player joins the game; the server sends this packet to the other players.
→13AddActorPacketNewly created entities on server use AddActorPacket to notify clients that they exist.
→14RemoveActorPacketThis is sent to the client to confirm which entity is being removed. This is done by sending an ActorUniqueID
→15AddItemActorPacket
→16ServerPlayerPostMovePositionPacketIs currently only used for debug draw. Packets will not be sent if debug draw is not available.
→17TakeItemActorPacketFrom this the item and count is turned into an item and the transaction is handled afterwards.
→18MoveActorAbsolutePacket
→19MovePlayerPacket
→21UpdateBlockPacketThis happens often. Luckily, the packets are small.
→22AddPaintingPacket
→25LevelEventPacket
→26BlockEventPacket
→27ActorEventPacketRanges from a crossbow being ready to fire to taming animals..., some of which may be obsolete (frex, ADD_PLAYER_LEVELS)
→28MobEffectPacketAt the start of the game the server sends any mob effects with _sendAdditionalLevelData() if the joining player saved out with them,
and then anytime a mob effect is added, removed, or updated this packet is sent.<br>
It is important for player movement simulation to ensure that the following effects are sent for the player or any client predicted vehicle they are in control of:<br>
- levitation<br>
- slow_falling<br>
- jump<br>
- movement_speed<br>
- movement_slowdown<br>
- weaving
→29UpdateAttributesPacketOccasionally updating player attributes (buffs/debuffs, health, etc)
→30InventoryTransactionPacket
→31MobEquipmentPacket
→32MobArmorEquipmentPacketThis is related to MobEquipmentPackets, but armor specifically and passes ALL equipment changes at once instead of one slot at a time.
→33InteractPacketUsed for inventory button press and in _updateInteraction() for a variety of purposes. From the client.
→34BlockPickRequestPacket
→35ActorPickRequestPacket
→36PlayerActionPacketThe expected actions change depending on the ServerAuthMovementMode specified in the StartGamePacket.
See the PlayerActionType enum for details on which have differing behavior.
See also PlayerAuthInputPacket and InventoryTransactionPacket for similar types of player actions.
→38HurtArmorPacketSends the damage taken after armor is taken into account. This looks like it is trying to be phased out, this is not sent while the ItemStackNetManagerServer is active. From the server.
→39SetActorDataPacket
→40SetActorMotionPacket
It is primarily relevant for client predicted entities like the player or a boat or horse they are in control of.
For most other actor types it does nothing.<br>
This is one of the packets that can directly affect player motion, for others, see:<br>
- MovePlayerPacket<br>
- CorrectPlayerMovePredictionPacket
→41SetActorLinkPacketSent when the player starts riding something. Two are sent at a time for some reason.
→42SetHealthPacket
→43SetSpawnPositionPacketsee RespawnPacket
→44AnimatePacketCombination of server bound and client bound packets to trigger animations.
→45RespawnPacketFor some reason each respawn 1 packet is sent from the client and 3 are sent from the server.
→46ContainerOpenPacket
→47ContainerClosePacket
→48PlayerHotbarPacket
→49InventoryContentPacket
→50InventorySlotPacket
→51ContainerSetDataPacket
→52CraftingDataPacketSent from the server on level startup to send all recipes to the client.
→54GuiDataPickItemPacketThis is only used when players use pick block, a command is used, tests, and some 3rd party content.
→56BlockActorDataPacket
→58LevelChunkPacketUsed to start a chunk transaction.
→59SetCommandsEnabledPacketsee SimpleEventPacket
→60SetDifficultyPacketUsed for when a client changes difficulty through the menu or when the server changes the difficulty.
→61ChangeDimensionPacket
→62SetPlayerGameTypePacketThe client handles the change of the UI element (the gametype dropdown, although this can be avoided by changing via command or on the server), then the client sends a packet to the server, then the server changes the player's gametype and sends a packet back (UpdatePlayerGameTypePacket) to make sure it matches on the client.
→63PlayerListPacketSent from the Server at the start of the game or when a player is added to all clients. Lists the players.
→64SimpleEventPacketThis is fired from the client to the server and a SetCommandsEnabledPacket is sent back when enabling commands.
→65LegacyTelemetryEventPacket
→66SpawnExperienceOrbPacketNote: This can be seen as "ContainerWantSetSlotPacket" when sent from client to server. Currently, the client handles side-effects relating to it's own inventory, regardless of the success of the operation.
→67ClientboundMapItemDataPacket
→68MapInfoRequestPacket
If the server finds the map, it sends the data back. If it can't find the map, it creates it and sends the map and data back.
(the map creation data packet and the map data packet are separate packets).
The response from the server potentially has to load from disk, just an fyi.
This packet is fired via map item tick, if the map data we have is invalid, or if the map is placed in an item frame.
For Client Side Generation when we re-sample pixels from the Client's ChunkSource we need to inform the Server's map about
these new pixels so that it can save them to LevelStorage. Use this packet to send to the Server the extra pixels
→69RequestChunkRadiusPacketThis packet is to make sure that the server expands/shrinks first. Additionally for ClientSide Chunk Generation we can send a byte, based on client's hardware capabilities what is the max chunk radius client can handle.
→70ChunkRadiusUpdatedPacket
→72GameRulesChangedPacketInforms client about any changes to the game rules.
→73CameraPacket
→74BossEventPacket
→75ShowCreditsPacketThat packet is sent to the client. When the credits have concluded, a packet is sent back to the server to let it know to reinstate the player watching the credits.
→76AvailableCommandsPacket
→77CommandRequestPacket
→78CommandBlockUpdatePacketSent when you close the command block screen on the client.
→79CommandOutputPacket
→80UpdateTradePacket
→81UpdateEquipPacket
→82ResourcePackDataInfoPacketSent from the serverFileChunkUploader during the initialization of the file uploader. This packet is sent to the primary client.
→83ResourcePackChunkDataPacket(only one marked for uncompressed) realms resource pack download
→84ResourcePackChunkRequestPacket
→85TransferPacket
→86PlaySoundPacket
→87StopSoundPacket
→88SetTitlePacketThere are 2 commands associated with it: title and titleraw.
Both of which have functionality to change fade in/out time for titles, sub titles, and action bar text.
titleraw is using json to format so it will be bigger (i don't have an example)
→89AddBehaviorTreePacketFor automation
→90StructureBlockUpdatePacket
→91ShowStoreOfferPacketThe server can redirect the user to a 3rd party server page, to a marketplace offer description page, or to a dressing room page containing desired offer.
→92PurchaseReceiptPacketSent from the client after we make a purchase in the store OR if we login and our entitlements are verified.
It sends a vector of purchase receipts(string).There is a handler and a multiple senders.
→93PlayerSkinPacketSent from the client to server, then processed and broadcasted to all clients. This is used by third-party(3P) servers to send custom geometry.
→94SubClientLoginPacket
→95AutomationClientConnectPacketOnly used though command to connect to server URLs. This is primarily used by EDU for connecting to their companion apps and other external applications through web sockets. Some mods/3rd party packs use it as well.
→96SetLastHurtByPacket
→97BookEditPacket
→98NpcRequestPacketA request is made from the client during an interaction with an NPC then the request is processed by the server.
Actor MUST have the NPCComponent to be handled.
We currently only use this for EDU, but the goal was to expose the NPC Component to creators.
→99PhotoTransferPacket
When the player uses the camera item or adds a photo to the scrapbook it sends the photo to the server,
then the server sends a response back on whether that was successful or not.
Either uploads a photo to the server's photoStorage or request one from it to be stored in client's photoStorage.
If no mPhotoData is provided it is a request for the given filename.
→100ModalFormRequestPacketNot sent from vanilla. The feature is meant for third-party servers to be able to drive dynamic ui forms. The request comes with some JSON that describes a custom UI screen thirdparty uses.Server->client.
→101ModalFormResponsePacketsee ModalFormRequestPacket
→102ServerSettingsRequestPacketIt is also an empty packet. There is no handler for this packet, should be removed.
→103ServerSettingsResponsePacket
→104ShowProfilePacketThe only use in vanilla is a test command called ProfileCommand. It makes the user's xbox profile popup.
→105SetDefaultGameTypePacket
→106RemoveObjectivePacketThis is just the name of the objective.
→107SetDisplayObjectivePacket
→108SetScorePacketSets the scoreboard which is used for 3rd party content.
→109LabTablePacketThe packet can be fired from the client through the UI or from the server during updates.
→110UpdateBlockSyncedPacketVariation of UpdateBlockSyncedPacket that includes information to sync entities with renderchunk generation. Occasionally when blocks change a sync message is sent and during the change on the dimension, this packet is sent to the client to alert the update flags and sync info at a specific position.
→111MoveActorDeltaPacketEach position, rotation and head-rotation component is sent as an independent optional, accompanied by flags indicating whether the actor is on the ground and whether this is a teleport.
→112SetScoreboardIdentityPacketSend an update packet for a player identity definition iff a tracked player has logged in with a different display name.
→113SetLocalPlayerAsInitializedPacketClient tells the server that the client is ready to roll.
→114UpdateSoftEnumPacketThis allows someone to sync between server and client tags and enums on mobs or on the level.
→115NetworkStackLatencyPacketDEPRECATED. Was for testing/debug/telemetry: Used to provide ping time to in game debug graph, also for realms telemetry of actual in game latency. Sent from both client & server.
→118SpawnParticleEffectPacketThis is not used for much anymore, only the Particle command (spawn particle by name at a location) and for ScriptServerSpawnParticleAttachedToActor and ScriptServerSpawnParticleInWorldEvent.
→119AvailableActorIdentifiersPacket
→121NetworkChunkPublisherUpdatePacketUsed (from the server) when a user's Chunk View moves, I.e. the area that determines what chunks exist. For ClientSideGeneration we also send the client a list of ChunkPos that the Server will fully build.
→122BiomeDefinitionListPacket- mBiomeData: map of biome string indices to biome definition data.
- mStringList: list of biome name strings.
→123LevelSoundEventPacket
Most sounds get launched on server and replicated to clients, but a handful of player initiated sounds are launched on their client and replicated through the network.
(In most of the codebase 'Event' means telemetry events; this is not the case here, this is how sounds get replicated across the network in vanilla.)
With support for custom entities. Entity Id is a string and Event Id is an integer.
→124LevelEventGenericPacket
→125LecternUpdatePacketIt is a request from the client to either turn the page in the lectern or drop the book.
→129ClientCacheStatusPacketSent by the Client once, at login, to communicate if it supports the client blob cache protocol or not.
<br> Documented in <a href=https://github.com/Mojang/bedrock-docs/blob/master/GameplaySystems/ClientBlobCacheProtocol.md>https://github.com/Mojang/bedrock-docs/blob/master/GameplaySystems/ClientBlobCacheProtocol.md</a>
→130OnScreenTextureAnimationPacketSent from the player (and in one case from the village) to make those really cool animated effects for the hero of the village and the totem saving you. Just an id (unsigned int). At least thats what the code suggests. May be obsolete / deprecated.
→131MapCreateLockedCopyPacket
It sends the original map id and the new map id.
On the server it follows a similar process to creating a new map, sends the data and the map info to the client.
→132StructureTemplateDataRequestPacketThis is used to kick off the process of loading and returning a structure in a Tag from the server back to the client. Currently this functionality is completely disabled and does nothing.
→133StructureTemplateDataResponsePacketThe client sends a packet to the server, from there the structure is built and then put into a Tag where it is sent back to the client, from there you can view the structure in the Structure Block Screen. Currently this functionality is completely disabled and does nothing. Used to reply to a request for structure information.
→135ClientCacheBlobStatusPacketSent periodically by the client to update the server on which blob it has (ACK) and which blobs it is lacking (MISS).
→136ClientCacheMissResponsePacketAny missing blob should just be thrown into one of these packet ASAP and sent. This is actually how chunk data gets to the client the first time.
→137EducationSettingsPacketCurrently transmits EducationLevelSettings to all clients when the game is starting.
→138EmotePacketSent in both directions; by client to request that an emote is played and then from the server to the clients to indicate which player needs to now emote.
→139MultiplayerSettingsPacket
This is used by EDU for joining players and removing players from your session,
the settings (there is only one) is an enum for enabling/disabling/refreshing multiplayer join codes.
Starts on the client, and a response to the client is issued from the server.
→140SettingsCommandPacketUsed when the player changes the world settings like doDayNightCycle or WeatherCycle via the world settings menu
→141AnvilDamagePacket
Only used when Item Stack Net Manager is disabled on the server.
Sends the position of the anvil that is requesting to be damaged from the client.
→142CompletedUsingItemPacket
→143NetworkSettingsPacket
→144PlayerAuthInputPacketThese are for Server Authoritative Movement to sync all player input with the server.
→145CreativeContentPacketSent once by the server on startup to tell clients all of the items that can show up in the creative menu and recipe book.
→146PlayerEnchantOptionsPacket
→147ItemStackRequestPacket
→148ItemStackResponsePacket
→149PlayerArmorDamagePacket
→150CodeBuilderPacketThis is EDU exclusively.It is sent once from _sendLevelData() in the start of a game from the server,
and once per CodeBuilderCommand
→151UpdatePlayerGameTypePacket
→152EmoteListPacket
→153PositionTrackingDBServerBroadcastPacket
→154PositionTrackingDBClientRequestPacketClient to server packet for server authoratative runtime database (with persistent LevelStorage backup) designed primarily to track lodestone stuff. See Position Tracking DB Notes.md in bedrock-docs. see PositionTrackingDBServerBroadcastPacket
→155DebugInfoPacket
→156PacketViolationWarningPacket
→157MotionPredictionHintsPacketThis is from the server when spatial optimizations are enabled and the server does not send a spatial update.
→158AnimateEntityPacketSeveral properties can be specified in the following order:</br>
- The name of the animation (a string) that the specified entities are to play.</br>
- The next state to transition to (a string) once the specified animation is finished playing.</br>
- The stop expression (a string), the condition that determines when to transition to the next state.</br>
- The name of an animation controller (a string) that you would like to use.</br>
- The blend out time (a float), the amount of time to blend out of this animation.</br>
- A vector of ActorRuntimeIds of the entities that will play the specified animation.
→159CameraShakePacketIt may be used to queue or stop a camera shake
→160PlayerFogPacketThis is the packet that tracks the active fog stack from the server so the local players can apply different fog settings.
→161CorrectPlayerMovePredictionPacketUsed only in server authoritative movement mode, see ServerAuthMovementMode documentation.<br>
Since it is sent to the specified client the target player is implied to be the receiver.<br>
It is an optional part of the server authoritative protocol. A server could choose to never send this or do all corrections
through MovePlayerPacket, although doing so would likely provide less smooth results.
→162ItemRegistryPacketThis packet needs to be sent immediately after the StartGamePacket for primary clients.
→164ClientboundDebugRendererPacket
→165SyncActorPropertyPacketIntended to one day replace SynchedActorData.
→166AddVolumeEntityPacket
→167RemoveVolumeEntityPacket
→168SimulationTypePacket- mSimType: an enum representing the simulation type to switch to.
→169NpcDialoguePacket
→170EduUriResourcePacket
→171CreatePhotoPacket
→172UpdateSubChunkBlocksPacket
→174SubChunkPacketContains subchunk terrain data, heightmaps, and optional blob cache IDs.
→175SubChunkRequestPacket
→176PlayerStartItemCooldownPacketPacket sent by the player to start the cooldown on an item.
→177ScriptMessagePacket
→178CodeBuilderSourcePacket
→179TickingAreasLoadStatusPacket
→180DimensionDataPacketContains dimension definition data including height bounds and generator type for each dimension.
→181AgentActionEventPacket
→182ChangeMobPropertyPacket
→183LessonProgressPacket
→184RequestAbilityPacketOnce changed, the server will broadcast the updated state of abilities for that player. If the request is rejected, the caller will receive their reverted state of Abilities. Can only be used to modify the calling player. - mVariable: Info about this variable
→185RequestPermissionsPacketCan only be used by Operators or Hosts.
→186ToastRequestPacket
→187UpdateAbilitiesPacket
→188UpdateAdventureSettingsPacketSent by the server to update the state of AdventureSettings. Replaces the AdventureSettingsPacket for updating AdventureSettings from server to client.
→189DeathInfoPacketmDeathCauseMessage: is untranslated cause of death string vector returned from ActorDamageSource
→190EditorNetworkPacket
→191FeatureRegistryPacket
→192ServerStatsPacketSent from server.
→193RequestNetworkSettingsPacketThis is the initial packet sent from the client to initiate a connection. NOTE: this packet should not contain anything other than the client version, don't add new data here.
→194GameTestRequestPacket
→195GameTestResultsPacketInternal Text Packet
→196UpdateClientInputLocksPacketUsed to update the players input permissions. Sends the full permission set and the server position of the player at the time the permission was modified.
→198CameraPresetsPacket
→199UnlockedRecipesPacket
→300CameraInstructionPacket
→302TrimDataPacket- mTrimPatterns: vector of TrimPattern
- mTrimMaterials: vector of TrimMaterial
→303OpenSignPacket
→304AgentAnimationPacket
→305RefreshEntitlementsPacket
→306PlayerToggleCrafterSlotRequestPacket
→307SetPlayerInventoryOptionsPacket
→308SetHudPacketThis packet will toggle the HUD visibility.
→309AwardAchievementPacket
→310ClientboundCloseFormPacketThis will only have an affect if the client currently has a server form on the UI stack.
→312ServerboundLoadingScreenPacketIn order for the client to send a packet with StartLoadingScreen, the server needs to anticipate that this packet is coming.
If the server doesn't expect that we are about to start a loading screen, the server will disconnect the client.
EndLoadingScreen is sent by the client when the loading screen closes.
The Loading Screen Id field will be empty if the loading screen is triggered by the initial loading into of a world.
The Loading Screen Id field will have a value if sent by the server. This currently happens as part of ChangeDimensionPacket if the player is alive.
→313JigsawStructureDataPacketSends the serialized jigsaw rule JSON to the client as it's needed on both the client and server.
→314CurrentStructureFeaturePacketSends the name of the Structure Feature the player is currently occupying to the client.
If the player is not in a structure, this packet contains an empty string.
→315ServerboundDiagnosticsPacket
→316CameraAimAssistPacket
→317ContainerRegistryCleanupPacket
Whenever the serverside ContainerRegistry does a clean, identifiers for the removed containers are gathered in a ContainerRegistryCleanUp
packet and sent to the client so that the clientside container registry can remove those same containers.
→318MovementEffectPacket
These MovementEffects can be client-predicted.
Ex: Fireworks Rockets used while gliding send this packet to the client so they know the exact duration of the GLIDE_BOOST MovementEffect.
→320CameraAimAssistPresetsPacket
Sent by the server to clients for initializing and updating the client aim-assist registry.
AddToExisting operations are sent by the server when new presets/categories are added to the registry through creator facing APIs.
→321ClientCameraAimAssistPacket
Sent by clients to the server for activating/deactivating aim-assist.
Activation uses the CameraPreset Id for server-side lookup and uses its aim_assist field
for aim-assist activation settings.
→322ClientMovementPredictionSyncPacketOnly used in Server-Authoritative Movement. Sent periodically if the client has received corrections from the server. Contains information about client-predictions that are relevant to movement.
→323UpdateClientOptionsPacketThe values in this packet are originally synced through the Connection Request and then updated via this packet.
→324PlayerVideoCapturePacketInternal
→325PlayerUpdateEntityOverridesPacketUpdates client entity property override data. Sets/removes an override for the indicated property for a specific entity on a client or clears all overrides for that entity.
→326PlayerLocationPacketSent by PlayerLocationSender when a player position changes beyond a certain angle.
→327ClientboundControlSchemeSetPacket
→328PrimitiveShapesPacket
→329ServerboundPackSettingChangePacket
→330ClientboundDataStorePacket
→331GraphicsOverrideParameterPacket
→332ServerboundDataStorePacket
→333ClientboundDataDrivenUIShowScreenPacket
→334ClientboundDataDrivenUICloseScreenPacket
→335ClientboundDataDrivenUIReloadPacket
→336ClientboundTextureShiftPacket
→337VoxelShapesPacketSends the serializable voxel shapes data to the client as it's needed on both the client and server. This packet should always be sent before StartGamePacket.
→338CameraSplinePacket
Sent by the server to clients for initializing custom spline data that can be played later through the camera command.
→339CameraAimAssistActorPriorityPacket
Sent by the server to clients for updating the actor priority for client aim-assist systems.
→340ResourcePacksReadyForValidationPacket
→341LocatorBarPacket
→342PartyChangedPacket
→343ServerboundDataDrivenScreenClosedPacket
→344SyncWorldClocksPacket
Sent from the server when a client joins to initialize all world clocks for the client and periodically to all clients to keep them in sync.
It is also sent to all clients when a world clock's paused state changes or when time markers are added or removed.
→345ClientboundAttributeLayerSyncPacket
→346ServerStoreInfoPacket
→347ServerPresenceInfoPacket
→348ClientboundUpdateSoundDataPacket
→349SendPartyDestinationCookiePacket
→350PartyDestinationCookieResponsePacket
→351SetPlayerFurnaceOptionsPacket
→352RecordStartedPacket
→