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

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

Shows a 'ghost' recipe in the crafting grid of window `windowId`, given as a `recipeDisplay`. The server sends it in response to a serverbound PlaceRecipe from the recipe book when the player lacks the ingredients. The client draws translucent items in the grid to show what is needed.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `windowId` | ContainerID |  |
| `recipeDisplay` | RecipeDisplay |  |

## Send it

```ts
await client.sendPacket("PlaceGhostRecipe", {
  windowId: /* ContainerID */,
  recipeDisplay: /* RecipeDisplay */,
});
```

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

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