---
title: Custom Chat Completions
description: "Play 0x17, server → client."
---

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

Adds, removes, or replaces custom names in the client's chat tab-completion list. The `action` selects add, remove, or set; `entries` holds the names. The client uses these in addition to online player names when completing text in chat.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `action` | VarInt |  |
| `entries` | Array |  |

## Send it

```ts
await client.sendPacket("CustomChatCompletions", {
  action: /* VarInt */,
  entries: /* Array */,
});
```

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

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