AOS REVIVALJoin Discord
Packet ID0300x1E
Building // wire record

BuildPrefabAction

Requests a bounded KV6 prefab expansion. The server validates selection, stock, world contact, reservations, orientation, and cell range.

C→SHandledImplementation-backedVariable: 28 + prefab-name bytes
Exact field order

Packet 30 wire layout

The first byte is the application packet ID. The rows after it appear in decode order. Sizes exclude ENet headers, the outer wrapper prefix, LZF chunk framing, and compression effects.

Packet 30 BuildPrefabAction fields in byte order
#FieldEncodingBytesPurpose
0packet_idu81Always 30 (0x1E).
1loop_counti32 LE4Simulation-loop stamp used for ordering, prediction, or reconciliation.
2prefab_nameNUL-terminated UTF-8 stringN + 1prefab name value.
3player_idu81Compact player-slot identifier.
4prefab_yawu81prefab yaw value.
5prefab_pitchu81prefab pitch value.
6prefab_rollu81prefab roll value.
7from_block_indexi32 LE4from block index value.
8to_block_indexi32 LE4to block index value.
9position3 × i16 LE6Raw signed-short anchor coordinates.
10colorBGR8883Three colour channels written blue, green, then red.
11add_to_user_blocksboolean u81add to user blocks value.
Protocol convention

How to read this layout

  • 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 order shown.