feat: Add interactive packet documentation system

- Create JSON-based packet documentation for 145 packets (66 incoming, 79 outgoing)
- Add HTML template with search, filtering, and navigation
- Support enum/bitfield field display with values and descriptions
- Support packet variants for version-specific structures
- Include 0xBF extended command subpackets documentation
- Add PowerShell build script to generate final HTML

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Kamron Batman 2026-01-01 11:47:31 -08:00
parent ec287d7691
commit f0b65fecb7
No known key found for this signature in database
GPG key ID: 7D81DF26D9A5D94A
28 changed files with 6011 additions and 0 deletions

View file

@ -0,0 +1,35 @@
{
"category": "Items",
"packets": [
{
"id": "0x1A",
"name": "World Item",
"description": "Displays an item in the world (pre-Stygian Abyss clients).",
"direction": "outgoing",
"isDynamic": true,
"size": "Dynamic (14-20 bytes)",
"fields": [
{ "name": "packetId", "type": "byte", "size": 1, "value": "0x1A", "description": "Packet identifier" },
{ "name": "length", "type": "ushort", "size": 2, "description": "Packet length (14-20)" },
{ "name": "serial", "type": "uint", "size": 4, "description": "Item serial (bit 31 set if amount present)" },
{ "name": "itemId", "type": "ushort", "size": 2, "description": "Item graphic ID (bit 14 set for multi)" },
{ "name": "amount", "type": "ushort", "size": 2, "description": "Stack amount (if serial bit 31 set)", "condition": "serial & 0x80000000" },
{ "name": "x", "type": "ushort", "size": 2, "description": "X coordinate (bit 15 set if direction present)" },
{ "name": "y", "type": "ushort", "size": 2, "description": "Y coordinate (bit 15=hue, bit 14=flags)" },
{ "name": "direction", "type": "byte", "size": 1, "description": "Direction (if x bit 15 set)", "condition": "x & 0x8000" },
{ "name": "z", "type": "sbyte", "size": 1, "description": "Z coordinate" },
{ "name": "hue", "type": "ushort", "size": 2, "description": "Item hue (if y bit 15 set)", "condition": "y & 0x8000" },
{ "name": "flags", "type": "byte", "size": 1, "description": "Packet flags (if y bit 14 set)", "condition": "y & 0x4000" }
],
"notes": "For Stygian Abyss+ clients, use 0xF3 World Entity instead.",
"clientVersion": {
"max": "6.0.14.2",
"notes": "Replaced by 0xF3 for SA+ clients"
},
"source": {
"file": "Projects/Server/Network/Packets/OutgoingItemPackets.cs",
"line": 24
}
}
]
}