---
title: Sign Update
description: "Play 0x3D, client → server."
---

`play` · `0x3D` · **serverbound** (client → server)

Sent when the player finishes editing a sign after the server opened the editor with `OpenSignEditor`. `location` is the sign, `isFrontText` says which side, and `text1`-`text4` are the four lines. The server validates the text and updates the block entity.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `location` | Position | also `position` |
| `isFrontText` | Boolean |  |
| `text1` | String | also `line1` |
| `text2` | String | also `line2` |
| `text3` | String | also `line3` |
| `text4` | String | also `line4` |

## Send it

```ts
await client.sendPacket("SignUpdate", {
  location: /* Position */,
  isFrontText: /* Boolean */,
  text1: /* String */,
  text2: /* String */,
  text3: /* String */,
  text4: /* String */,
});
```

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

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