---
title: Horse Screen Open
description: "Play 0x29, server → client."
---

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

Opens the inventory screen for a horse, donkey, llama, or similar entity with `entityId`, using window `windowId` and `nbSlots` inventory columns. The server sends it when the player sneak-interacts with the animal. The client shows the mount inventory screen and later ContainerSetContent fills the slots.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `windowId` | ContainerID |  |
| `nbSlots` | VarInt |  |
| `entityId` | Int |  |

## Send it

```ts
await client.sendPacket("HorseScreenOpen", {
  windowId: /* ContainerID */,
  nbSlots: /* VarInt */,
  entityId: /* Int */,
});
```

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

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