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
| Key | What it does |
|---|---|
online-mode | Verifies connecting players against Mojang authentication. Default true. |
white-list | Restricts joining to players on the whitelist. |
enforce-whitelist | Kicks non-whitelisted players already online when the whitelist reloads. |
max-players | Concurrent player slot limit. |
server-port | Listening port. Default 25565. |
server-ip | Bind 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
| Key | What it does |
|---|---|
level-name | World folder name. |
level-seed | Generation seed; only applies to a world being created. |
level-type | Generator type (normal, flat, large_biomes, amplified, single_biome). |
gamemode | Default gamemode for new players. |
force-gamemode | Resets players to the default gamemode on join. |
difficulty | peaceful / easy / normal / hard. |
hardcore | Death results in spectator mode; overrides difficulty to hard. |
pvp | Player-versus-player damage toggle. |
spawn-protection | Radius around spawn non-ops cannot build in. |
allow-flight | Controls the anti-cheat flight kick, not creative flight. |
max-world-size | World 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
| Key | What it does |
|---|---|
view-distance | Chunk radius sent to clients. |
simulation-distance | Chunk radius that actually ticks entities and blocks. |
entity-broadcast-range-percentage | Scales how far entity updates are sent. |
max-tick-time | Watchdog threshold before the server considers itself hung. |
sync-chunk-writes | Synchronous chunk saving; safer, slower. |
network-compression-threshold | Packet size above which compression kicks in. |
region-file-compression | Region file compression format (vanilla since 26.1; gzip supported). |
pause-when-empty-seconds | Idle 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
| Key | What it does |
|---|---|
motd | Server list message. |
enable-status | Whether the server responds to list pings at all. |
hide-online-players | Omits the player sample from status responses. |
enable-query / query.port | GameSpy4 query protocol for external monitoring. |
enable-rcon / rcon.port / rcon.password | Remote console access. |
resource-pack and related keys | Server resource pack URL, hash, prompt and enforcement. |
enforce-secure-profile | Requires 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
- Remove
allow-nether; set theallowEnteringNetherUsingPortalsgamerule, orenable-netherinpaper-global.yml. - Move any
unsupported-settings.compression-formatvalue to the vanillaregion-file-compressionkey. - Decide deliberately on
pause-when-empty-seconds— audit plugins first. - Update gamerule names to snake_case; check for merged or renamed rules.
- Fix any tooling that assumes a version string starts with "1.".
- 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.