For Server Developers

server.properties, Fully Explained

Every key that matters in 2026, including the ones that quietly moved out of the file.

This reference is current as of 26.2. If you're working from a guide written in the 1.21 era, it is wrong in at least three ways: a key you're told to set no longer exists, a key you've never heard of now decides whether your server ticks while empty, and the version string your tooling parses no longer starts with "1.".

What changed recently (and what broke)

allow-nether was removed in 1.21.9

Vanilla dropped the allow-nether property in 1.21.9. Nether portal access is now controlled by the gamerule allowEnteringNetherUsingPortals. On Paper, the equivalent server-level switch is enable-nether in paper-global.yml. If you copied a config forward and expected the Nether to stay disabled, check both.

pause-when-empty-seconds arrived in 1.21.3

Vanilla added pause-when-empty-seconds in 1.21.3: after the configured idle period with no players online, the server stops ticking. Paper disables this by default, because plugins that assume a continuously ticking server — scheduled tasks, timed events, anything counting ticks — behave incorrectly when the world freezes. Treat it as opt-in after a plugin audit, not a free performance win.

region-file-compression is now a vanilla key

In 26.1, the setting previously living under Paper's unsupported-settings.compression-format was merged into vanilla as region-file-compression, with gzip among the supported formats. If you had it set on the Paper side, move it.

Gamerules and version strings changed in 1.21.11

1.21.11 turned gamerules into a registry and renamed them from camelCase to snake_case, with some merged or renamed outright. In the same era, version strings moved to year.drop.hotfix with no leading "1." — so any script doing a prefix match on "1." is now broken. Our Paper plugin best practices covers the plugin-side fallout, and the latest update roundup covers which versions shipped when.

Identity and access

KeyWhat it does
online-modeVerifies connecting players against Mojang authentication. Default true.
white-listRestricts joining to players on the whitelist.
enforce-whitelistKicks non-whitelisted players already online when the whitelist reloads.
max-playersConcurrent player slot limit.
server-portListening port. Default 25565.
server-ipBind address. Leave blank to bind all interfaces.

Setting online-mode=false removes account verification entirely. Anyone can connect claiming any username, including the username of an operator. Multiple sources also treat running a public offline-mode server as an EULA violation. If you need it for a proxy or a cracked-client audience, pair it with a whitelist and an authentication plugin, and understand you are accepting impersonation risk.

The whitelist is the single most effective anti-griefing control for a small server — it's been described on r/admincraft as the number one way to protect against random griefing. Naming is a mild trap: the property is white-list with a hyphen, the command is /whitelist. Setup context lives in how to make a Minecraft server.

World and gameplay keys

KeyWhat it does
level-nameWorld folder name.
level-seedGeneration seed; only applies to a world being created.
level-typeGenerator type (normal, flat, large_biomes, amplified, single_biome).
gamemodeDefault gamemode for new players.
force-gamemodeResets players to the default gamemode on join.
difficultypeaceful / easy / normal / hard.
hardcoreDeath results in spectator mode; overrides difficulty to hard.
pvpPlayer-versus-player damage toggle.
spawn-protectionRadius around spawn non-ops cannot build in.
allow-flightControls the anti-cheat flight kick, not creative flight.
max-world-sizeWorld border maximum radius.

allow-flight is the most misread key in the file. It does not grant flight. It controls whether the server kicks a survival-mode player for airborne movement it considers illegitimate. If you run elytra-heavy gameplay or movement plugins, leaving it false produces mystery kicks.

One caveat for multi-world setups: several of these keys apply to the primary world only. Multi-world plugins maintain their own per-world settings and will override what's here.

Performance keys

KeyWhat it does
view-distanceChunk radius sent to clients.
simulation-distanceChunk radius that actually ticks entities and blocks.
entity-broadcast-range-percentageScales how far entity updates are sent.
max-tick-timeWatchdog threshold before the server considers itself hung.
sync-chunk-writesSynchronous chunk saving; safer, slower.
network-compression-thresholdPacket size above which compression kicks in.
region-file-compressionRegion file compression format (vanilla since 26.1; gzip supported).
pause-when-empty-secondsIdle seconds before the server stops ticking (Paper disables by default).

The useful tuning insight: view-distance and simulation-distance are separate for a reason. Players notice view distance — it's how far they can see. Simulation distance is what costs you TPS. Keeping view distance generous and simulation distance modest gives you a server that looks good and ticks well.

Caveat: on Paper and its forks, several of these have per-world equivalents in the Paper config files, and those take precedence. If a value here appears to do nothing, check paper-world-defaults.yml before concluding the key is broken.

Presentation and query keys

KeyWhat it does
motdServer list message.
enable-statusWhether the server responds to list pings at all.
hide-online-playersOmits the player sample from status responses.
enable-query / query.portGameSpy4 query protocol for external monitoring.
enable-rcon / rcon.port / rcon.passwordRemote console access.
resource-pack and related keysServer resource pack URL, hash, prompt and enforcement.
enforce-secure-profileRequires signed chat profiles from clients.

RCON deserves a warning. It is a plaintext protocol with a single shared password and full console authority. If you enable it, bind it to localhost or a private network and reach it over SSH — never expose the RCON port to the internet.

Migration checklist for old configs

  1. Remove allow-nether; set the allowEnteringNetherUsingPortals gamerule, or enable-nether in paper-global.yml.
  2. Move any unsupported-settings.compression-format value to the vanilla region-file-compression key.
  3. Decide deliberately on pause-when-empty-seconds — audit plugins first.
  4. Update gamerule names to snake_case; check for merged or renamed rules.
  5. Fix any tooling that assumes a version string starts with "1.".
  6. Confirm your JDK matches the version you're running (Java 25 from 26.1 onward).

Everything else in the file has been stable for years. The keys that will bite you are the four that moved.

A note on config drift

Every long-running server accumulates settings nobody remembers changing. We keep MCRPG's server config in version control for exactly that reason — when behaviour changes after an update, the diff tells you whether it was you or the game.