---
title: Container Slot State Changed
description: "Play 0x14, client → server."
---

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

Toggles a slot in a crafter block between enabled and disabled. `window_id` is the crafter container, `slot_id` the slot, and `state` the new enabled flag. The server updates the crafter block entity.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `slot_id` | VarInt |  |
| `window_id` | ContainerID |  |
| `state` | Boolean |  |

## Send it

```ts
await client.sendPacket("ContainerSlotStateChanged", {
  slot_id: /* VarInt */,
  window_id: /* ContainerID */,
  state: /* Boolean */,
});
```

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

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