Skip to content
mc-protocol
Esc
↑↓navigate↵open⌘Jpreview
On this page

Player Info Update

Play 0x46, server → client.

play · 0x46 · clientbound (server → client)

Adds players to the client’s player list or updates their data. The server sends it when a player joins, changes game mode, latency, display name, list visibility, chat session, or similar. The action bitmask selects which fields are present per entry; the client uses the data for the tab list, skins, and chat signature verification.

Sent by the server, read by the client. Listen for it with client.on("PlayerInfoUpdate", (data) => …) on the receiving side.

Fields

Field Type Notes
action UByte
data Array

Send it

const uuid = "3f4e9c2a1b5d4a7c8e6f0a1b2c3d4e5f"; // 32 hex chars, no dashes
const none = {
  add_player: false, initialize_chat: false, update_game_mode: false, update_listed: false,
  update_latency: false, update_display_name: false, update_hat: false, update_list_order: false,
};

// Add a player to the tab list. Do this before spawning the player entity.
await client.sendPacket("PlayerInfoUpdate", {
  action: { ...none, add_player: true, update_game_mode: true, update_listed: true, update_latency: true },
  data: [{
    uuid,
    player: { name: "Steve", properties: [] },
    gamemode: 0,
    listed: 1,
    latency: 50,
  }],
});

// Later: change the shown name only.
await client.sendPacket("PlayerInfoUpdate", {
  action: { ...none, update_display_name: true },
  data: [{ uuid, displayName: { text: "Steve", color: "gold" } }],
});

action is a set of flags and every flag must be present (true or false); the writer throws on a missing one. Each entry in data carries the fields for exactly the flags that are set: player for add_player, gamemode for update_game_mode, listed for update_listed, latency for update_latency, displayName for update_display_name, showHat for update_hat, listPriority for update_list_order, chatSession for initialize_chat. properties holds the skin textures. Remove players with PlayerInfoRemove.

Field aliases listed under Notes are accepted as alternative keys when writing.

Source: src/Core/Versions/776/Packets/play/clientbound/PlayerInfoUpdate.ts

Was this page helpful?