---
title: Player Abilities (serverbound)
description: "Play 0x28, client → server."
---

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

Sent when the player starts or stops flying. Only the flying bit of `flags` is used; the other ability bits are ignored. The server accepts it only if the player is allowed to fly.

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

## Fields

| Field | Type | Notes |
|---|---|---|
| `flags` | Byte |  |

## Send it

```ts
await client.sendPacket("PlayerAbilities", {
  flags: /* Byte */,
});
```

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

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