---
title: Place Recipe
description: "Play 0x27, client → server."
---

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

Sent when the player clicks a recipe in the recipe book. `windowId` is the open crafting container, `recipeId` is the recipe's network id, and `makeAll` is true when shift-clicked. The server moves the ingredients from the inventory into the crafting grid and sends slot updates.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `windowId` | ContainerID |  |
| `recipeId` | VarInt |  |
| `makeAll` | Boolean |  |

## Send it

```ts
await client.sendPacket("PlaceRecipe", {
  windowId: /* ContainerID */,
  recipeId: /* VarInt */,
  makeAll: /* Boolean */,
});
```

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

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