---
title: Finish Configuration (clientbound)
description: "Configuration 0x03, server → client."
---

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

Tells the client that all configuration data has been sent. It must be sent after `RegistryData`, `UpdateTags`, and `UpdateEnabledFeatures`. The client processes the data and answers with its own `FinishConfiguration`, which switches both sides to the play state.

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

## Fields

_No fields._

## Send it

```ts
// Server side with autoInit: false, after registries, tags and feature flags.
await client.sendPacket("FinishConfiguration");
```

Tells the client the configuration data is complete. The client answers with its own `FinishConfiguration`, then both sides are in `play`. With `autoInit: true` the server sends this after the vanilla registries.

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

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