---
title: Recipe Book Change Settings
description: "Play 0x2E, client → server."
---

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

Saves recipe book UI state for the book type `bookId` (crafting, furnace, blast furnace, smoker): whether it is `bookOpen` and whether the craftable `filterActive` toggle is on. The server persists this per player.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `bookId` | VarInt |  |
| `bookOpen` | Boolean |  |
| `filterActive` | Boolean |  |

## Send it

```ts
await client.sendPacket("RecipeBookChangeSettings", {
  bookId: /* VarInt */,
  bookOpen: /* Boolean */,
  filterActive: /* Boolean */,
});
```

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

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