Skip to content

πŸš€Comprehensive documentation of Hytale's QUIC/UDP network protocol. Automatically extracts, decompiles, and documents all packets, enums, and data structures from server JAR files. Version-tracked with wiki documentation. βœ…

Notifications You must be signed in to change notification settings

soksx/hytale-protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hytale Protocol Documentation

Extract Hytale Packets License: MIT

Comprehensive, version-tracked documentation of Hytale's network protocol β€” automatically extracted and decompiled from official server builds.

Browse the Protocol Wiki β†’

What is This?

This project provides complete documentation of the QUIC/UDP network protocol used by Hytale game servers. It automates the extraction, decompilation, and documentation of all network packets, enums, and data structures from server JAR files.

Key Features

  • Automated Extraction β€” GitHub Actions workflow extracts protocol from any server version
  • Version Tracking β€” Each server version gets its own git branch with full source code
  • AI-Enhanced Wiki Documentation β€” Human-readable docs with packet IDs, fields, types, and AI-generated descriptions
  • Machine-Readable Output β€” JSON summaries for tool integration and analysis
  • Cross-Referenced Types β€” Links between packets, enums, and data classes

Protocol Overview

The documented com.hypixel.hytale.protocol package includes:

Category Description
packets/auth Authentication, authorization, and session management
packets/connection Connection lifecycle (connect, disconnect, ping/pong, keepalive)
packets/entities Entity spawning, updates, animations, and state sync
packets/interaction Player-entity and player-world interactions
packets/inventory Inventory slots, items, and container management
packets/player Player movement, actions, and state updates
packets/world Chunk data, block updates, and world state
packets/worldmap Minimap and world map data
packets/camera Camera positioning and cinematic controls
packets/interface_ UI/HUD updates and client interface packets
packets/window GUI windows and menu management
...and more Additional categories for assets, builder tools, machinima, etc.

Each packet is documented with:

  • Packet ID (decimal and hexadecimal)
  • Compression flag and block sizes
  • Field definitions with types and constraints
  • Related enums and data structures

Quick Start

Browse Documentation

Visit the Wiki to browse protocol documentation organized by version and packet category.

Extract a New Server Version

  1. Go to Actions β†’ Upload Server JAR
  2. Enter the version number (e.g., 1.0.0, beta-1)
  3. Upload your server JAR to the created draft release
  4. Go to Actions β†’ Extract Hytale Packets
  5. Enter the version and JAR URL

The workflow will automatically:

  • Extract and decompile the protocol package
  • Generate wiki documentation
  • Create a version branch (e.g., version/1.0.0)
  • Publish to the wiki

Browse Source Code

Each server version has a dedicated branch with decompiled Java sources:

version/1.0.0
version/beta-1
...

Browse protocol/packets/ for network packet definitions and protocol/*/ for related types.

Local Development

Prerequisites

  • Java 21+
  • PowerShell 7+ (or Windows PowerShell 5.1)
  • Python 3.11+ (for wiki generation)

Running Locally

# Extract protocol from a local JAR
./scripts/Extract-Packets.ps1 -JarPath "HytaleServer.jar" -OutputPath "protocol"

# Vineflower will be downloaded automatically

# Generate wiki documentation
python ./scripts/generate_wiki.py --protocol-dir "./protocol" --output-dir "./wiki" --version "1.0.0"

Script Parameters

Extract-Packets.ps1:

Parameter Required Default Description
-JarPath Yes - Path to the server JAR
-OutputPath No protocol Output directory for Java files
-VineflowerPath No vineflower.jar Path to Vineflower decompiler

generate_wiki.py:

Parameter Required Default Description
--protocol-dir No ./protocol Directory containing protocol package
--output-dir No ./wiki Output directory for wiki pages
--version No unknown Version string for documentation
--json No - Also generate JSON summary

How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Server JAR     │────▢│  Extract-Packets │────▢│  Decompiled     β”‚
β”‚  (HytaleServer) β”‚     β”‚  (PowerShell)    β”‚     β”‚  Java Sources   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                          β”‚
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
                        β”‚  generate_wiki   β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚  (Python)        β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                  β–Ό                  β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  Wiki    β”‚      β”‚  JSON    β”‚       β”‚  Version β”‚
        β”‚  Pages   β”‚      β”‚  Summary β”‚       β”‚  Branch  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technical Stack

Component Technology Purpose
Extraction PowerShell 7+ Cross-platform JAR extraction and orchestration
Decompilation Vineflower Modern Fernflower fork for Java bytecode decompilation
Documentation TypeScript + LLM (OpenRouter) Parse Java sources and generate AI-enhanced Markdown/JSON
Automation GitHub Actions CI/CD pipeline for extraction and publishing
Runtime Java 21+ Required for Vineflower decompiler

Use Cases

  • Protocol Analysis β€” Understand how Hytale client-server communication works
  • Tool Development β€” Build packet sniffers, proxies, or analysis tools
  • Mod Development β€” Reference for server-side mod compatibility
  • Research β€” Study modern game networking patterns
  • Version Comparison β€” Track protocol changes across server updates

Contributing

Contributions are welcome! Areas where help is appreciated:

  • Improving packet documentation accuracy
  • Adding protocol analysis insights
  • Enhancing the wiki generation scripts
  • Supporting additional output formats

Related Resources

Disclaimer

AI-Generated Content Notice: Parts of the wiki documentation, including packets layouts, are generated using AI. While we strive for accuracy, AI-generated information may contain errors, inaccuracies, or misinterpretations of the actual protocol behavior. Always verify critical information against the decompiled source code. Contributions to improve accuracy are welcome.

License

This repository is provided for educational and documentation purposes only. The decompiled protocol code remains the intellectual property of Hypixel Studios.


Maintained by the Hytale community for research and documentation purposes.

About

πŸš€Comprehensive documentation of Hytale's QUIC/UDP network protocol. Automatically extracts, decompiles, and documents all packets, enums, and data structures from server JAR files. Version-tracked with wiki documentation. βœ…

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published