Warning
Not affiliated with Hypixel Studios. All trademarks and assets are property of their respective owners.
HTTP API for rendering Hytale character models as GLB, PNG, animated GIF, or MP4 video.
Built on top of blockymodel-merger by JackGamesFTW, special thanks to him!
- Merge character accessories into a single model
- Export as GLB (glTF binary)
- Render to PNG with configurable rotation and background
- Render to animated rotating GIF
- Render to MP4 video (requires FFmpeg)
- Swagger UI documentation
- Go 1.21+
assets/directory with character models and texturesdata/directory with JSON registry files
Note
You must purchase Hytale to obtain assets. Use code jack in the Hytale Store to support Jack's projects.
Download assets.zip from the Hytale Server Manual.
Important: Use the server version, not the client version. The server package includes the data/ directory with registry JSON files.
Clone and build the extraction tool from blockymodel-merger:
git clone https://github.com/hytale-tools/blockymodel-merger.git
cd blockymodel-merger
go build -o extract-assets ./cmd/extract-assets
./extract-assets /path/to/assets.zipThis extracts files into the required structure:
Common/Characters→assets/Characters/Common/Cosmetics→assets/Cosmetics/Common/TintGradients→assets/TintGradients/Cosmetics/CharacterCreator→data/
Copy the resulting assets/ and data/ directories to your blockyserver folder.
git clone https://github.com/yourusername/blockyserver.git
cd blockyserver
go mod tidy
go build -o blockyserver.exe .# Start server on default port 8080
./blockyserver.exe
# Start on custom port
./blockyserver.exe -port 3000| Variable | Default | Description |
|---|---|---|
BLOCKY_DISABLE_GLB |
false |
Disable /render/glb endpoint |
BLOCKY_DISABLE_PNG |
false |
Disable /render/png endpoint |
BLOCKY_DISABLE_GIF |
false |
Disable /render/gif endpoint |
BLOCKY_DISABLE_MP4 |
false |
Disable /render/mp4 endpoint |
Set to true, 1, or yes to disable. Disabled endpoints return 403 Forbidden.
# Example: disable GIF and MP4 endpoints
BLOCKY_DISABLE_GIF=true BLOCKY_DISABLE_MP4=true ./blockyserver.exedocker compose up -dThis mounts assets/ and data/ directories as read-only volumes.
# Build image
docker build -t blockyserver .
# Run container
docker run -d -p 8080:8080 \
-v $(pwd)/assets:/app/assets:ro \
-v $(pwd)/data:/app/data:ro \
blockyserver| Endpoint | Method | Description |
|---|---|---|
/render/glb |
POST | Returns GLB binary |
/render/png |
POST | Returns PNG image |
/render/gif |
POST | Returns animated GIF |
/render/mp4 |
POST | Returns MP4 video |
/docs |
GET | Swagger UI |
/openapi.json |
GET | OpenAPI specification |
/health |
GET | Health check |
curl -X POST http://localhost:8080/render/png \
-H "Content-Type: application/json" \
-d '{
"character": {
"bodyCharacteristic": "Default.02",
"haircut": "Scavenger_Hair.PitchBlack",
"eyes": "Large_Eyes.Pink",
"pants": "Pants_A.Blue",
"undertop": "Shirt_A.White"
},
"rotation": 45,
"background": "transparent",
"width": 512,
"height": 512
}' --output character.png