Minecraft 1.21 Lag Oplossen: Complete Server Optimalisatie Gids 2026

Published on | Updated

Fix je Minecraft 1.21+ server lag met deze complete optimalisatiegids. Paper vs Purpur configuratie, JVM flags (Aikar), performance mods (Lithium, FerriteCore), en simulation distance tuning. Van onspeelbaar naar vloeiende 20 TPS.

minecraft 1 21 lag oplossen server optimalisatie 2026

Snel antwoord: Minecraft 1.21 lag wordt veroorzaakt door zwaardere wereldgeneratie en meer entiteiten. Los dit op met: 1) Purpur server jar (beste performance fork), 2) Verlaag simulation-distance naar 4-6, 3) Installeer Lithium + FerriteCore mods, 4) Gebruik correcte JVM flags (Aikar's). Hoeveel spelers je server daarna aankan, hangt vooral af van je plugins, farms en mods. Meet het zelf met /tps, /mspt en Spark.


Waarom Minecraft 1.21+ Zoveel Zwaarder Is

De Technische Veranderingen

Minecraft 1.21 "Tricky Trials" en 1.21+ introduceerden significante wijzigingen:

VeranderingWaarom het performance kost
Trial Chambers (nieuwe structuur)Complexe generatie met veel entiteiten en spawners
Breeze mobEigen AI en pathfinding
Wind ChargesExtra projectielen om te simuleren in gevechten
Copper en Tuff variantenMeer block states in het geheugen

Hoeveel extra belasting dat oplevert, hangt helemaal af van je wereld en je spelers, dus we plakken er geen percentage op. Een setup die op 1.20 net 20 TPS haalde, kan op 1.21 tekortschieten met dezelfde hardware en plugins. Vergelijk /mspt en een Spark profiel van voor en na de update om te zien waar de extra tijd heen gaat.

Het TPS Probleem

TPS = Ticks Per Second

Minecraft draait op een "tick loop": 20x per seconde wordt de gehele wereld geüpdatet (mob movement, redstone, crop growth, etc.).

  • 20 TPS = Perfect, elke tick duurt 50ms
  • 15-18 TPS = Merk je gameplay lag, beweging stottert
  • <15 TPS = Onspeelbaar, severe lag spikes

Stap 1: De Juiste Server Software (Paper vs Purpur vs Forge)

1.1 De Server Software Hiërarchie

Vanilla (Mojang) → Slecht voor performance
    ↓
Spigot → Basis optimalisaties
    ↓
Paper → Excellente optimalisaties + API
    ↓
Purpur → Paper + configuratie vrijheid, de beste van de vier

Oudere overzichten zetten Pufferfish tussen Paper en Purpur, omdat Purpur vroeger de patches van Pufferfish overnam. De huidige Purpur is direct op Paper gebouwd. Pufferfish zelf heeft geen build voor 26.x (de nieuwste download is 1.21.8), dus op een actuele server is het geen optie.

1.2 Waarom Purpur?

Purpur = Paper + extra configuratie en gameplay opties

FeatureVanillaPaperPurpur
Async chunk loadingNeeJaJa (van Paper)
Entity activation rangeNeeJa (spigot.yml)Zelfde als Paper
Redstone optimalisatiesNeeJaZelfde als Paper
Config optiesWeinigVeelZeer veel
Villager lobotomize optieNeeNeeJa
Gameplay featuresBasisBasisUitgebreid

Hoe groot het verschil op jouw server is, hangt af van je plugins, farms en het aantal spelers. Meet het daarom zelf: noteer /mspt tijdens een normale drukke avond, wissel van jar, en vergelijk met een vergelijkbare avond daarna.

1.3 Purpur Installeren

Download:

Ga naar https://purpurmc.org/downloads

# SSH naar je VPS
ssh root@je-vps-ip

# Maak server directory
mkdir -p /opt/minecraft-server
cd /opt/minecraft-server

# Download Purpur (vervang versie met actuele)
wget https://api.purpurmc.org/v2/purpur/1.21.1/latest/download -O purpur.jar

# Accepteer EULA
echo "eula=true" > eula.txt

Eerste start (genereert config files):

java -Xms2G -Xmx4G -jar purpur.jar nogui

Stop de server na 30 seconden (Ctrl+C). Je hebt nu alle config files.


Stap 2: Kritieke Configuratie Aanpassingen

2.1 server.properties (Basis Instellingen)

nano server.properties

Belangrijkste wijzigingen:

# === PERFORMANCE CRITICAL ===

# Simulation distance: Hoeveel chunks om speler "actief" zijn
# Standaard: 10 → Verlaag naar 4-6
# Dit is DE belangrijkste instelling!
simulation-distance=4

# View distance: Hoeveel chunks speler kan ZIEN
# Kan hoog blijven, spelers zien ver maar wereld is alleen dichtbij actief
view-distance=10

# Network compression: Balans tussen CPU en bandbreedte
# 256 is sweet spot
network-compression-threshold=256

# Spawn protection (onnodig op survival)
spawn-protection=0

# === CHUNK LOADING ===

# Hoeveel chunks rond spawnpoint altijd geladen blijven
# Verlaag of 0 voor lagere RAM
spawn-chunk-radius=2

Waarom is simulation-distance zo cruciaal?

Simulation DistanceActieve chunks per spelerAandeel van de standaard
10 (standaard)441 chunks100%
6169 chunks38%
481 chunks18%

Van 10 naar 4 gaan betekent ruim 80% minder gesimuleerde chunks rond elke speler. Spelers merken dit nauwelijks (farms iets langzamer, mobs spawnen dichterbij).

2.2 purpur.yml (Geavanceerde Purpur Opties)

nano purpur.yml

Performance Secties:

world-settings:
  default:
    # === MOB AI OPTIMALISATIE ===
    mobs:
      # Zet AI uit voor specifieke mobs die weinig bijdragen
      zombie:
        ridable: false
        aggressive-towards-villager-when-lagging: false
      
      # Tropische vissen doen NIETS maar kosten veel AI
      tropical_fish:
        ridable: false
        takes-damage-from-water: false
      
      # Axolotls spawnen veel maar doen weinig
      axolotl:
        ridable: false
    
    # === REDSTONE ===
    # Limiteer hopper checks (grootste oorzaak van lag)
    hopper:
      disable-move-event: true
      
    # === ENTITIES ===
    # Voeg dropped items samen (minder entiteiten)
    merge-radius:
      item: 4.0
      exp: 6.0
    
    # Verwijder items sneller
    alt-item-despawn-rate:
      enabled: true
      items:
        cobblestone: 300  # 15 sec (was 6000 = 5 min)
        netherrack: 300
        sand: 300
        gravel: 300
        
    # === VILLAGERS (CPU KILLERS) ===
    villager:
      # Limiteer hoeveel villagers per tick AI krijgen
      lobotomize:
        enabled: true
        check-interval: 100
      
      # Disable brain ticking als ver weg
      brain-ticks: 2
      
    # === CHUNK LOADING ===
    # Async chunk loading (niet blokkeert main thread)
    use-async-pathfinding: true

Pro tip: Lobotomize Villagers

Lobotomize = "hersendood maken". Villagers die niet kunnen pathfinden (bijv. opgesloten in trading hall) krijgen na 100 ticks geen AI meer. Ze werken nog steeds (trades, breeding), maar kosten nauwelijks nog CPU. Enorme boost voor servers met trading halls.

2.3 spigot.yml (Spigot Optimalisaties)

nano spigot.yml
world-settings:
  default:
    # === MOB SPAWN LIMIETEN ===
    # Standaard spawnen VEEL te veel mobs
    mob-spawn-range: 6  # Was 8, verlaag = minder mobs ver weg
    
    entity-activation-range:
      # Hoever mobs "actief" zijn (AI draait)
      animals: 16      # Was 32
      monsters: 24     # Was 32
      raiders: 48      # Was 48 (ok)
      misc: 8          # Was 16
      water: 8         # Was 16 (vissen/axolotls)
      villagers: 16    # Was 32
      flying-monsters: 48  # Phantoms
      
    # === TICK RATES ===
    # Hoe vaak bepaalde systemen updaten
    entity-tracking-range:
      players: 48
      animals: 48
      monsters: 48
      misc: 32
      
    # === HOPPER OPTIMALISATIE ===
    hopper-transfer: 8       # Was 8 (ok)
    hopper-check: 1          # Was 1 (ok)
    hopper-amount: 1         # Hoeveel items per transfer
    
    # === MERGE SETTINGS ===
    merge-radius:
      item: 4.0
      exp: 6.0

Let op met growth modifiers

De growth instellingen in spigot.yml worden vaak verkeerd om gebruikt. 100 is de vanilla snelheid, en een hogere waarde laat gewassen sneller groeien, niet langzamer. De Paper documentatie omschrijft het als "The growth modifier percentage for cactus, where Vanilla speed is 100%". Een lagere waarde maakt farms trager, maar de server blijft die blokken gewoon random ticken, dus het is geen echte performance winst. Laat ze op 100 staan en pak farms aan met entity limieten en item merging.

2.4 paper-world-defaults.yml (Paper Specifiek)

nano config/paper-world-defaults.yml
entities:
  # === SPAWNING ===
  spawning:
    # Limiteer totaal aantal entiteiten
    spawn-limits:
      ambient: 5        # Vleermuizen
      axolotls: 3       # Axolotls (CPU killers)
      creature: 8       # Dieren
      monster: 50       # Monsters
      underground_water_creature: 3  # Glow squid
      water_ambient: 15 # Vissen
      water_creature: 3 # Dolphins/turtles
      
    # === TICK RATES ===
    # Per-mob spawning budget
    per-player-mob-spawns: true
    
  # === BEHAVIOR ===
  behavior:
    # Disable AI voor mobs ver weg
    tick-inactive-villagers: false
    
    # Zombies breken geen deuren (scheelt pathfinding)
    zombie-villager-infection-chance: 50.0
    
chunks:
  # === CHUNK SYSTEM ===
  # Auto-save interval (hoger = minder IO lag)
  auto-save-interval: 6000  # Was 6000 (5 min is ok)
  
  # Prevent chunk loading cascade (lag spike oorzaak)
  prevent-moving-into-unloaded-chunks: true
  
  # Max chunks per tick
  max-auto-save-chunks-per-tick: 8

Stap 3: Java Startup Flags (Aikar's Flags)

3.1 Waarom Standaard Java Slecht Is

Standaard java -jar server.jar gebruikt oude garbage collector (GC) die:

  • De server bij grote garbage collections merkbaar laat bevriezen
  • Gebruikt geheugen inefficiënt
  • Veroorzaakt "lag spikes" waar spelers van DC'en

3.2 Aikar's Flags: De Gouden Standaard

Deze flags zijn ontwikkeld door Aikar en worden al jaren veel gebruikt op Paper servers.

Voor 4GB RAM server:

java -Xms4G -Xmx4G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -Daikars.new.flags=true \
  -jar purpur.jar nogui

Voor 6GB RAM server:

Vervang -Xms4G -Xmx4G met -Xms6G -Xmx6G

Voor 8GB+ RAM server (ZGC variant):

java -Xms8G -Xmx8G \
  -XX:+UseZGC \
  -XX:+ParallelRefProcEnabled \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:ZCollectionInterval=5 \
  -XX:ZAllocationSpikeTolerance=2.0 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -jar purpur.jar nogui

ZGC (Z Garbage Collector) is nog beter voor 8GB+ servers: GC pauses <10ms (totaal onmerkbaar).

3.3 Maak Een Start Script

nano start.sh
#!/bin/bash

# Aikar's flags voor 4GB
java -Xms4G -Xmx4G \
  -XX:+UseG1GC \
  -XX:+ParallelRefProcEnabled \
  -XX:MaxGCPauseMillis=200 \
  -XX:+UnlockExperimentalVMOptions \
  -XX:+DisableExplicitGC \
  -XX:+AlwaysPreTouch \
  -XX:G1NewSizePercent=30 \
  -XX:G1MaxNewSizePercent=40 \
  -XX:G1HeapRegionSize=8M \
  -XX:G1ReservePercent=20 \
  -XX:G1HeapWastePercent=5 \
  -XX:G1MixedGCCountTarget=4 \
  -XX:InitiatingHeapOccupancyPercent=15 \
  -XX:G1MixedGCLiveThresholdPercent=90 \
  -XX:G1RSetUpdatingPauseTimePercent=5 \
  -XX:SurvivorRatio=32 \
  -XX:+PerfDisableSharedMem \
  -XX:MaxTenuringThreshold=1 \
  -Dusing.aikars.flags=https://mcflags.emc.gs \
  -Daikars.new.flags=true \
  -jar purpur.jar nogui
chmod +x start.sh
./start.sh

Stap 4: Performance Mods (Essentieel voor 1.21)

4.1 Lithium: Server-Side Performance

Wat doet Lithium?

Optimiseert vrijwel alle Minecraft systemen zonder gameplay te veranderen:

  • Mob AI pathfinding
  • Block ticking (crops, redstone)
  • Chunk loading
  • Physics berekeningen

Installatie:

# Download van Modrinth
cd /opt/minecraft-server/mods
wget https://cdn.modrinth.com/data/gvQqBUqZ/versions/latest/lithium-fabric-mc1.21.jar

Let op: Lithium is een mod voor Fabric (nieuwere versies bestaan ook voor NeoForge). Op Paper of Purpur laadt hij niet; die servers gebruiken hun eigen optimalisatiepatches.

4.2 FerriteCore: RAM Optimalisatie

Wat doet FerriteCore?

Verlaagt het RAM gebruik door block states en andere spelgegevens efficiënter op te slaan. De winst is het grootst op modded servers met veel blokken en modellen, en het helpt op kleine servers van 4GB.

Download:

cd /opt/minecraft-server/mods
wget https://cdn.modrinth.com/data/uXXizFIs/versions/latest/ferritecore-7.0.0-fabric.jar

Resultaat: kijk voor en na de installatie naar de RAM grafiek in je panel om te zien wat het op jouw pack oplevert.

4.3 Krypton: Netwerk Optimalisatie

Optimaliseert hoe de server pakketten verstuurt naar clients. Vooral nuttig bij 15+ spelers.

wget https://cdn.modrinth.com/data/fQEb0iXm/versions/latest/krypton-0.2.8-fabric.jar

4.4 Voor Modded Servers (Forge/NeoForge)

Als je een modded server draait (All the Mods, FTB, etc.):

Essentiële Performance Mods:

ModFunctieLink
ModernFixGeneral optimalisatiesmodrinth.com/mod/modernfix
FerriteCoreRAM reductiemodrinth.com/mod/ferritecore
EntityCullingRender optimalisatiemodrinth.com/mod/entityculling
CanaryLithium voor Forgemodrinth.com/mod/canary
RoadrunnerAsync chunk loadingmodrinth.com/mod/roadrunner

Stap 5: Monitoring en Diagnostics

5.1 Spark: Performance Profiler

Installatie:

cd /opt/minecraft-server/plugins
wget https://ci.lucko.me/job/spark/lastSuccessfulBuild/artifact/spark-bukkit/build/libs/spark-bukkit.jar

Gebruik in-game:

/spark profiler start
# Laat server 2-3 minuten draaien
/spark profiler stop
/spark profiler open

Je krijgt een weblink met gedetailleerde analyse:

  • Welke plugins/mods kosten meeste CPU
  • Welke chunks veroorzaken lag
  • Entity counts per chunk

5.2 Timings: Ingebouwde Diagnostics

/timings on
# Wacht 10 minuten
/timings paste

Geeft rapport met:

  • TPS geschiedenis
  • Plugin performance
  • Entity activiteit

Lees timings report:

Zoek naar rode balken in het rapport:

  • Entity Tick hoog → Te veel entities, verhoog despawn rates
  • Tile Entity hoog → Te veel hoppers/chests, optimaliseer redstone
  • World Tick hoog → Simulation distance te hoog

5.3 TPS Commando

Check real-time TPS:

/tps

Output:

TPS from last 1m, 5m, 15m: 19.8, 19.9, 20.0

Goed: >19.5 consistent Matig: 17-19 (merkbare lag) Slecht: <17 (onspeelbaar)


Stap 6: Hardware Overwegingen (VPS Selectie)

6.1 RAM Requirements

Server TypeSpelersModsMinimum RAMAanbevolen RAM
Vanilla 1.211-10Geen2GB4GB
Vanilla 1.2110-20Geen4GB6GB
Vanilla 1.2120-50Geen6GB8GB
Light Modpack1-1050-1004GB6GB
Heavy Modpack1-10150+6GB8-12GB
ATM9/FTB1-5300+8GB12-16GB

6.2 CPU Requirements

Clock speed > Core count voor Minecraft (single-threaded game logic).

Space-Node aanbevelingen (prijzen per maand, Standard tier):

  • MC Iron, 4GB voor €3,60: vanilla of Paper met een kleine groep
  • MC Lapis, 6GB voor €5,40: een plugin SMP met meer spelers
  • MC Diamond, 8GB voor €7,20, of MC Special 1, 12GB voor €10,80: modpacks of grotere communities

Dit zijn startpunten. Plugins, farms en mods bepalen meer dan het aantal spelers, en je kunt later upgraden zonder je wereld kwijt te raken.

6.3 Storage: NVMe vs SSD vs HDD

TypeChunk loadingAuto-savePrijs
HDDTraag, zichtbaar tijdens verkennenKan merkbare freezes gevenGoedkoop
SATA SSDVeel snellerHooguit een kleine haperingStandaard
NVMeSnelstZelden merkbaarInmiddels gangbaar bij game hosts

Voor Minecraft: NVMe is significant beter. Chunk loading is I/O intensief. Alle Space-Node Minecraft plannen draaien op NVMe opslag.


Stap 7: Troubleshooting Specifieke Problemen

Probleem: Lag Spikes elke 30 seconden

Oorzaak: Java Garbage Collection met slechte flags

Diagnose:

# Voeg toe aan startup flags
-XX:+PrintGCDetails -Xlog:gc*:file=gc.log

Check gc.log. Als je ziet:

[Full GC (Allocation Failure) 2048M->1800M(2048M), 2.1 secs]

Dit is een 2+ seconde freeze. Oplossing: Gebruik Aikar's flags.

Probleem: Hoog RAM gebruik (server crashed)

Diagnose:

# In-game commando
/forge entity list

# Of via Spark
/spark heapdump

Veel voorkomende oorzaken:

  1. Teveel entities in spawn chunks

    • Oplossing: Verlaag spawn-chunk-radius naar 0-2
  2. Mobfarms overload

    • Oplossing: Limiteer entities met entity-activation-range
  3. Memory leak in plugin/mod

    • Oplossing: Check Spark heapdump, disable verdachte plugin

Probleem: Server "Can't keep up" warnings

Console output:

[WARN] Can't keep up! Is the server overloaded? Running 5000ms behind, skipping 100 ticks

Dit betekent: De server kon één tick niet in 50ms afwerken, dus slaat ticks over = rubberband lag.

Top 3 oorzaken:

  1. Simulation distance te hoog

    • Verlaag naar 4
  2. Redstone lag (hoppers, observers)

    • Gebruik /spark → zoek chunks met veel tile entities
    • Optimaliseer met water streams i.p.v. hoppers
  3. Te weinig CPU

    • Upgrade VPS of verlaag speler limit

Stap 8: Basis Configuratie Checklist

Print deze checklist en vink af:

server.properties:

  • simulation-distance=4 (of max 6)
  • view-distance=10
  • network-compression-threshold=256

purpur.yml:

  • villager.lobotomize.enabled=true
  • merge-radius.item=4.0
  • alt-item-despawn-rate.enabled=true

spigot.yml:

  • mob-spawn-range=6
  • entity-activation-range verlaagd
  • hopper-transfer=8

Start script:

  • Aikar's flags gebruikt
  • RAM setting correct (-Xms en -Xmx gelijk)
  • Java 21 (Temurin/Adoptium)

Performance mods:

  • Lithium/Purpur optimalisaties
  • FerriteCore (als modded)

Monitoring:

  • Spark plugin geïnstalleerd
  • /tps check na elke wijziging

Resultaat: Meet Je Eigen Voor en Na

We laten je hier geen verzonnen voor-en-na tabel zien. Hoeveel het oplevert, hangt af van je wereld, plugins en spelers. Wat je wel kunt doen, is het zelf meten:

  1. Noteer voordat je iets verandert /tps, /mspt, het RAM gebruik uit de grafiek in je panel en hoe vaak de console "Can't keep up" meldt, tijdens een normale drukke avond.
  2. Voer de aanpassingen uit deze gids één voor één door.
  3. Noteer dezelfde cijfers op een vergelijkbare avond daarna.

Wat spelers merken als het werkt:

  • Geen rubberband
  • Chunks die bijhouden terwijl je loopt
  • Vloeiende combat
  • Geen disconnects door lag

Conclusie: Van Laggende Server naar Vloeiende Ervaring

Door deze gids te volgen, transformeer je een Minecraft 1.21 server van onbruikbaar naar professioneel niveau:

  1. Purpur voor beste performance baseline
  2. Simulation distance 4-6 voor veel minder gesimuleerde chunks
  3. Aikar's JVM flags voor stabiele garbage collection
  4. Gerichte config tuning voor elk aspect
  5. Performance mods waar nodig
  6. Monitoring tools om problemen te vinden

Tijdsinvestering: 1-2 uur setup, lifetime benefits.


Klaar om een geoptimaliseerde Minecraft server te draaien? Space-Node Minecraft hosting draait op Ryzen 9 CPU's en NVMe opslag, en elk plan ondersteunt Purpur. Vanaf €2,70 per maand (MC Coal, 3GB) met 12/7 support.

Gerelateerde gidsen:

Minecraft on AMD Ryzen 9

Host Your Modded & Vanilla Minecraft Server

From €2.70/mo with NVMe storage, DDoS protection included, and a modpack installer in the panel for the CurseForge and Modrinth packs it lists, or upload your own server files over SFTP.