0x13 C13PacketPlayerAbilities
Player toggles flying state. Only sent for the flying flag change — the server controls all other ability flags via S39PacketPlayerAbilities.
Fields
| Field | Type | Description |
|---|---|---|
| invulnerable | boolean | Player is invulnerable (god mode) |
| isFlying | boolean | True if the player is currently flying |
| allowFlying | boolean | Whether player is allowed to fly |
| creativeMode | boolean | True if in creative mode |
| flySpeed | float | Flight speed multiplier |
| walkSpeed | float | Walk speed multiplier |
Wire Encoding
| Field | Type | Notes |
|---|---|---|
| Flags | byte (bitmask) | 0x01=invulnerable, 0x02=flying, 0x04=allowFlying, 0x08=creative |
| Fly Speed | float | Flight speed multiplier |
| Walk Speed | float | Walk speed multiplier |
MCP References
MCP
NetHandlerPlayServer.processPlayerAbilities()Handler Interface
HND
INetHandlerPlayServerNotes
The client only sends this when the flying state changes (pressing space twice in creative mode). The server ignores all flags except isFlying for non-creative players. Even if you set allowFlying=true, the server won't let you fly unless it sent S39 with allowFlying=true first.
implementation Implementation Cases
Flight
(Gugustus, Tenacity 6.0)
Toggle flying state. Client sends isFlying=true to tell server player started flying.
mc.thePlayer.sendQueue.addToSendQueue(new C13PacketPlayerAbilities());CreativeFly
(Gugustus, Tenacity 6.0)
Toggle flying state. Client sends isFlying=true to tell server player started flying.
mc.thePlayer.sendQueue.addToSendQueue(new C13PacketPlayerAbilities());