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