server.properties uitgelegd: welke regels er echt toe doen
server.properties is het configuratiebestand in de hoofdmap van je Minecraft-server: elke regel is één instelling in het formaat sleutel=waarde. De twee regels met veruit de grootste prestatie-impact zijn view-distance en simulation-distance, allebei standaard 10. Bijna elke wijziging wordt pas actief na een volledige herstart, en een handvol velden zoals level-seed en level-type doet alleen iets op het moment dat de wereld voor het eerst wordt gegenereerd.
Waar staat server.properties en hoe pas je het veilig aan?
Het bestand staat naast je serverjar in de hoofdmap, in een Pterodactyl-paneel onder Bestandsbeheer. Het wordt pas aangemaakt nadat de server één keer volledig is opgestart, dus zie je het na een verse installatie niet, start dan eerst een keer op.
- Stop de server volledig. Een draaiende server schrijft
server.propertiesbij het afsluiten opnieuw weg en overschrijft wat jij net had ingetypt. - Open het bestand in de bestandsbeheerder van je paneel, of via SFTP.
- Pas alleen de waarde achter het isgelijkteken aan. Geen spaties eromheen, geen aanhalingstekens, en
trueenfalsein kleine letters. - Sla op en start de server.
- Lees de eerste regels van de console. Een ongeldige waarde wordt stilletjes teruggezet naar de standaard.
Let op twee dingen. Regels die met een hekje beginnen zijn commentaar, dus een instelling per ongeluk uitcommentariëren betekent terugvallen op de standaardwaarde. En server-port, server-ip en query.port worden door je paneel beheerd; die met de hand veranderen maakt je server meestal onbereikbaar.
Wat is het verschil tussen view-distance en simulation-distance?
view-distance bepaalt als straal hoeveel chunks de server naar elke client stuurt om te tekenen. simulation-distance bepaalt binnen welke straal de wereld daadwerkelijk leeft: mobs spawnen en bewegen, gewassen groeien, redstone loopt, hoppers verplaatsen items. Beide staan standaard op 10.
Ze kosten verschillende dingen. View-distance kost vooral geheugen en bandbreedte, want elke geladen chunk staat in RAM en gaat over de lijn naar de speler. Bij view-distance 10 gaat het om 21 bij 21 chunks per speler, dus 441 stuks; op 6 is dat 13 bij 13, oftewel 169 chunks, ruim zestig procent minder. Simulation-distance kost CPU-tijd per tick, en dat is precies wat je TPS omlaag trekt. Een server die op 14 TPS blijft steken heeft bijna altijd te veel te simuleren, niet te veel te tekenen.
Praktisch: op een survivalserver met tientallen spelers werkt view-distance=7 met simulation-distance=5 vrijwel altijd beter dan beide op 10. Op een vriendenserver met vijf spelers mag view-distance gerust op 10 blijven. Bij zware modpacks zoals All the Mods 10, dat minimaal 10 GB RAM vraagt, begin je laag en verhoog je pas als de TPS stabiel blijft. Simulation-distance hoger zetten dan view-distance heeft weinig zin. Ons artikel over het optimaliseren van je Minecraft-server behandelt ook de instellingen buiten dit bestand.
Welke regels doen wat, en welke waarde is verstandig?
| Instelling | Standaard | Verstandige waarde | Wat het doet |
|---|---|---|---|
| view-distance | 10 | 6 tot 8 bij drukte | Straal in chunks die naar elke client gaat |
| simulation-distance | 10 | 4 tot 6 | Straal waarbinnen mobs en redstone tikken |
| max-players | 20 | Wat je hardware trekt | Maximaal aantal spelers tegelijk |
| online-mode | true | true | Controleert elke login bij Mojang |
| difficulty | easy | normal | peaceful, easy, normal of hard |
| gamemode | survival | survival | Modus waarin nieuwe spelers binnenkomen |
| pvp | true | false op een bouwserver | Of spelers elkaar schade kunnen doen |
| spawn-protection | 16 | 0 met een regio-plugin | Blokken rond spawn waar alleen ops bouwen |
| white-list | false | true in de opbouwfase | Alleen namen in whitelist.json mogen erin |
| enable-command-block | false | false | Staat command blocks toe |
| max-tick-time | 60000 | 60000 laten staan | Milliseconden voordat de watchdog ingrijpt |
| level-seed | leeg | Eenmalig of leeg | Seed, alleen bij aanmaken van de wereld |
| level-type | minecraft:normal | minecraft:normal | Generatietype, alleen bij aanmaken |
| motd | A Minecraft Server | Eén korte eigen regel | Tekst in de serverlijst |
| network-compression-threshold | 256 | 256, of hoger achter een proxy | Bytes vanaf waar pakketten gecomprimeerd worden |
max-players is een limiet, geen reservering: hem op 200 zetten maakt je server niet trager, maar helpt ook niets als er echt 200 mensen komen. Bij difficulty is normal voor survivalservers de bruikbare keuze; peaceful laat vijandige mobs volledig verdwijnen en breekt elke mobfarm.
Waarom zet je online-mode nooit zomaar op false?
Met online-mode=true controleert je server bij elke login of het account echt bestaat en of de speler is wie hij zegt. Op false accepteert je server iedere naam die iemand invult. Een willekeurige bezoeker kan dan letterlijk de naam van je hoofdadmin intypen en met alle rechten binnenkomen. Bans zijn ook waardeloos, want de gebande speler verandert gewoon zijn naam.
Er is één legitieme reden om hem uit te zetten: een backend achter een proxy als BungeeCord of Velocity, waarbij de proxy de authenticatie doet. Die backend moet dan onbereikbaar zijn vanaf het internet en moderne forwarding (Velocity) of BungeeGuard gebruiken. Anders is de poort van je backend een open deur. Bij Minecraft-hosting bij MC-Node begint zo'n proxy bij 0,50 euro voor 512 MB.
Voor Bedrock-spelers op je Java-server hoef je online-mode overigens niet uit te zetten: Geyser met Floodgate regelt dat terwijl online-mode op true blijft. Let ook op als je toch wisselt, want offline en online accounts krijgen verschillende UUID's. Spelers raken na de omschakeling hun inventaris, positie en claims kwijt.
Welke velden werken alleen bij het aanmaken van een wereld?
level-seed, level-type en generate-structures worden alleen gelezen als de server een wereld genereert die nog niet bestaat. Verander je ze later, dan blijft alles wat al gegenereerd is precies zoals het was. Bij level-type krijg je zelfs een zichtbare naad in het terrein, omdat nieuwe chunks anders worden opgebouwd dan de oude.
Wil je die velden echt toepassen, dan heb je een nieuwe wereld nodig. Verwijderen is niet de veiligste route, hernoemen wel: maak een back-up, zet level-name op een nieuwe naam zoals wereld2 en start opnieuw. De server genereert een verse wereld en je oude map blijft staan, zodat je terug kunt als het tegenvalt.
motd hoort niet in dit rijtje, maar wordt wel vaak verkeerd begrepen: die regel is puur cosmetisch, verschijnt in de serverlijst en kost geen prestaties.
Hoe beveilig je je server met spawn-protection, white-list en command blocks?
spawn-protection is een straal van standaard 16 blokken rond het spawnpunt waar alleen operators mogen bouwen of breken. Daar komen de meldingen vandaan dat nieuwe spelers bij spawn niets kunnen plaatsen. Gebruik je een regio-plugin als WorldGuard, zet hem dan op 0 en laat de bescherming volledig door de plugin doen. Een overzicht van dat soort plugins staat in ons artikel over de beste Minecraft-plugins.
white-list=true laat alleen spelers uit whitelist.json binnen en is voor een vriendenserver of de opbouwfase de eenvoudigste bescherming die er is. Zet er enforce-whitelist=true naast, anders blijven spelers die al online waren gewoon doorspelen nadat je ze van de lijst hebt gehaald. Wat een whitelist niet doet, is beschermen tegen aanvallen op je verbinding: die komen binnen voordat er een login plaatsvindt. Daarvoor heb je DDoS-bescherming op netwerkniveau nodig.
enable-command-block staat standaard op false, en dat is een bewuste keuze. Command blocks kunnen alleen door operators worden geplaatst, maar zijn ook een prestatierisico: een verkeerd afgestelde klok die elke tick een commando met een groot selectiegebied uitvoert, kost meer TPS dan een hele groep spelers samen. Zet hem alleen op true als je adventure-maps of minigames bouwt.
Wanneer pas je max-tick-time en network-compression-threshold aan?
max-tick-time staat op 60000 milliseconden. Duurt één tick langer dan een minuut, dan gaat de watchdog ervan uit dat de server vastgelopen is en kapt hem af, met een thread dump in de console. Dat is nuttig, want die dump vertelt je meestal welke mod of plugin blijft hangen. Op zware modpacks gaat hij soms onterecht af bij wereldgeneratie op trage opslag: All the Mods 10 laadt op een HDD ruim tien minuten en op SSD twee tot drie minuten. De oplossing is dan snellere opslag, niet de watchdog uitzetten. Op -1 zetten kan tijdelijk tijdens debuggen, maar daarna hangt een vastgelopen server in stilte.
network-compression-threshold is 256 bytes: alles wat groter is wordt gecomprimeerd. Voor een losse publieke server laat je dat zo. Draaien je backends en je proxy op hetzelfde netwerk, dan kun je de waarde verhogen of op -1 zetten en ruil je bandbreedte die je toch over hebt in voor minder CPU-werk. Doe dat nooit bij een server die rechtstreeks vanaf internet bereikbaar is.
Veelgestelde vragen
Moet ik na elke wijziging in server.properties herstarten? Ja, voor vrijwel alles. De server leest het bestand alleen bij het opstarten. Commando's als /whitelist on en /difficulty werken wel direct in het spel, maar bij de volgende start bepaalt het bestand opnieuw de waarde.
Welke view-distance is goed voor 20 spelers? Begin bij view-distance=7 met simulation-distance=5 en kijk of je TPS op 20 blijft. View-distance 10 betekent 441 chunks per speler tegenover 169 bij view-distance 6, en dat verschil zie je direct terug in het geheugengebruik.
Kan ik de seed van mijn bestaande wereld nog veranderen? Nee, level-seed wordt alleen gebruikt bij het genereren van een nieuwe wereld. Zet level-name op een nieuwe naam en start opnieuw, dan krijg je een verse wereld terwijl de oude map bewaard blijft.
Waarom kan niemand bouwen rond het spawnpunt? Dat is spawn-protection, standaard een straal van 16 blokken waarin alleen operators iets mogen veranderen. Zet hem op 0 als je de bescherming aan een plugin als WorldGuard overlaat.
Moet online-mode uit voor Bedrock-spelers? Nee. Met Geyser en Floodgate komen Bedrock-spelers binnen terwijl online-mode=true blijft staan. Uitzetten betekent dat iedereen elke gewenste naam kan gebruiken, inclusief die van je admins.