Automated pipeline for extracting and archiving data from Hytale builds across all available versions.
The pipeline is driven by a Makefile with file-based dependency tracking, making it fully incremental — re-running make sync only processes what's new or missing.
| Stage | Script | Output |
|---|---|---|
| versions | fetch-versions.ts |
out/versions.json |
| download | download.ts |
builds/<commit>/{HytaleServer.jar,HytaleServer.aot,Assets.zip,build.zip} |
| decompile | decompile.ts |
builds/<commit>/decompiled/ |
| schemas | generate-schemas.ts |
out/<commit>/{asset-schema,config-schema}/ |
| manifest | manifest.ts |
out/<commit>/manifest.json, out/<commit>/assets.json |
| packets | extract-packets.ts |
out/<commit>/packets.json |
builds/— private intermediary artifacts (JARs, decompiled source, build zips). Not published due to licensing.out/— public derived data (schemas, manifests, asset indices). Committed to the repo.
make sync # fetch new versions and run all outstanding pipeline stages
make # same as make syncAuthentication against Hytale's R2 storage uses OAuth device flow. On first run you'll be prompted to visit a URL to authenticate; the token is cached in .token.json.
Versions are keyed by commit hash (the 9-character suffix in version strings like 2026.03.26-89796e57b). When a build is promoted from pre-release to release, the commit hash stays the same but the date prefix changes — the pipeline deduplicates these automatically and records all channel appearances in out/versions.json.
{
"commit": "89796e57b",
"channels": { "release": "2026.03.26-89796e57b" },
"source": "full", // "full" | "jar-only" | "unavailable"
"decompiled": true,
"schemas": "full", // "full" | "asset-only" | false
"files": {
"HytaleServer.jar": { "sha256": "...", "size": 125123854 },
"HytaleServer.aot": { "sha256": "...", "size": 131825664 },
"Assets.zip": { "sha256": "...", "size": 1410235628 }
},
"build_zip_sha256": "...",
"jar_manifest": {
"Main-Class": "com.hypixel.hytale.Main",
"Implementation-Version": "2026.03.26-89796e57b",
"Implementation-Revision-Id": "89796e57b95fa62c6306b423dde8dfbffaa03ce7",
// ...
}
}Index of every file in Assets.zip with sha256 and uncompressed size. Only present for full builds.
{
"manifest.json": { "sha256": "...", "size": 45 },
"Common/BlockTextures/Bone_Side.png": { "sha256": "...", "size": 1431 },
// ...
}List of all registered network packets extracted from the decompiled PacketRegistry.java static initializer. Only present for builds with decompiled source.
{
"packets": [
{
"id": 0,
"name": "Connect",
"direction": "ToServer", // "ToServer" | "ToClient" | "Both"
"channel": "Default", // NetworkChannel enum value
"type": "com.hypixel.hytale.protocol.packets.connection.Connect",
"fixedBlockSize": 46,
"maxSize": 38013,
"compressed": false
}
]
}- client binaries?
- launcher binaries?
- server dependencies and their versions extraction
- server launch options
{ "versions": [ { "commit": "89796e57b", "channels": { "pre-release": "2026.03.25-89796e57b", "release": "2026.03.26-89796e57b" } } ] }