---
title: "Packet 16: ChangeEntity"
description: "Applies one server-owned entity mutation: state, position, velocity, carrier, forward vector, target, fuse, or ammo."
canonical: "https://aosplay.net/protocol-168/packets/16"
markdown: "https://aosplay.net/docs/protocol-168/packets/16.md"
last_updated: "2026-07-16"
protocol: "Ace of Spades Battle Builder 168"
packet_id_decimal: "16"
packet_id_hex: "0x10"
direction: "S→C"
family: "Entities"
implementation_status: "Sent"
evidence: "Implementation-backed"
wire_size: "5–10 bytes"
---

# Packet 16: ChangeEntity

> Applies one server-owned entity mutation: state, position, velocity, carrier, forward vector, target, fuse, or ammo.

- **Decimal ID:** 16
- **Hex ID:** 0x10
- **Direction:** S→C
- **Family:** Entities
- **Status:** Sent
- **Evidence:** Implementation-backed
- **Wire size:** 5–10 bytes

## Exact wire layout

The application packet ID is the first byte. The remaining rows are in decode order. Byte sizes exclude ENet headers, wrapper prefixes, LZF chunk framing, and compression effects.

| # | Field | Encoding | Bytes | Purpose | Condition |
| ---: | --- | --- | ---: | --- | --- |
| 0 | `packet_id` | u8 | 1 | Always 16 (0x10). | — |
| 1 | `entity_id` | i16 LE | 2 | Scene-local entity identifier. | — |
| 2 | `action` | u8 | 1 | 0 state, 1 position, 2 velocity, 3 player, 4 forward vector, 5 target, 6 fuse, 7 ammo. | — |
| 3 | `state` | u8 | 1 | Entity or gameplay state value. | action = 0 |
| 4 | `position` | 3 × fixed16 LE | 6 | X, Y, and Z components at 1/64-unit precision. | action = 1 |
| 5 | `velocity` | 3 × fixed16 LE | 6 | X, Y, and Z components at 1/64-unit precision. | action = 2 |
| 6 | `player_id` | u8 | 1 | Compact player-slot identifier. | action = 3 |
| 7 | `forward` | 3 × fixed16 LE | 6 | X, Y, and Z components at 1/64-unit precision. | action = 4 |
| 8 | `target_id` | i8 | 1 | Signed player target; -1 means no target. | action = 5 |
| 9 | `fuse` | sign-magnitude fixed16 LE (1/64) | 2 | fuse value. | action = 6 |
| 10 | `ammo` | sign-magnitude fixed16 LE (1/64) | 2 | ammo value. | action = 7 |

## Encoding conventions

- `LE` means least-significant byte first.
- `fixed16` is two-byte sign-magnitude at 1/64 precision.
- `orientation16` uses the measured 1/8192 orientation mapping.
- NUL strings consume their encoded byte length plus one `00` terminator.
- Counted arrays repeat immediately in the documented order.

## Related resources

- [HTML packet page](https://aosplay.net/protocol-168/packets/16)
- [Complete packet catalog](https://aosplay.net/protocol-168/packets)
- [Packet catalog in Markdown](https://aosplay.net/docs/protocol-168/packets.md)
- [Protocol 168 guide](https://aosplay.net/protocol-168)
