4.1 KiB
For server owners: server.properties to server.toml
You run a vanilla server today and edit server.properties. With horizon-server you edit one file,
server.toml, instead. Before every start the server writes server.properties from it, so the game reads
exactly what a vanilla server reads. This page maps one to the other. The full guide is
hosting.md; the design is server.md, section 4.
Moving over
Run horizon-server init in your server folder, or horizon-server import server.properties. It reads the
file with vanilla's own parser:
- keys that have a field below go into their section of
server.toml; - any other key that differs from vanilla's default goes into
[properties]; - keys left at their defaults are dropped, so the file stays short;
- your original is kept as
server.properties.imported.
The world folder, ops.json, whitelist.json, the ban lists and usercache.json keep vanilla's names and
formats, so going back to a vanilla server works too.
Keys that have a field
server.properties |
server.toml |
Default |
|---|---|---|
motd |
[server] motd |
"A Minecraft Server" |
server-port |
[server] port |
25565 |
server-ip |
[server] bind |
"" (every address) |
max-players |
[server] max_players |
20 |
online-mode |
[server] online_mode |
true |
white-list |
[server] whitelist |
true |
enforce-whitelist |
[server] enforce_whitelist |
false |
view-distance |
[server] view_distance |
10 |
simulation-distance |
[server] simulation_distance |
10 |
level-name |
[world] name |
"world" |
level-seed |
[world] seed |
"" (random on first start) |
gamemode |
[world] game_mode |
"survival" |
difficulty |
[world] difficulty |
"easy" |
hardcore |
[world] hardcore |
false |
Two details differ from vanilla's file: white-list becomes whitelist, and a seed may be a number or any
text (vanilla hashes text), written as a string.
Every other key
Put any other vanilla key under [properties], spelled as vanilla spells it:
[properties]
spawn-protection = 16
resource-pack = "https://example.com/pack.zip"
A key that has a field above is an error under [properties]; set it in its section.
Settings that are not in server.properties
These belong to horizon-server, not to the game:
server.toml |
Meaning |
|---|---|
[engine] path, resources, restart_on_crash |
Which game program and prepared files to run, and whether to restart it after a crash. |
[backups] every, keep |
Automatic backups ("6h", "0" turns them off) and how many to keep. |
[updates] keep |
Other releases kept besides the one in use and the one rollback goes to. |
[panel] bind, allow_public |
The web panel's address ("" turns it off) and whether it may listen on a public address. |
What to know when you switch
- Edit
server.toml, notserver.properties. The latter is rewritten at every start. - Mistakes stop the start. Unknown keys and values vanilla would refuse are errors, not ignored.
- In-game changes survive. When the game changes a setting itself (
/whitelist on), the supervisor copies it back intoserver.tomlafter the game stops, and keeps your comments and order. - Changes apply at the next restart.
horizon-server config set KEY=VALUEedits the file without opening it; on a running server it appliesdifficulty,defaultgamemodeandwhitelist on|offlive. There is no full live reload yet.
Planned: limiting a server to Horizon clients
The design (server-next.md, section 6) adds one more setting. It is not in
server.toml yet.
[clients]
allow = "any" # "any" (vanilla Java and Horizon) or "horizon" (Horizon clients only)
With "horizon" the server refuses a client that does not identify as Horizon. This is a convenience filter,
not security: Horizon's client is open source, so a modified client can claim to be Horizon. The real gate
stays online_mode, plus the whitelist and bans on top of it.