Skip to content

Decompiling the Server

The Hytale server JAR is not obfuscated, making it easy to explore the source code. This guide shows how to download and decompile it.

Terminal window
# create working directory
mkdir -p .sources && cd .sources
# get latest version and download
VERSION=$(curl -s "https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml" | sed -n 's/.*<latest>\([^<]*\)<.*/\1/p')
curl -O "https://maven.hytale.com/release/com/hypixel/hytale/Server/${VERSION}/Server-${VERSION}.jar"
mv "Server-${VERSION}.jar" HytaleServer.jar
# decompile with Vineflower (via Docker)
docker run --rm -v "$(pwd):/sources" eclipse-temurin:21-jdk-alpine sh -c '
apk add --no-cache curl > /dev/null 2>&1
curl -fsSL -o /tmp/vf.jar https://github.com/Vineflower/vineflower/releases/download/1.11.2/vineflower-1.11.2.jar
java -jar /tmp/vf.jar \
--decompile-generics=1 \
--decompile-switch-expressions=1 \
--pattern-matching=1 \
--use-debug-var-names=1 \
--use-method-parameters=1 \
--remove-bridge=1 \
--threads=0 \
/sources/HytaleServer.jar /sources/server
'

Output will be in .sources/server/.

Get the latest version from maven-metadata.xml:

Terminal window
curl -s "https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml" | sed -n 's/.*<latest>\([^<]*\)<.*/\1/p'

List all available versions:

Terminal window
curl -s "https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml" | grep '<version>'

After decompiling, explore these packages:

PackageContents
com.hypixel.hytale.server.core.pluginMod API: JavaPlugin, PluginBase
com.hypixel.hytale.server.core.commandCommand system
com.hypixel.hytale.eventEvent system
com.hypixel.hytale.assetstoreAsset loading
com.hypixel.hytale.builtinBuilt-in plugins (good examples)
com.hypixel.hytale.codecSerialization system