Hytale Advanced Server Configuration: Difference between revisions
(Created page with "This guide covers advanced Hytale server configuration for experienced administrators. Topics include world pre-generation, server mesh architecture, and detailed JSON configuration options. == Before You Start == This guide assumes you're familiar with: * Basic Hytale server setup (see How to Create a Hytale Server Guide) * Editing JSON files * Using FTP or file management tools '''Important:''' Always back up your server files before making configuration changes...") |
No edit summary |
||
| Line 1: | Line 1: | ||
This guide covers advanced Hytale server configuration | This guide covers advanced Hytale server configuration including complete configuration file references, world pre-generation, and server mesh architecture. | ||
'''Important:''' Always back up your server files before making configuration changes. Stop your server before editing any configuration files. | '''Important:''' Always back up your server files before making configuration changes. Stop your server before editing any configuration files. | ||
== | == Configuration File Locations == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! File !! Purpose | ! File !! Location !! Purpose | ||
|- | |- | ||
| <code>config.json</code> || Main server settings | | <code>config.json</code> || Server root folder || Main server settings | ||
|- | |- | ||
| <code>permissions.json</code> || Player roles | | <code>permissions.json</code> || Server root folder || Player roles and permissions | ||
|- | |- | ||
| <code>bans.json</code> || Banned player list | | <code>bans.json</code> || Server root folder || Banned player list | ||
|- | |- | ||
| <code>whitelist.json</code> || Allowed players | | <code>whitelist.json</code> || Server root folder || Allowed players list | ||
|- | |- | ||
| <code>universe/worlds/[WorldName]/ | | <code>config.json</code> || <code>universe/worlds/[WorldName]/</code> || Per-world settings | ||
|} | |} | ||
== | == Editing Configuration Files == | ||
=== For Survival Servers Customers === | === For Survival Servers Customers === | ||
# Log into your [https://www.survivalservers.com/sspanel/ control panel] | # Log into your [https://www.survivalservers.com/sspanel/ control panel] | ||
# Click '''Configuration Files''' or ''' | # Click '''Stop''' to shut down your server | ||
# | # Click '''Configuration Files''' or use '''FTP Access''' | ||
# | # Edit the desired file and save | ||
# Click '''Start''' to restart your server | |||
=== For Self-Hosted Servers === | === For Self-Hosted Servers === | ||
# Stop your server | # Stop your server (type <code>stop</code> or press <code>Ctrl+C</code>) | ||
# Open the config file in a text editor | |||
# Make your changes and save | # Make your changes and save | ||
# Start your server | # Start your server | ||
== | == Main Server Configuration (config.json) == | ||
<pre> | <pre> | ||
{ | { | ||
"ServerName": "My Hytale Server", | "ServerName": "My Hytale Server", | ||
"MOTD": "Welcome to my server!", | |||
"MaxPlayers": 20, | "MaxPlayers": 20, | ||
"ViewDistance": 12, | "ViewDistance": 12, | ||
"SimulationDistance": 10, | "SimulationDistance": 10, | ||
"WhitelistEnabled": false, | "WhitelistEnabled": false, | ||
"Difficulty": "Normal" | "Difficulty": "Normal", | ||
"DefaultGameMode": "Survival", | |||
"AllowFlight": false, | |||
"SpawnProtection": 16, | |||
"EnableCommandBlock": false, | |||
"MaxWorldSize": 29999984, | |||
"NetworkCompressionThreshold": 256, | |||
"PlayerIdleTimeout": 0, | |||
"PreventProxyConnections": false, | |||
"EnableQuery": false, | |||
"QueryPort": 5521, | |||
"RCON": { | |||
"Enabled": false, | |||
"Port": 5522, | |||
"Password": "" | |||
}, | |||
"Backups": { | |||
"Enabled": true, | |||
"FrequencyMinutes": 60, | |||
"MaxBackups": 24, | |||
"Directory": "./backups" | |||
} | |||
} | } | ||
</pre> | </pre> | ||
| Line 64: | Line 74: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Setting !! Description | ! Setting !! Description | ||
|- | |- | ||
| <code>ServerName</code> || Name | | <code>ServerName</code> || Name displayed to players | ||
|- | |- | ||
| <code> | | <code>MOTD</code> || Message of the day shown on connection | ||
|- | |- | ||
| <code> | | <code>MaxPlayers</code> || Maximum concurrent players | ||
|- | |- | ||
| <code> | | <code>ViewDistance</code> || How far players can see (chunks) | ||
|- | |- | ||
| <code>WhitelistEnabled</code> || Restrict to approved players | | <code>SimulationDistance</code> || How far entities are active | ||
|- | |||
| <code>WhitelistEnabled</code> || Restrict to approved players | |||
|- | |||
| <code>Difficulty</code> || Peaceful, Easy, Normal, Hard | |||
|- | |||
| <code>DefaultGameMode</code> || Survival, Creative, Adventure | |||
|- | |||
| <code>SpawnProtection</code> || Protected radius around spawn (blocks) | |||
|- | |||
| <code>PlayerIdleTimeout</code> || Kick idle players after X minutes (0 = disabled) | |||
|- | |||
| <code>NetworkCompressionThreshold</code> || Packet compression threshold | |||
|} | |} | ||
== World Configuration (universe/worlds/[WorldName]/config.json) == | |||
== World Configuration | |||
<pre> | <pre> | ||
{ | { | ||
"Version": 4, | "Version": 4, | ||
"UUID": { | |||
"$binary": "j2x/idwTQpen24CDfH1+OQ==", | |||
"$type": "04" | |||
}, | |||
"Seed": 1767292261384, | "Seed": 1767292261384, | ||
"WorldGen": { | "WorldGen": { | ||
| Line 93: | Line 113: | ||
"Name": "Default" | "Name": "Default" | ||
}, | }, | ||
"WorldMap": { | |||
"Type": "WorldGen" | |||
}, | |||
"ChunkStorage": { | |||
"Type": "Hytale" | |||
}, | |||
"ChunkConfig": {}, | |||
"IsTicking": true, | "IsTicking": true, | ||
"IsBlockTicking": true, | "IsBlockTicking": true, | ||
| Line 98: | Line 125: | ||
"IsFallDamageEnabled": true, | "IsFallDamageEnabled": true, | ||
"IsGameTimePaused": false, | "IsGameTimePaused": false, | ||
"GameTime": "0001-01-01T08:26:59.761606129Z", | |||
"RequiredPlugins": {}, | |||
"IsSpawningNPC": true, | "IsSpawningNPC": true, | ||
"IsSpawnMarkersEnabled": true, | "IsSpawnMarkersEnabled": true, | ||
"IsAllNPCFrozen": false, | "IsAllNPCFrozen": false, | ||
"GameplayConfig": "Default", | "GameplayConfig": "Default", | ||
"IsCompassUpdating": true, | |||
"IsSavingPlayers": true, | "IsSavingPlayers": true, | ||
"IsSavingChunks": true, | "IsSavingChunks": true, | ||
"IsUnloadingChunks": true | "IsUnloadingChunks": true, | ||
"IsObjectiveMarkersEnabled": true, | |||
"DeleteOnUniverseStart": false, | |||
"DeleteOnRemove": false, | |||
"ResourceStorage": { | |||
"Type": "Hytale" | |||
}, | |||
"Plugin": {} | |||
} | } | ||
</pre> | </pre> | ||
| Line 110: | Line 147: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Setting !! | ! Setting !! Description | ||
|- | |||
| <code>Seed</code> || World generation seed | |||
|- | |||
| <code>IsPvpEnabled</code> || Allow player vs player combat | |||
|- | |||
| <code>IsFallDamageEnabled</code> || Players take fall damage | |||
|- | |- | ||
| <code> | | <code>IsGameTimePaused</code> || Freeze day/night cycle | ||
|- | |- | ||
| <code> | | <code>IsSpawningNPC</code> || Enable mob spawning | ||
|- | |- | ||
| <code> | | <code>IsAllNPCFrozen</code> || Freeze all NPCs in place | ||
|- | |- | ||
| <code> | | <code>IsTicking</code> || World simulation runs | ||
|- | |- | ||
| <code> | | <code>IsBlockTicking</code> || Block updates (crops, liquids) | ||
|- | |- | ||
| <code> | | <code>IsSavingPlayers</code> || Save player data | ||
|- | |- | ||
| <code>IsSavingChunks</code> || Save world changes | | <code>IsSavingChunks</code> || Save world changes | ||
|- | |- | ||
| <code>IsUnloadingChunks</code> || Unload chunks when | | <code>IsUnloadingChunks</code> || Unload empty chunks | ||
|- | |||
| <code>DeleteOnUniverseStart</code> || Delete world on server start | |||
|- | |||
| <code>DeleteOnRemove</code> || Delete world files when removed | |||
|} | |} | ||
== | == Permissions Configuration (permissions.json) == | ||
<pre> | |||
{ | |||
"Groups": { | |||
"default": { | |||
"DisplayName": "Player", | |||
"Prefix": "", | |||
"Permissions": [ | |||
"hytale.chat", | |||
"hytale.build", | |||
"hytale.break", | |||
"hytale.interact", | |||
"hytale.command.help", | |||
"hytale.command.spawn", | |||
"hytale.command.home" | |||
], | |||
"Inheritance": [] | |||
}, | |||
"vip": { | |||
"DisplayName": "VIP", | |||
"Prefix": "[VIP] ", | |||
"Permissions": [ | |||
"hytale.command.fly", | |||
"hytale.command.nick", | |||
"hytale.bypass.afk" | |||
], | |||
"Inheritance": ["default"] | |||
}, | |||
"moderator": { | |||
"DisplayName": "Moderator", | |||
"Prefix": "[MOD] ", | |||
"Permissions": [ | |||
"hytale.command.kick", | |||
"hytale.command.mute", | |||
"hytale.command.warn", | |||
"hytale.command.tp", | |||
"hytale.command.tphere", | |||
"hytale.command.vanish", | |||
"hytale.bypass.spam" | |||
], | |||
"Inheritance": ["vip"] | |||
}, | |||
"admin": { | |||
"DisplayName": "Admin", | |||
"Prefix": "[ADMIN] ", | |||
"Permissions": [ | |||
"hytale.command.ban", | |||
"hytale.command.unban", | |||
"hytale.command.give", | |||
"hytale.command.gamemode", | |||
"hytale.command.time", | |||
"hytale.command.weather", | |||
"hytale.command.whitelist" | |||
], | |||
"Inheritance": ["moderator"] | |||
}, | |||
"owner": { | |||
"DisplayName": "Owner", | |||
"Prefix": "[OWNER] ", | |||
"Permissions": [ | |||
"*" | |||
], | |||
"Inheritance": [] | |||
} | |||
}, | |||
"Players": { | |||
"your-uuid-here": { | |||
"Group": "owner", | |||
"AdditionalPermissions": [] | |||
}, | |||
"friend-uuid-here": { | |||
"Group": "admin", | |||
"AdditionalPermissions": [ | |||
"hytale.command.stop" | |||
] | |||
} | |||
} | |||
} | |||
</pre> | |||
* <code>*</code> grants all permissions | |||
* <code>Inheritance</code> lets groups build on each other | |||
* <code>AdditionalPermissions</code> adds extra permissions to specific players beyond their group | |||
* Changes require a server restart | |||
== World Pre-Generation == | |||
Pre-generating creates terrain ahead of time, reducing lag when players explore. | |||
'''Method 1: In-Game Exploration''' | '''Method 1: In-Game Exploration''' | ||
# Start your server and log in as admin | |||
# Start your server | |||
# Fly around the map to generate chunks | # Fly around the map to generate chunks | ||
# The server saves chunks as you explore | # The server saves chunks as you explore | ||
'''Method 2: | '''Method 2: Pre-Generation Mods''' | ||
# Add a pre-gen mod to your <code>mods/</code> folder | |||
# | |||
# Configure the area size and center point | # Configure the area size and center point | ||
# Run the pre-generation command | # Run the pre-generation command | ||
'''Method 3: Command-Line | '''Method 3: Command-Line''' | ||
<pre> | |||
java -jar HytaleServer.jar --help | |||
</pre> | |||
Check for built-in pre-generation options. | |||
== Server Mesh Architecture (Multi-Server Networks) == | == Server Mesh Architecture (Multi-Server Networks) == | ||
Hytale has built-in support for connecting multiple servers together without third-party proxies | Hytale has built-in support for connecting multiple servers together without third-party proxies. | ||
<pre> | <pre> | ||
{ | { | ||
"Network": { | |||
"Mode": "mesh", | |||
"ServerId": "lobby-1", | |||
"SharedSecret": "your-secure-secret-key-here" | |||
}, | |||
"Referrals": { | "Referrals": { | ||
"Enabled": true, | "Enabled": true, | ||
"Targets": { | "Targets": { | ||
"survival": { | "survival": { | ||
"Host": "survival.myserver.com", | "Host": "survival.myserver.com", | ||
"Port": | "Port": 5520, | ||
"DisplayName": "Survival World" | |||
}, | |||
"creative": { | |||
"Host": "creative.myserver.com", | |||
"Port": 5520, | |||
"DisplayName": "Creative World" | |||
}, | |||
"minigames": { | |||
"Host": "games.myserver.com", | |||
"Port": 5520, | |||
"DisplayName": "Minigames" | |||
} | } | ||
} | } | ||
} | }, | ||
"Redirect": { | |||
"Enabled": true, | |||
"DefaultTarget": "lobby", | |||
"Rules": [ | |||
{ | |||
"Condition": "ServerFull", | |||
"Target": "lobby-2" | |||
}, | |||
{ | |||
"Condition": "Maintenance", | |||
"Target": "maintenance" | |||
} | |||
] | |||
}, | |||
"Fallback": { | "Fallback": { | ||
"Enabled": true, | "Enabled": true, | ||
| Line 250: | Line 337: | ||
</pre> | </pre> | ||
= | {| class="wikitable" | ||
|- | |||
! Feature !! Description | |||
|- | |||
| '''Player Referral''' || Transfer players between servers seamlessly | |||
|- | |||
| '''Connection Redirect''' || Redirect during handshake before full connection | |||
|- | |||
| '''Disconnect Fallback''' || Auto-reconnect to fallback if server crashes | |||
|} | |||
'''Security:''' Referral payloads pass through the client. Use <code>SharedSecret</code> to cryptographically sign payloads so receiving servers can verify authenticity. | |||
''' | '''Custom Proxies:''' Build proxy servers using Netty QUIC. Packet definitions available in <code>HytaleServer.jar</code> at <code>com.hypixel.hytale.protocol.packets</code>. | ||
== Command-Line Arguments == | |||
<pre> | |||
java [JVM options] -jar HytaleServer.jar [server options] | |||
</pre> | |||
=== JVM Options === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Option !! Description !! Example | ||
|- | |- | ||
| <code>- | | <code>-Xms</code> || Initial memory allocation || <code>-Xms4G</code> | ||
|- | |- | ||
| <code>- | | <code>-Xmx</code> || Maximum memory allocation || <code>-Xmx4G</code> | ||
|- | |- | ||
| <code>- | | <code>-XX:+UseG1GC</code> || Use G1 garbage collector || Recommended for 8GB+ | ||
|- | |- | ||
| <code>-- | | <code>-XX:AOTCache</code> || Use AOT cache for faster startup || <code>-XX:AOTCache=HytaleServer.aot</code> | ||
|} | |||
=== Server Options === | |||
{| class="wikitable" | |||
|- | |- | ||
! Option !! Description !! Default | |||
|- | |- | ||
| <code>-- | | <code>--assets <path></code> || Path to Assets.zip (required) || None | ||
|- | |- | ||
| <code>-- | | <code>--bind <ip:port></code> || Address and port to listen on || 0.0.0.0:5520 | ||
|- | |- | ||
| <code>-- | | <code>--auth-mode <mode></code> || <code>authenticated</code> or <code>offline</code> || authenticated | ||
|- | |- | ||
| <code>-- | | <code>--backup</code> || Enable automatic backups || Disabled | ||
| | |||
|- | |- | ||
| <code>--backup-dir <path></code> || Backup storage location || ./backups | |||
|- | |- | ||
| | | <code>--backup-frequency <mins></code> || Backup interval || 60 | ||
|- | |- | ||
| | | <code>--disable-sentry</code> || Disable crash reporting || Enabled | ||
|- | |- | ||
| | | <code>--allow-op</code> || Allow operator commands || Disabled | ||
|- | |- | ||
| | | <code>--accept-early-plugins</code> || Load experimental plugins || Disabled | ||
|} | |} | ||
== | === Example Launch Scripts === | ||
'''Production server (Windows - start.bat):''' | |||
<pre> | |||
@echo off | |||
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 | |||
pause | |||
</pre> | |||
= | '''Production server (Linux - start.sh):''' | ||
<pre> | |||
#!/bin/bash | |||
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 | |||
</pre> | |||
'''Development server:''' | |||
<pre> | <pre> | ||
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --auth-mode offline --disable-sentry | |||
</pre> | </pre> | ||
== See Also == | == See Also == | ||
Revision as of 11:02, 12 January 2026
This guide covers advanced Hytale server configuration including complete configuration file references, world pre-generation, and server mesh architecture.
Important: Always back up your server files before making configuration changes. Stop your server before editing any configuration files.
Configuration File Locations
| File | Location | Purpose |
|---|---|---|
config.json |
Server root folder | Main server settings |
permissions.json |
Server root folder | Player roles and permissions |
bans.json |
Server root folder | Banned player list |
whitelist.json |
Server root folder | Allowed players list |
config.json |
universe/worlds/[WorldName]/ |
Per-world settings |
Editing Configuration Files
For Survival Servers Customers
- Log into your control panel
- Click Stop to shut down your server
- Click Configuration Files or use FTP Access
- Edit the desired file and save
- Click Start to restart your server
For Self-Hosted Servers
- Stop your server (type
stopor pressCtrl+C) - Open the config file in a text editor
- Make your changes and save
- Start your server
Main Server Configuration (config.json)
{
"ServerName": "My Hytale Server",
"MOTD": "Welcome to my server!",
"MaxPlayers": 20,
"ViewDistance": 12,
"SimulationDistance": 10,
"WhitelistEnabled": false,
"Difficulty": "Normal",
"DefaultGameMode": "Survival",
"AllowFlight": false,
"SpawnProtection": 16,
"EnableCommandBlock": false,
"MaxWorldSize": 29999984,
"NetworkCompressionThreshold": 256,
"PlayerIdleTimeout": 0,
"PreventProxyConnections": false,
"EnableQuery": false,
"QueryPort": 5521,
"RCON": {
"Enabled": false,
"Port": 5522,
"Password": ""
},
"Backups": {
"Enabled": true,
"FrequencyMinutes": 60,
"MaxBackups": 24,
"Directory": "./backups"
}
}
| Setting | Description |
|---|---|
ServerName |
Name displayed to players |
MOTD |
Message of the day shown on connection |
MaxPlayers |
Maximum concurrent players |
ViewDistance |
How far players can see (chunks) |
SimulationDistance |
How far entities are active |
WhitelistEnabled |
Restrict to approved players |
Difficulty |
Peaceful, Easy, Normal, Hard |
DefaultGameMode |
Survival, Creative, Adventure |
SpawnProtection |
Protected radius around spawn (blocks) |
PlayerIdleTimeout |
Kick idle players after X minutes (0 = disabled) |
NetworkCompressionThreshold |
Packet compression threshold |
World Configuration (universe/worlds/[WorldName]/config.json)
{
"Version": 4,
"UUID": {
"$binary": "j2x/idwTQpen24CDfH1+OQ==",
"$type": "04"
},
"Seed": 1767292261384,
"WorldGen": {
"Type": "Hytale",
"Name": "Default"
},
"WorldMap": {
"Type": "WorldGen"
},
"ChunkStorage": {
"Type": "Hytale"
},
"ChunkConfig": {},
"IsTicking": true,
"IsBlockTicking": true,
"IsPvpEnabled": false,
"IsFallDamageEnabled": true,
"IsGameTimePaused": false,
"GameTime": "0001-01-01T08:26:59.761606129Z",
"RequiredPlugins": {},
"IsSpawningNPC": true,
"IsSpawnMarkersEnabled": true,
"IsAllNPCFrozen": false,
"GameplayConfig": "Default",
"IsCompassUpdating": true,
"IsSavingPlayers": true,
"IsSavingChunks": true,
"IsUnloadingChunks": true,
"IsObjectiveMarkersEnabled": true,
"DeleteOnUniverseStart": false,
"DeleteOnRemove": false,
"ResourceStorage": {
"Type": "Hytale"
},
"Plugin": {}
}
| Setting | Description |
|---|---|
Seed |
World generation seed |
IsPvpEnabled |
Allow player vs player combat |
IsFallDamageEnabled |
Players take fall damage |
IsGameTimePaused |
Freeze day/night cycle |
IsSpawningNPC |
Enable mob spawning |
IsAllNPCFrozen |
Freeze all NPCs in place |
IsTicking |
World simulation runs |
IsBlockTicking |
Block updates (crops, liquids) |
IsSavingPlayers |
Save player data |
IsSavingChunks |
Save world changes |
IsUnloadingChunks |
Unload empty chunks |
DeleteOnUniverseStart |
Delete world on server start |
DeleteOnRemove |
Delete world files when removed |
Permissions Configuration (permissions.json)
{
"Groups": {
"default": {
"DisplayName": "Player",
"Prefix": "",
"Permissions": [
"hytale.chat",
"hytale.build",
"hytale.break",
"hytale.interact",
"hytale.command.help",
"hytale.command.spawn",
"hytale.command.home"
],
"Inheritance": []
},
"vip": {
"DisplayName": "VIP",
"Prefix": "[VIP] ",
"Permissions": [
"hytale.command.fly",
"hytale.command.nick",
"hytale.bypass.afk"
],
"Inheritance": ["default"]
},
"moderator": {
"DisplayName": "Moderator",
"Prefix": "[MOD] ",
"Permissions": [
"hytale.command.kick",
"hytale.command.mute",
"hytale.command.warn",
"hytale.command.tp",
"hytale.command.tphere",
"hytale.command.vanish",
"hytale.bypass.spam"
],
"Inheritance": ["vip"]
},
"admin": {
"DisplayName": "Admin",
"Prefix": "[ADMIN] ",
"Permissions": [
"hytale.command.ban",
"hytale.command.unban",
"hytale.command.give",
"hytale.command.gamemode",
"hytale.command.time",
"hytale.command.weather",
"hytale.command.whitelist"
],
"Inheritance": ["moderator"]
},
"owner": {
"DisplayName": "Owner",
"Prefix": "[OWNER] ",
"Permissions": [
"*"
],
"Inheritance": []
}
},
"Players": {
"your-uuid-here": {
"Group": "owner",
"AdditionalPermissions": []
},
"friend-uuid-here": {
"Group": "admin",
"AdditionalPermissions": [
"hytale.command.stop"
]
}
}
}
*grants all permissionsInheritancelets groups build on each otherAdditionalPermissionsadds extra permissions to specific players beyond their group- Changes require a server restart
World Pre-Generation
Pre-generating creates terrain ahead of time, reducing lag when players explore.
Method 1: In-Game Exploration
- Start your server and log in as admin
- Fly around the map to generate chunks
- The server saves chunks as you explore
Method 2: Pre-Generation Mods
- Add a pre-gen mod to your
mods/folder - Configure the area size and center point
- Run the pre-generation command
Method 3: Command-Line
java -jar HytaleServer.jar --help
Check for built-in pre-generation options.
Server Mesh Architecture (Multi-Server Networks)
Hytale has built-in support for connecting multiple servers together without third-party proxies.
{
"Network": {
"Mode": "mesh",
"ServerId": "lobby-1",
"SharedSecret": "your-secure-secret-key-here"
},
"Referrals": {
"Enabled": true,
"Targets": {
"survival": {
"Host": "survival.myserver.com",
"Port": 5520,
"DisplayName": "Survival World"
},
"creative": {
"Host": "creative.myserver.com",
"Port": 5520,
"DisplayName": "Creative World"
},
"minigames": {
"Host": "games.myserver.com",
"Port": 5520,
"DisplayName": "Minigames"
}
}
},
"Redirect": {
"Enabled": true,
"DefaultTarget": "lobby",
"Rules": [
{
"Condition": "ServerFull",
"Target": "lobby-2"
},
{
"Condition": "Maintenance",
"Target": "maintenance"
}
]
},
"Fallback": {
"Enabled": true,
"Server": {
"Host": "lobby.myserver.com",
"Port": 5520
}
}
}
| Feature | Description |
|---|---|
| Player Referral | Transfer players between servers seamlessly |
| Connection Redirect | Redirect during handshake before full connection |
| Disconnect Fallback | Auto-reconnect to fallback if server crashes |
Security: Referral payloads pass through the client. Use SharedSecret to cryptographically sign payloads so receiving servers can verify authenticity.
Custom Proxies: Build proxy servers using Netty QUIC. Packet definitions available in HytaleServer.jar at com.hypixel.hytale.protocol.packets.
Command-Line Arguments
java [JVM options] -jar HytaleServer.jar [server options]
JVM Options
| Option | Description | Example |
|---|---|---|
-Xms |
Initial memory allocation | -Xms4G
|
-Xmx |
Maximum memory allocation | -Xmx4G
|
-XX:+UseG1GC |
Use G1 garbage collector | Recommended for 8GB+ |
-XX:AOTCache |
Use AOT cache for faster startup | -XX:AOTCache=HytaleServer.aot
|
Server Options
| Option | Description | Default |
|---|---|---|
--assets <path> |
Path to Assets.zip (required) | None |
--bind <ip:port> |
Address and port to listen on | 0.0.0.0:5520 |
--auth-mode <mode> |
authenticated or offline |
authenticated |
--backup |
Enable automatic backups | Disabled |
--backup-dir <path> |
Backup storage location | ./backups |
--backup-frequency <mins> |
Backup interval | 60 |
--disable-sentry |
Disable crash reporting | Enabled |
--allow-op |
Allow operator commands | Disabled |
--accept-early-plugins |
Load experimental plugins | Disabled |
Example Launch Scripts
Production server (Windows - start.bat):
@echo off java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 pause
Production server (Linux - start.sh):
#!/bin/bash java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60
Development server:
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --auth-mode offline --disable-sentry
See Also
- How to Create a Hytale Server Guide
- How to Join a Hytale Server
- How to Install Mods on a Hytale Server
- Official Hytale Website
- Hytale Support & Documentation
- Rent a Hytale Server from Survival Servers