---
title: "Packet 39: ServerBlockAction"
description: "A server-authored batch of compact block items. The recovered retail client path is currently a no-op stub."
canonical: "https://aosplay.net/protocol-168/packets/39"
markdown: "https://aosplay.net/docs/protocol-168/packets/39.md"
last_updated: "2026-07-16"
protocol: "Ace of Spades Battle Builder 168"
packet_id_decimal: "39"
packet_id_hex: "0x27"
direction: "Inactive"
family: "Building"
implementation_status: "Planned"
evidence: "Provisional"
wire_size: "5 + N × (7 or 10) bytes in generated writer"
---

# Packet 39: ServerBlockAction

> A server-authored batch of compact block items. The recovered retail client path is currently a no-op stub.

- **Decimal ID:** 39
- **Hex ID:** 0x27
- **Direction:** Inactive
- **Family:** Building
- **Status:** Planned
- **Evidence:** Provisional
- **Wire size:** 5 + N × (7 or 10) bytes in generated writer

## Implementation note

The generated record writer is documented for research, but the unused client receive path has not been live-validated.

## 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 39 (0x27). | — |
| 1 | `record_count` | i32 LE | 4 | record count value. | — |
| 2 | `records[].has_color` | boolean u8 | 1 | Whether a three-byte BGR colour follows the packed coordinates. | — |
| 3 | `records[].coordinates` | 3 × packed i16 LE | 6 | X/Y low components plus packed Z and high-coordinate bits. | — |
| 4 | `records[].color` | BGR888 | 3 | Optional explicit colour. | has_color = 1 |

## 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/39)
- [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)
