---
title: Show Dialog
description: "Configuration 0x12, server → client."
---

`config` · `0x12` · **clientbound** (server → client)

Opens a server-defined dialog screen on the client. `dialog` is either a registry id of a known dialog or an inline NBT dialog definition. Player interaction comes back through `CustomClickAction` or other click events.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `dialog` | NBT |  |

## Send it

```ts
await client.sendPacket("ShowDialog", {
  dialog: {
    type: "minecraft:notice",
    title: { text: "Welcome" },
    body: [{ type: "minecraft:plain_message", contents: { text: "Have fun!" } }],
  },
});
```

`dialog` is an inline NBT dialog definition or a registry reference. Buttons and inputs may trigger serverbound `CustomClickAction` packets; send `ClearDialog` to close the screen programmatically.

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

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