---
title: System Chat
description: "Play 0x79, server → client."
---

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

Sends an unsigned system message. The server uses it for command feedback, join and leave messages, and other server-generated text. If `isActionBar` is set the client shows it above the hotbar instead of in chat.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `content` | NBT |  |
| `isActionBar` | Boolean |  |

## Send it

```ts
await client.sendPacket("SystemChat", {
  content: { text: "Welcome!", color: "green" },
  isActionBar: false,
});

// Action bar: short text above the hotbar.
await client.sendPacket("SystemChat", {
  content: "Saved.",
  isActionBar: true,
});
```

`content` is a text component as NBT; a plain string works too. This is the easy way to show a message: no chat session, no signatures. For player chat use `PlayerChat`.

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

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