---
title: Respawn
description: "Play 0x52, server → client."
---

`play` · `0x52` · **clientbound** (server → client)

Moves the player to a new dimension or respawns them after death. The server sends it after `ClientCommand` respawn or on dimension change, with a `worldState` similar to the one in `Login`. `copyMetadata` flags tell the client whether to keep attributes and entity metadata. The client resets its world and waits for chunks and a `SynchronizePlayerPosition`.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `worldState` | SpawnInfo |  |
| `copyMetadata` | UByte |  |

## Send it

```ts
await client.sendPacket("Respawn", {
  worldState: {
    dimension: 0,
    name: "minecraft:overworld",
    hashedSeed: 0n,
    gamemode: 0,
    previousGamemode: 255,
    isDebug: false,
    isFlat: true,
    death: null,
    portalCooldown: 0,
    seaLevel: -63,
  },
  copyMetadata: 0x03, // bit 1 keep attributes, bit 2 keep metadata
});
```

Send after the player dies and clicks Respawn (`ClientCommand` action `0`) or when changing dimension. `worldState` has the same shape as in `Login`. After it, send `SynchronizePlayerPosition`, the chunks around the new position, and `SetHealth`.

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

Source: [`src/Core/Versions/776/Packets/play/clientbound/Respawn.ts`](https://github.com/GDLev/mc-protocol/blob/master/src/Core/Versions/776/Packets/play/clientbound/Respawn.ts)
