Hytale server config

The settings of a Hytale 0.7.7 dedicated server: config.json, each world's own config file, and the options HytaleServer.jar takes on the command line. Keys, types and defaults come from the JSON schemas the server generates for itself, and launch options from its --help. Where the server gives no description, only the type and default are shown.

config.json

Lives next to HytaleServer.jar; the server writes it on its first start. Dotted keys are nested objects: Backup.FrequencyMinutes is FrequencyMinutes inside Backup. 19 of the 64 keys carry a description in the schema.

KeyTypeDefaultWhat it does
Versioninteger––
ServerNamestringHytale ServerThe server's name.
MOTDstring(empty)Message of the day.
Passwordstring(empty)Password players must enter to join; empty means none.
SentryDsnstring–The Sentry DSN for error reports. If absent, the server uses the Hytale DSN. If blank, Sentry is off. A custom DSN also receives errors from third-party plugins. Singleplayer ignores this key.
MaxPlayersinteger100Most players online at once.
MaxViewRadiusinteger32Largest view distance the server sends, in chunks.
Defaultsobject{"World":"default","GameMode":"Adventure","HardcoreMode":"None","CrashRecovery":{}}–
Defaults.WorldstringdefaultThe world players join by default.
Defaults.GameModestringAdventureThe game mode players get by default.
Defaults.GameModeTypeOnDeathstring––
Defaults.HardcoreModestring––
Defaults.HardcoreLivesinteger–Lives per player for PerPlayer, or the shared pool size for Global. Defaults to 1. None ignores it.
Defaults.CrashRecoveryobject{}Recovery policy for the default world when its thread crashes.
ConnectionTimeoutsobject{}–
ConnectionTimeouts.InitialTimeoutstring––
ConnectionTimeouts.AuxStreamPendingTimeoutstring––
ConnectionTimeouts.AuthTimeoutstring––
ConnectionTimeouts.AuthGrantTimeoutstring––
ConnectionTimeouts.AuthTokenTimeoutstring––
ConnectionTimeouts.AuthServerExchangeTimeoutstring––
ConnectionTimeouts.PasswordTimeoutstring––
ConnectionTimeouts.PlayTimeoutstring––
ConnectionTimeouts.SetupWorldSettingsstring––
ConnectionTimeouts.SetupAssetsRequeststring––
ConnectionTimeouts.SetupSendAssetsstring––
ConnectionTimeouts.SetupAddToUniversestring––
RateLimitobject{}–
RateLimit.Enabledboolean–Determines whether packet rate limiting is enabled.
RateLimit.PacketsPerSecondinteger–The number of packets allowed per second.
RateLimit.BurstCapacityinteger–The number of packets that can be sent in a burst before rate limiting is applied.
Modulesobject––
LogLevelsobject––
Pluginsobject––
Modsobject––
ModLoadOrderarray––
DefaultModsEnabledboolean––
RequireJoinPermissionbooleanfalse–
DisplayTmpTagsInStringsbooleanfalse–
PlayerStorage–––
UniverseResourceStorage–––
BanStorage–––
AuthCredentialStore–––
Updateobject{}–
Update.Enabledboolean–Determines whether to enable automatic update checks.
Update.CheckIntervalSecondsinteger–The interval, in seconds, between automatic update checks.
Update.NotifyPlayersOnAvailableboolean–Whether to notify players in-game when an update is available.
Update.Patchlinestring–The patchline to check for updates on.
Update.RunBackupBeforeUpdateboolean–Determines whether to run a backup before applying an update.
Update.BackupConfigBeforeUpdateboolean–Determines whether to backup the server config before applying an update.
Update.AutoApplyModestring–The mode for automatically applying updates.
Update.AutoApplyDelayMinutesinteger–The delay in minutes before auto-applying an update while using SCHEDULED mode.
Backupobject{}–
Backup.Enabledboolean–Determines whether automatic backups are enabled. Can be overridden by the --backup CLI option.
Backup.FrequencyMinutesinteger–The backup frequency in minutes. Must be at least 1. Can be overridden by the --backup-frequency CLI option.
Backup.Directorystring–The backup directory path. Can be overridden by the --backup-directory CLI option.
Backup.MaxCountinteger–The maximum number of recent backups to retain. Must be at least 1. Can be overridden by the --backup-max-count CLI option.
Backup.ArchiveMaxCountinteger–The maximum number of archived backups to retain. Must be at least 1. Can be overridden by the --backup-archive-max-count CLI option.
WorldMapobject{}–
WorldMap.ViewRadiusMininteger––
WorldMap.ViewRadiusMaxinteger––
FallbackServerobject––
FallbackServer.Hoststring(empty)Address of the fallback server.
FallbackServer.Portinteger0Port of the fallback server.

World config

Each world has its own universe/worlds/<name>/config.json with these keys: PvP, fall damage, NPC spawning, time of day and more. 40 of the 44 keys carry a description in the schema.

KeyTypeDefaultWhat it does
Versioninteger––
UUIDstring–The unique identifier for this world. Instances will ignore this and replace it with a freshly generated UUID when spawning the instance.
DisplayNamestring–The player facing name of this world.
Seedinteger–The seed of the world, used for world generation. If a seed is not set then one will be randomly generated.
SpawnPointobject–Deprecated: Please use SpawnProvider instead.
SpawnProvider––Sets the spawn provider for the world. This controls where new players will enter the world at. This can be provided by world generation in some cases.
WorldGen––Sets the world generator that will be used by the world.
WorldMap–––
WorldMapConfigobject–Optional per-world overrides for world map configuration and limits.
ChunkStorage––Sets the storage system that will be used by the world to store chunks.
ChunkConfigobject{}Configuration for chunk related settings
IsTickingbooleantrueSets whether chunks in this world are ticking or not.
IsBlockTickingbooleantrueSets whether blocks in this world are ticking or not.
IsPvpEnabledbooleanfalseSets whether PvP is allowed in this world or not.
IsFallDamageEnabledbooleantrueSets whether fall damage is allowed in this world or not.
IsGameTimePausedbooleanfalseSets whether the game time is paused. This effects things like day/night cycles and things that rely on those.
GameTimestring–The current time of day in the world.
ForcedWeatherstring–Sets the type of weather that is being forced to be active in this world.
ClientEffectsobject{"SunHeightPercent":100,"SunAngleDegrees":0,"BloomIntensity":0.30000001192092896,"BloomPower":8,"SunIntensity":0.25,"SunshaftIntensity":0.30000001192092896,"SunshaftScaleFactor":4}Settings for the client's weather and post-processing effects in this world.
PregenerateRegionobject––
RequiredPluginsobject–Sets the plugins that are required to be enabled for this world to function.
GameModestring–Sets the default gamemode for this world.
DefaultPermissionGroupstring–The default permission group assigned to new players joining this world.
IsSpawningNPCbooleantrueWhether NPCs can spawn in this world or not.
IsBlockSpawnersEnabledbooleantrueWhether block spawners resolve into their target blocks in this world.
IsSpawnMarkersEnabledbooleantrueWhether spawn markers are enabled for this world.
IsAllNPCFrozenbooleanfalseWhether all NPCs are frozen for this world
GameplayConfigstringDefaultThe gameplay configuration being used by this world
Deathobject–Inline death configuration overrides for this world. If set, these values take precedence over the referenced GameplayConfig.
DaytimeDurationSecondsinteger–Override for the duration of daytime in seconds. If set, takes precedence over the referenced GameplayConfig.
NighttimeDurationSecondsinteger–Override for the duration of nighttime in seconds. If set, takes precedence over the referenced GameplayConfig.
IsCompassUpdatingbooleantrueWhether the compass is updating in this world
IsSavingPlayersbooleantrueWhether the configuration for player's is being saved for players in this world.
IsSavingChunksbooleantrueWhether the chunk data is allowed to be saved to the disk for this world.
SaveNewChunksbooleantrueWhether newly generated chunks should be marked for saving or not. Enabling this can prevent random chunks from being out of place if/when worldgen changes but will increase the size of the world on disk.
IsUnloadingChunksbooleantrueWhether the chunks should be unloaded like normally, or should be prevented from unloading at all.
IsObjectiveMarkersEnabledbooleantrueWhether objective markers are enabled for this world.
DeleteOnUniverseStartbooleanfalseWhether this world should be deleted when loaded from Universe start. By default this is when going through the world folders in the universe directory.
DeleteOnRemovebooleanfalseWhether this world should be deleted once its been removed from the server
CrashRecoveryobject–Recovery policy for this world when its thread crashes. Overrides the server default.
Instanceobject–Instance specific configuration.
DisabledFluidTickersarray–A set of fluid tag strings (e.g. "Fluid=Water", "Fire=Fire") whose tickers should be disabled in this world. Fluids matching any of these tags will not tick.
ResourceStorage––Sets the storage system that will be used to store resources.
Pluginobject––

Launch options

Options for java -jar HytaleServer.jar, as its own --help prints them. The bundled start.sh already passes --assets ../Assets.zip and the backup options.

OptionValueDefaultWhat it does
--accept-early-pluginsswitch–You acknowledge that loading early plugins is unsupported and may cause stability issues.
--allow-install-dirswitch–Allows the server to run inside the launcher install directory. You accept the risk of data loss.
--allow-opswitch––
--assets<Path>../HytaleAssetsAsset directory
--auth-mode<authenticated|offline|insecure>AUTHENTICATEDAuthentication mode
--bind or -b<InetSocketAddress>0.0.0.0:5520Port to listen on
--backupswitch––
--backup-archive-max-count<Integer>5–
--backup-dir<Path>––
--backup-frequency<Integer>30–
--backup-max-count<Integer>5–
--bareswitch–Runs the server bare. For example without loading worlds, binding to ports or creating directories. (Note: Plugins will still be loaded which may not respect this flag)
--boot-command<String>–Runs command on boot. If multiple commands are provided they are executed synchronously in order.
--bootstrapswitch–Runs the server in bootstrap mode. Only the plugins required to authenticate and download the full server payload are loaded; use '/update download' to populate the current directory with Assets.zip, start.sh/bat and the Server/ JAR layout. Implies --bare.
--client-pid<Integer>––
--disable-asset-compareswitch––
--disable-cpb-buildswitch–Disables building of compact prefab buffers
--disable-file-watcherswitch––
--disable-sentryswitch––
--early-plugins<Path>–Additional early plugin directories to load from
--event-debugswitch––
--force-network-flush<Boolean>true–
--generate-asset-schema<Path>–Generate asset JSON schemas to the specified directory and exit
--generate-config-schema<Path>–Generate config JSON schemas to the specified directory and exit
--helpswitch–Print's this message.
--identity-token<String>–Identity token (JWT)
--ignore-broken-modsswitch–Ignores broken mods, attempting to allow the server to boot even if one fails to load
--log<KeyValueHolder>–Sets the logger level.
--migrate-worlds<String>–Worlds to migrate
--migrations<Object2ObjectOpenHashMap>–The migrations to run
--mods<Path>–Additional mods directories
--owner-name<String>––
--owner-uuid<UUID>––
--prefab-cache<Path>–Prefab cache directory for immutable assets
--recovery-mode<Options$RecoveryMode>–How to handle broken chunks when encountered during recovery
--session-token<String>–Session token for Session Service API
--shutdown-after-validateswitch–Automatically shutdown the server after asset and/or prefab validation.
--singleplayerswitch––
--transport or -t<TransportType>QUICTransport type
--universe<Path>––
--validate-assetsswitch–Causes the server to exit with an error code if any assets are invalid.
--validate-prefabsswitch–Causes the server to exit with an error code if any prefabs are invalid.
--validate-world-genswitch–Causes the server to exit with an error code if default world gen is invalid.
--verify-worldsswitch–Verify all worlds and then exits
--versionswitch–Prints version information.
--world-gen<Path>–World gen directory

The default config.json

What a fresh 0.7.7 server writes on its first start, before any change:

{
  "Version": 4,
  "ServerName": "Hytale Server",
  "MOTD": "",
  "Password": "",
  "MaxPlayers": 100,
  "MaxViewRadius": 32,
  "Defaults": {
    "World": "default",
    "GameMode": "Adventure",
    "HardcoreMode": "None",
    "CrashRecovery": {}
  },
  "ConnectionTimeouts": {},
  "RateLimit": {},
  "Modules": {
    "Telemetry": {
      "Modules": {}
    }
  },
  "LogLevels": {},
  "Mods": {},
  "RequireJoinPermission": false,
  "DisplayTmpTagsInStrings": false,
  "PlayerStorage": {
    "Type": "Hytale"
  },
  "UniverseResourceStorage": {
    "Type": "Hytale"
  },
  "BanStorage": {
    "Type": "Disk",
    "Path": "bans.json"
  },
  "AuthCredentialStore": {
    "Type": "Encrypted",
    "Path": "auth.enc"
  },
  "Update": {},
  "Backup": {},
  "WorldMap": {}
}

Read from the Hytale 0.7.7 server: its config schemas, its --help and one offline boot.