Chunky: Minecraft-Chunks vorgenerieren und Generierungs-Lag eliminieren
Wenn dein Server jedes Mal kurz hängt, sobald jemand neues Gelände betritt, liegt das fast immer an der Chunk-Generierung. Diese Anleitung zeigt, wie das Chunky-Plugin deine Welt im Voraus aufbaut, sodass der Server während des Spielbetriebs nur fertige Regionen von der Festplatte liest, statt sie spontan zu erzeugen.
Warum Chunk-Generierung lagt
Wenn ein Spieler erstmals Koordinaten ohne Region-Datei betritt, muss Paper oder Spigot diesen Chunk genau in dem Moment generieren. Drei schwere Operationen laufen gleichzeitig: die CPU rechnet Perlin Noise für Terrain, Biome, Strukturen und Dekoration; die Festplatte schreibt eine neue .mca-Datei nach world/region/; und der RAM hält Zwischenzustände, bis der Chunk an den Client gehen kann.
Mit Minecraft 1.21 wird es noch schlimmer. Neue Biome, Custom Structures, End-City-Innenräume, Trial Chambers, all das belastet den Hauptthread. Selbst auf einer Top-CPU dauert ein Chunk 20-80 ms. Wenn ein Spieler mit Elytra bei 30 Blöcken pro Sekunde fliegt, müssen 8-10 frische Chunks pro Sekunde fertig werden, und der TPS-Wert bricht ein.
Das Problem ist nicht Minecraft selbst, sondern dass die Generierung lazy abläuft. Lösung: Chunks im Voraus vorbereiten, in einer ruhigen Phase, und den Hauptthread während des Spielbetriebs nicht mehr damit belasten.
Was Pre-Generation eigentlich macht
Die Idee ist einfach. Du startest einmalig eine Aufgabe, die jede Koordinate innerhalb deines geplanten Spielgebiets durchläuft und jeden Chunk generiert. Danach steht world/region/ voller fertiger .mca-Dateien. Wenn ein Spieler diese Koordinaten betritt, öffnet der Server die Datei, liest den Chunk in 1-3 ms und schickt ihn an den Client. Kein Perlin Noise, kein spontanes Strukturbauen.
Diese einmalige Zeitinvestition zahlt sich jedes Mal aus, wenn ein neuer Spieler die Welt erkundet. Auf einem öffentlichen Server mit ein paar hundert Online-Spielern ist der Unterschied sofort sichtbar: keine Halbsekunden-Hitches mehr, TPS bleibt bei 19,5-20,0, selbst wenn ein Dutzend Leute in unbekanntes Gelände vordringt.
Chunky vs WorldBorder fill: warum heute Chunky gewinnt
Die alte Schule benutzte /wb fill aus dem WorldBorder-Plugin. Funktioniert, ist aber für Bukkit 1.7-1.12 geschrieben: blockiert den Hauptthread, harmoniert schlecht mit modernem Paper, kein Folia-Support. Plugin Pregen und Aurora aus derselben Ära werden seit Jahren nicht mehr gepflegt.
Chunky ist der moderne Ersatz. Unterstützt Paper, Purpur, Pufferfish, Folia 1.20-1.21, lädt Chunks asynchron, kann pausieren und nach Server-Restart fortsetzen, lässt Form und Traversierungsmuster wählen. Aktive Entwicklung, verfügbar auf Modrinth und SpigotMC, läuft auf jeder Version von 1.13 bis 1.21.4.
Paper 1.21+ bringt einen eingebauten /paper chunkgen-Befehl mit. Funktioniert, aber dünn ausgestattet: keine Pause, keine Fortschrittsspeicherung, eingeschränkte Mustersteuerung. Für einen einmaligen Job auf kleinem Gebiet brauchbar. Für ernsthafte Server bleibt Chunky bequemer.
Chunky auf Paper, Purpur und Folia installieren
Lade Chunky-X.X.X.jar von Modrinth oder SpigotMC. In den plugins/-Ordner werfen und Server neu starten. Keine Abhängigkeiten nötig.
Beim Start solltest du sehen:
[Server] [INFO] [Chunky] Enabling Chunky v1.4.x
[Server] [INFO] [Chunky] Loaded language file (en)
Folia-Nutzer holen sich ChunkyFolia aus demselben Modrinth-Eintrag, ein Fork, der Folias Regional-Thread-Modell respektiert. Die Konfiguration unter plugins/Chunky/config.yml wird beim ersten Start angelegt.
Grundlegende Chunky-Befehle
Der Minimal-Set, der 90% der Aufgaben abdeckt:
/chunky world world
/chunky radius 2000
/chunky start
Der erste Befehl wählt die Welt (Standard ist world, falls du sie umbenannt hast, nimm den Namen aus bukkit.yml). Der zweite setzt den Radius in Blöcken vom Zentrum. Der dritte startet die Aufgabe.
Steuerung während des Laufs:
/chunky pause
/chunky continue
/chunky cancel
/chunky quiet 30
pause hält die Aufgabe an, continue setzt sie fort, cancel verwirft den Fortschritt. quiet 30 reduziert die Konsolenausgabe auf alle 30 Sekunden, damit dein Terminal lesbar bleibt.
Form und Zentrum
Chunky generiert standardmäßig ein quadratisches Gebiet um den Spawn. Für ein kreisförmiges Gebiet (natürlicher bei Island Worlds oder kleinen SMPs):
/chunky shape circle
Zentrum von 0,0 verschieben:
/chunky center 1500 -800
Verfügbare Formen: square, circle, oval, triangle, pentagon, hexagon, star. In der Praxis fahren 99% der Server square oder circle.
Das Traversierungsmuster bestimmt, wie Chunky die Karte abläuft:
/chunky pattern concentric
/chunky pattern loop
/chunky pattern region
concentric spiralt vom Zentrum aus, loop geht zeilenweise, region arbeitet in 32x32-Chunk-Blöcken (eine .mca-Datei nach der anderen). Auf SSD ist der Unterschied klein. Auf HDD spart region Seek-Zeit.
Die Mathematik: wie viele Chunks und wie lange
Hier setzen viele Admins Radius 5000 und werden überrascht. Rechnen wir.
Radius 2000 Blöcke = 4000x4000-Block-Quadrat. Ein Chunk ist 16x16 Blöcke, also 250x250 Chunks = 62 500 Chunks insgesamt. Auf einer modernen CPU wie Ryzen 7 5800X mit NVMe sind das 20-40 Minuten.
Realistische Zahlen für typische SMP-Setups:
- Radius 1000 (2000x2000 Blöcke) = ~15k Chunks, 5-15 Minuten
- Radius 2000 (4000x4000 Blöcke) = ~62k Chunks, 20-40 Minuten
- Radius 3000 (6000x6000 Blöcke) = ~140k Chunks, 1-2 Stunden
- Radius 5000 (10000x10000 Blöcke) = ~390k Chunks, 3-6 Stunden
Bei Radius 10000 sind das 1,56 Millionen Chunks und 12-20 Stunden. Bei Radius 50000 sind es 39 Millionen Chunks und eine ganze Woche Dauerlauf. Die Werte skalieren mit CPU- und Disk-Geschwindigkeit. Auf einem langsamen VPS mit 2 Kernen multipliziere mit 3-5.
Weltgröße auf der Festplatte nach Pregen
Viele Admins fürchten, eine vorgenerierte Welt würde Hunderte Gigabyte fressen. In der Praxis wiegt ein Chunk 30-90 KB in der .mca-Datei, je nachdem was darin entsteht (1.21-Welten mit Trial Chambers und End City sind schwerer).
Grobe Schätzung:
- Radius 2000 = ~62k Chunks = 3-6 GB auf Disk
- Radius 5000 = ~390k Chunks = 15-30 GB
- Radius 10000 = ~1,56M Chunks = 60-120 GB
Bei einem normalen SMP mit Radius 2000-3000 bleibt die Welt selten über 10 GB. Das ist weniger als gedacht und deutlich weniger als die 80 GB, zu denen ein öffentlicher Server in zwei Jahren ohne Pregen anwächst, weil sich Spieler verstreuen und Tausende isolierte Regionen anlegen.
World Border: Spieler im vorgenerierten Bereich halten
Es bringt nichts, 4000x4000 Blöcke vorzugenerieren, wenn Spieler bis 50000 weiterlaufen können. Direkt nach dem Pregen den Vanilla-Border setzen:
/worldborder center 0 0
/worldborder set 4000
/worldborder warning distance 100
Achte auf die Einheiten. Chunky radius 2000 entspricht /worldborder set 4000, weil Chunky den Radius misst und der Vanilla-Border den Durchmesser. Klassische Verwirrung, prüfe doppelt nach.
Der Border erledigt drei Dinge: stoppt Spieler an der Grenze, verhindert frische Chunks durch Elytra-Flüge, zeichnet eine rote Wand auf dem Client.
Parallele Welten: Nether und The End
Der Nether ist achtmal kompakter. Koordinaten im Nether sind Overworld-Koordinaten geteilt durch 8. Für einen Overworld-Radius von 2000 reicht ein Nether-Radius von 250-300:
/chunky world world_nether
/chunky radius 300
/chunky start
Das End ist eine kleine Hauptinsel plus weit entfernte Außeninseln. Für die meisten Server:
/chunky world world_the_end
/chunky radius 1000
/chunky start
Hinweis: Die End-Außeninseln beginnen bei Koordinate ~1000 vom Zentrum, dorthin werden Spieler fliegen. Wenn du sie fertig haben willst, plane 2000-3000 ein und kalkuliere die Zeit.
Performance während des Pregens: TPS fällt
Das ist normal. Chunky belastet den Hauptthread, weil Vanilla-Generierung nicht voll thread-safe ist. Während der Aufgabe sinkt TPS auf 14-18. Spieler spüren Ruckler.
Zwei Strategien:
Strategie 1: nächtlicher Pregen. Spieler aussperren (whitelist on), Chunky über Nacht laufen lassen, morgens Whitelist abnehmen. Saubere Variante.
Strategie 2: Hintergrund-Generierung. Wenn eine Whitelist nicht akzeptabel ist, mit /chunky tasks 1 auf einen einzigen Thread zwingen. TPS hält sich bei 18-19, der Pregen dauert dafür 2-3-mal länger.
/chunky tasks 1
/chunky start
Standard-Threadanzahl in plugins/Chunky/config.yml setzen:
generation:
parallel-tasks-multiplier: 0.25
default-quiet-interval: 60
0.25 heißt ein Viertel der verfügbaren Kerne. Auf einem 8-Kern-Server sind das 2 Threads.
Chunky und Aikar's Flags
Wenn du Paper mit Aikar's Flags fährst (G1GC, ParallelGCThreads, MaxGCPauseMillis und Co.), arbeitet Chunky problemlos damit. Keine Konflikte. Eine Bedingung: kein zu kleiner Heap. Für Pregen ab Radius 2000 willst du mindestens -Xms6G -Xmx6G, sonst feuert G1GC zu oft, wenn frische Chunks den Heap füllen.
FAQ
Wie viel RAM brauche ich für Pregen?
Was du sowieso schon zuweist, reicht. Chunky verarbeitet Regionen streamend, hält nicht die ganze Welt im Speicher. Ab Radius 3000 weise mindestens 4-6 GB Heap zu, damit GC den Lauf nicht ausbremst.
Kann ich mit Spielern online pregenerieren?
Ja, aber TPS sinkt auf 14-17. Wenn deine Spieler ein paar Ruckler hinnehmen, fahre /chunky tasks 1. Sauberer ist alle über Nacht aussperren und mit Whitelist laufen lassen.
Muss ich nach einem Minecraft-Update neu pregenerieren?
Nein. Alte Chunks bleiben in der neuen Version gültig. Nachteil: neue Biome und Strukturen aus dem Update erscheinen nicht in bereits generierten Regionen. Bringt 1.22 ein neues Biom, taucht es nur in frischen Chunks außerhalb deiner vorgenerierten Zone auf.
Was, wenn Chunky die Welt beschädigt?
Chunky beschädigt keine Welten. Aber vor dem Start immer Backup: Server stoppen, world/, world_nether/, world_the_end/ kopieren. Wenn etwas schiefgeht (Disk voll, Stromausfall, Plugin-Crash), Backup zurückspielen und neu starten.
Chunky vs eingebautes /paper chunkgen?
/paper chunkgen kam mit Paper 1.21. Funktioniert, aber keine Pause, keine Formauswahl, kein gespeicherter Fortschritt über Restarts. Reicht für einen schnellen Einmalauftrag. Für alles Ernsthaftere bleibt Chunky vorne.
Behebt Pregen Lag auf einem laufenden Server?
Chunk-Lag ja, vollständig. Lag durch Mob-Farmen, Redstone-Apparate, schlecht geschriebene Plugins oder Netzwerklag während eines DDoS-Angriffs nein. Pregen rührt davon nichts an. Netzwerklag braucht eine separate Traffic-Schutz-Schicht.
Kann ich Chunky parallel auf mehreren Welten laufen lassen?
Technisch ja, /chunky world und /chunky start reihen Aufgaben in eine Warteschlange. Aber lass Welten nacheinander laufen statt parallel, weniger Last und einfacher zu überwachen.
Nächste Schritte
Wenn dieser Guide deinen Chunk-Lag beseitigt hat, ziehe noch ein paar Schrauben an. Setze den World Border 200-500 Blöcke enger als die vorgenerierte Fläche, damit Spieler nicht versehentlich per Elytra in frische Chunks geraten. Plane einen nächtlichen Cron-Pregen, wenn du einen seasonalen Server mit regelmäßigen Map-Resets fährst. Und denke daran, dass Pregen das Generierungsproblem löst, nicht das Netzwerk-Problem: wenn deine Map unter DDoS-Traffic begraben wird, hilft dir keine .mca-Datei.
Schützen Sie Ihren Server vor DDoS-Angriffen
Kostenloser Schutz mit 5-Minuten-Einrichtung. 1 TB Traffic inklusive.
Kostenlos testenWeitere Artikel
Zwei-Faktor-Authentifizierung fuer Minecraft Server Admins: Ein vollstaendiger Leitfaden
Warum jeder Minecraft Server Admin 2FA braucht, was bei einer Kontokompromittierung passiert, TOTP-Einrichtung in AuthMe, Panel-Zugang und SSH. Schutz von Discord-Bot-Tokens und Backup-Codes.
DiscordSRV fuer SMP: erweiterte Konfiguration, Role Sync und Event-Automatisierung
Fortgeschrittenes DiscordSRV: Role Sync mit LuckPerms, /link, eigene Channels fuer Tode und Achievements, Console-Channel, Voice und Tuning ab 200+ Spielern.
Kostenloser DDoS-Schutz für Minecraft-Server: So funktioniert es
Ein solider DDoS-Schutz für Minecraft muss nicht teuer sein. Erfahren Sie mehr über den kostenlosen MineGuard-Tarif: was enthalten ist, für wen er passt und wann ein Upgrade sinnvoll wird.