Un server Minecraft calcola il mondo 20 volte al secondo: sono i TPS (tick al secondo). Se non fa in tempo, scendono sotto 20 e tutto va al rallentatore: i blocchi ci mettono di più a rompersi, i mob si muovono a scatti, le farm smettono di funzionare. Questo è il lag del server, che non è la stessa cosa del ping (la tua connessione).
1. Misura prima di toccare qualsiasi cosa
Le versioni recenti di Paper includono spark di serie (su quelle vecchie, installalo come plugin):
/spark tps: TPS e MSPT (millisecondi impiegati da ogni tick). Sotto i 50 ms c'è margine in abbondanza; se supera i 50, i TPS iniziano a calare./spark profiler starte, dopo qualche minuto con gente che gioca,/spark profiler stop: ti dà un link a un report di cosa si mangia il tempo (un plugin, una farm, le entità...).
Se nella console vedi spesso Can't keep up! Is the server overloaded?, il server è in ritardo. All'avvio è normale; se è costante, continua a leggere e controlla anche il consumo del tuo VPS.
2. Usa Paper, non il server ufficiale
Paper (o derivati come Purpur) corregge molti problemi di prestazioni del server di Mojang senza cambiare il gioco. Se giochi con le mod (Fabric, Forge, NeoForge), Paper non va bene; su Fabric, la mod Lithium migliora molto le prestazioni.
3. Il comando di avvio consigliato
La documentazione di Paper consiglia i cosiddetti flag di Aikar, che regolano il modo in cui Java libera la memoria per evitare scatti. Per un VPS da 8 GB con Linux (6,5 GB per Minecraft):
java -Xms6500M -Xmx6500M -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 paper.jar --nogui
Cambia solo i primi due valori in base alla tua memoria (come calcolarla). Se vuoi assegnargli più di 12 GB, la documentazione di Paper modifica alcuni valori: usa il suo generatore di comandi di avvio.
Più RAM non significa più velocità. Minecraft fa quasi tutto il lavoro su un solo core del processore. Superata la memoria di cui ha bisogno, dargliene di più non fa salire i TPS.
4. Abbassa le distanze
In server.properties:
simulation-distance: fin dove il mondo «funziona» attorno a ogni giocatore (mob, coltivazioni, redstone). È quella che pesa di più: tra 6 e 8 va bene per quasi tutto.view-distance: fin dove si vede. Tra 8 e 10 è un buon compromesso.
5. Pregenera il mondo
Generare nuovo terreno mentre la gente esplora è una delle operazioni più pesanti, soprattutto con le elitre. Con il plugin Chunky lo generi in anticipo, meglio quando non c'è nessuno:
/worldborder set 10000
/chunky radius 5000
/chunky start
Il bordo impedisce che venga generato terreno oltre la zona pregenerata.
6. Cosa causa più spesso il lag
- Troppe entità: farm enormi, animali ammassati, oggetti sparsi per terra.
- Redstone in loop: clock che non si fermano mai.
- Plugin pesanti o scritti male: il report di spark ti dice quale.
- Un mondo non pregenerato con molti giocatori che esplorano contemporaneamente.
Se dopo tutto questo il processore del VPS è ancora al 100% con gente che gioca, il server è diventato troppo piccolo: passa a un piano superiore senza migrare nulla.