Minecraft Wiki
Registrieren
Advertisement

Die Spielstand-Speicherung einer Welt erfolgt in Dateien, deren Inhalt in einer übersichtlichen Baum-Struktur aufgebaut ist. Dabei handelt es sich nicht um Textdateien, sondern sie sind im sogenannten NBT-Format (Named Binary Tag) gespeichert, daher kann man den Inhalt nur mit speziellen Programmen ansehen. Es gibt Programme, die die Daten graphisch darstellen, sodass man eine Welt außerhalb von Minecraft sehen und verändern kann (z.B. "MCEdit") oder Programme, die die Baumstruktur der Daten darstellen (z.B. "NBT-Explorer").

Speicherzeitpunkte

Die Speicherung des Spielstandes erfolgt zu unterschiedlichen Zeitpunkten:

  • Wenn eine neue Welt generiert ist, wird sie zum ersten Mal gespeichert.
  • Während man spielt, werden laufend Daten hinzugefügt und geändert.
  • Sobald man die Pause-Taste Esc drückt, wird der Spielstand gespeichert. Im "Game Output" des Launchers wird protokolliert: "[Server thread/INFO]: Saving and pausing game..." - Man kann danach das Spiel fortsetzen oder über den Menüpunkt "Speichern und zurück zum Hauptmenü" beenden.
  • Werden Chunks entladen, etwa weil sich der Spieler zu sehr von ihnen entfernt, werden diese vorher gespeichert.
  • In regelmäßigen Zeitabständen wird automatisch gespeichert.

Speicherkonzepte

Im Laufe der Entwicklung des Spiels wurde das Speicherkonzept mehrfach geändert:

  • Zuerst wurden sämtliche Daten einer Welt vom Java-Programm in einem level-Objekt gehalten, das beim Speichern als serialisiertes Java-Objekt in eine komprimierte Datei geschrieben wurde (Classic Level Format).
  • Von dem Konzept der Datenserialisierung durch Java hat sich Notch in der Indev-Phase verabschiedet und ein eigenes Speicherformat entwickelt (das NBT-Format). Die in der Indev-Phase mit diesem Format gespeicherten Weltdaten werden Indev Level Format genannt. Die Welten hatten immer noch eine feste Größe und alle Daten inklusive aller Blöcke und Objekte wurden in einer gemeinsamen Datei gespeichert.
  • In der Infdev-Phase wurde mit Entwicklung der unbegrenzten Welt das Konzept der Chunk-Speicherung eingeführt. Die globalen Weltdaten wurden nun in der Datei "level.dat" gespeichert, die Landschaft und Objekte dagegen in Chunkdateien. Eine Chunkdatei fasste jeweils eine Fläche von 16×16 Blöcken zusammen. Dieses Konzept wird Alpha Level Format genannt.
  • Mit Beta 1.3 wurde zum neuen Region Format gewechselt, bei dem die Chunks nicht mehr einzeln gespeichert, sondern zu einer Region zusammengefasst wurden. Eine Region enthält 32×32 Chunks, d. h. sie bildet eine Fläche von 512×512 Blöcken ab. Diese Zusammenfassung hat das Speichern der Chunks deutlich beschleunigt.
  • Mit Vollversion 1.2 (12w07a) wurde zum neuen Anvil Format gewechselt. Das Konzept der Regionen wurde beibehalten, aber die Chunks konnten nun statt 128 eine Bauhöhe von 256 Blöcken speichern. Die Chunks wurden in 16×16×16 Block große, würfelförmige Sektionen eingeteilt. Luftleere Sektionen wurden nicht mehr gespeichert und nicht mehr geladen. Es gab noch weitere Änderungen am Speicherkonzept, um das Laden und Speichern von Chunks zu beschleunigen.

Konvertierung

Mit jeder neue Minecraft-Version gibt es kleine oder größere Änderungen an den Spielstand-Speicherdaten. Wurde eine Welt mit einer alten Version erzeugt, könnte die neuen Version sie dadurch nicht mehr einlesen. Um das trotzdem zu ermöglichen, müssen die Daten vor oder beim Einlesen konvertiert, d. h. in das neue Format umgewandelt werden.

Beispiel: Mit Vollversion 1.11 haben sich die Objekt-IDs geändert. Eine Welt, die zuletzt mit 1.10 gespielt wurde, hat die Objekte mit den alten IDs gespeichert. Wird die Welt danach mit 1.11 betreten, erkennt das Spiel den Versionswechsel und konvertiert die alten Objekt-IDs automatisch.

Die Erkennung einer alten Version geschieht durch die mit Vollversion 1.9 (15w32a) eingeführte Version-ID, die seither als DataVersion-Eigenschaft in den Weltdaten, den Spielerdaten und den Chunkdaten steht[1]. Da die Blöcke, Blockobjekte, Objekte, Kreaturen und seit Vollversion 1.13 auch die Bauwerke Teil der Chunkdaten und die Gegenstände Teil der Chunk- und Spielerdaten sind, kann jede Änderungen an diesen Daten beim Einlesen eines Chunks oder Spielers erkannt werden. Mit Vollversion 1.13 haben auch die restlichen Spielstand-Speicherdaten die Version-ID als DataVersion-Eigenschaft erhalten: Anzeigetafeldaten, Dorfdaten, Kartendaten und Statistikdaten.

Das Spiel erkennt beim Einlesen der Speicherdaten, mit welcher Version-ID sie zuletzt gespeichert wurden. Weicht diese von der aktuellen Version-ID ab, wird die Konvertierung durchgeführt. Das findet immer vor der ersten Benutzung der Daten statt, d. h. das Spielprogramm selbst arbeitet nur mit dem aktuellen Format. Die Weltdaten werden bei jedem Betreten der Welt geladen, andere Daten aber nur, wenn sie benötigt werden. Wenn man beispielsweise einen weit entfernten Chunk seiner Welt seit sechs Jahren nicht betreten hat, hat er noch immer das alte Datenformat aus dieser Zeit, was erst beim erneuten Einlesen erkannt wird.

Für die Konvertierung gibt es zwei Möglichkeiten:

  • Chunkweise nebenbei: Jeder Chunk wird erst konvertiert, wenn er geladen wird. Vorteil: Durch die automatische Nebenbei-Konvertierung kann man die Welt sofort betreten. Nachteil: Jeder einzelne Chunk verursacht beim Laden eine Zeitverzögerung, die je nach Konvertierungsdauer das Spielerlebnis mindern kann. Außerdem bleiben alte Chunkdaten übrig, sofern man nicht die ganze Welt einmal komplett abwandert. Im Laufe der Zeit besteht die Welt aus einer bunten Mischung von Chunks der verschiedensten Minecraft-Versionen. Dadurch hat man auch Monate nach einem Versionswechsel noch Konvertierungsverzögerungen, wenn man die entsprechenden alten Chunks dann zum ersten Mal wieder betritt.
  • Komplett vorab: Die Welt wird vor dem ersten Betreten durch Aufruf eines Menüpunktes komplett konvertiert. Vorteil: Flüssiges Spiel, weil die Welt beim Betreten bereits komplett im aktuellen Format vorliegt. Nachteil: Je nach Größe der Welt kann die Komplett-Konvertierung sehr lange dauern.
    • Client: Die Komplett-Konvertierung wird im Menü/Welt bearbeiten über den Menüpunkt "Welt optimieren" durchgeführt (Details siehe dort).
    • Server: Die Komplett-Konvertierung wird durch das Starten des Servers mit dem Zusatz --forceUpgrade durchgeführt. Das kann nicht rückgängig gemacht werden, daher sollte man vorher eine Sicherungskopie der Welt anlegen.

Die Programmfunktionen für die Konvertierung sind in die Programmbibliothek datafixerupper.jar ausgelagert, deren Quellcode öffentlich zugänglich ist (siehe Open-Source-Bibliotheken).

Weltordner

Ausgangspunkt für das Speichern der Spielstände aller Welten ist der Ordner .minecraft/saves. In diesem Ordner gibt es für jede Welt, die man generiert hat, einen Weltordner. Jeder Weltordner trägt den Namen der Welt, so wie man ihn bei der Generierung gewählt hat. Bei einer späteren Umbenennung einer Welt im Spiel behält der Weltordner stets den ursprünglichen Namen. Dieser wird im Einzelspielermodus immer unter dem Namen einer Welt mit angezeigt.

  • .minecraft: Minecraft-Ordner
    • saves: Alle Minecraft-Welten.
      • Name des Weltordners: Alle Daten einer Welt. Der Weltordner kann über das Menü/Welt bearbeiten bequem direkt geöffnet werden.
        • advancements: Für jeden Spieler in dieser Welt die erreichten Rezepte und Fortschritte mit jeweiliger Bedingung und Zeitstempel. Die Dateinamen bestehen aus den UUIDs der Spieler. Siehe Rezeptdaten und Fortschrittsdaten. Die erreichten Rezepte werden zusätzlich für das Rezeptbuch in den Spielerdaten unter recipeBook gespeichert.
        • data: Bauwerke und andere Daten der Welt.
          • chunks.dat: Optional Informationen über dauerhafte Chunks der Oberwelt. Siehe Chunkladedaten.
          • idcounts.dat: Optional die ID der zuletzt hergestellten Landkarte der Welt, unabhängig von welchem Spieler sie hergestellt wurde. Siehe Kartendaten.
          • map_ID.dat: Optional Informationen über eine bestimmte Landkarte. Der Dateiname enthält die ID der Karte. Siehe Kartendaten.
          • scoreboard.dat: Optional Informationen über die Anzeigetafel der Welt. Siehe Anzeigetafeldaten.
          • villages.dat: Informationen über die Bewohner der Dörfer der Oberwelt. Diese Datei wird immer erzeugt, auch wenn noch kein Dorf generiert wurde. Siehe Dorfdaten.
          • villages_end.dat: Informationen über die Bewohner der Dörfer im Ende. Ein solches Dorf wird vom Spiel nicht generiert, kann aber vom Spieler gebaut werden. Diese Datei wird immer erzeugt. Siehe Dorfdaten.
          • villages_nether.dat: Informationen über die Bewohner der Dörfer im Nether. Ein solches Dorf wird vom Spiel nicht generiert, kann aber vom Spieler gebaut werden. Diese Datei wird immer erzeugt. Siehe Dorfdaten.
        • datapacks: Datenpakete für diese Welt.
        • DIM-1: Dateien des Nethers (Dimension "Minus 1").
          • data: Daten dieser Dimension.
          • poi: Für Welten ab der Vollversion 1.14 Region Dateien dieser Dimension, die für Dorfbewohner die "point of interest" (poi) "Sehenswürdigkeiten" enthalten. Hier werden Arbeitsplatzblöcke, Betten und Glocken gespeichert.
          • players: Für DIM-1 wird analog zur Oberwelt ein Ordner "players" angelegt, der hier bedeutungslos ist.
          • region: Alle Regiondateien des Nethers.
            • r.X.Z.mca: X und Z sind die Koordinaten der Region (32×32 Chunks). Siehe Chunkdaten.
        • DIM1: Dateien des Endes (Dimension "Plus 1").
          • data: Daten dieser Dimension.
          • poi: Für Welten ab der Vollversion 1.14 Region Dateien dieser Dimension, die für Dorfbewohner die "point of interest" (poi) "Sehenswürdigkeiten" enthalten. Hier werden Arbeitsplatzblöcke, Betten und Glocken gespeichert.
          • players: Für DIM1 wird analog zur Oberwelt ein Ordner "players" angelegt, der hier bedeutungslos ist.
          • region: Alle Regiondateien des Endes.
            • r.X.Z.mca: X und Z sind die Koordinaten der Region (32×32 Chunks). Siehe Chunkdaten.
        • generated: In der Welt gespeicherte Konstruktionen.
          • minecraft: Die Minecraft-Konstruktionen.
            • structures: Durch einen Konstruktionsblock gespeicherte Konstruktionen.
              • eigene-konstruktion.nbt: Der Dateiname enthält den Namen, den man im Konstruktionsblock angegeben hat. Siehe Konstruktionsvorlagen.
        • playerdata: Alle Spieler, die diese Welt betreten haben.
        • players: Für Welten vor der Vollversion 1.7.6 die Spielerdaten. Auch für neuere Welten wird der players-Ordner manchmal angelegt, hat dann aber keine Bedeutung.
          • Spielername.dat: Der Dateiname enthält den Namen des Spielers. Siehe Spielerdaten.
        • poi: Für Welten ab der Vollversion 1.14 Oberwelt Region Dateien die für Dorfbewohner die "point of interest" (poi) "Sehenswürdigkeiten" enthalten. Hier werden Arbeitsplatzblöcke, Betten und Glocken gespeichert.
        • region: Alle Regiondateien der Oberwelt (Dimension 0).
        • stats: Für jeden Spieler, der in dieser Welt spielt, die Erfolge und Statistiken.
        • icon.png: Das Icon der Welt, das im Menü/Einzelspieler angezeigt wird und im Menü Menü/Welt bearbeiten zurückgesetzt werden kann.
        • level.dat: Globale Informationen der Welt. Siehe Weltdaten.
        • level.dat_old: Bei Beginn der Alpha-Phase wurde eine neue Datei "level.dat" angelegt und die alte in "level.dat_old" umbenannt. Aber auch danach noch wird "level.dat_old" beim Generieren einer Welt erzeugt und beim Speichern der Welt beschrieben. Siehe Weltdaten.
        • resources.zip: Optional ein Welt-Ressourcenpaket, das beim Laden der Welt automatisch mit geladen wird. Siehe Ressourcenpaket.
        • session.lock: Sperre, sobald die Welt mit Minecraft bespielt wird. Siehe Alpha Level Format.

Geschichte

Speichern Classic 0.30 Ab Classic 0.0.13a_02 konnte man bis zu fünf Spielstände online speichern. In der später entstandenen Survival Test-Variante konnte man das ebenfalls, aber zusätzlich konnte man über den Menüpunkt "Save file..." Spielstände erstmals auch lokal speichern. Dazu wurde das Windows-Speicherfenster angezeigt, das einen beliebigen Speicherort ermöglichte. Mit Classic 0.30 wurde dieses lokale Speichern auch der Classic-Variante hinzugefügt.
Speichern Alpha 1.0.17 In der Indev-Variante konnte man Spielstände anfangs gar nicht speichern. Ab Indev 22. Januar 2010 war es dann möglich. Die Spielstände wurden jedoch ab sofort nicht mehr online, sondern nur noch lokal gespeichert. Das Windows-Speicherfenster, das in der Vergangenheit mehrfach Probleme bereitet hatte, wurde weggelassen. Stattdessen wurden die fünf bereits von Survival Test bekannten Speicherslots für das lokale Speichern verwendet. Dieses Konzept wurde während der restliche Alpha-Phase beibehalten.
Speichern Beta 1.3 Mit Beta 1.3 wurde nicht nur das Speicherformat verbessert, sondern man konnte jetzt beliebig viele Spielstände speichern. Sie wurden automatisch unter .minecraft/saves gespeichert.
Speichern 1.9 Mit Vollversion 1.9 wurde die Auswahlliste um Icons erweitert, die bei ersten Betreten einer Welt im jeweiligen Welt-Ordner gespeichert werden.
Versionsgeschichte der Java Edition
Classic 0.0.11a
  • Erste Veröffentlichung des Spiels, es wird im kreativen Einzelspielermodus im Webbrowser gespielt, der Spielstand kann noch nicht gespeichert werden
Classic 0.0.13a_02
  • Spieler mit Account können den Spielstand online speichern
  • Es können bis zu fünf Welten gespeichert werden
  • Zum Austausch der Welten mit anderen Spielern gibt man ihnen den Link auf den Online-Speicherplatz, das Format lautet: http://www.minecraft.net/play.jsp?name=<username>&id=<0 bis 4>[2]
Classic 0.0.16a
  • Veröffentlichung der Mehrspielerversion für den Kreativmodus, die Weltdaten des Servers werden im Serverordner als Datei server_level.dat im Classic Level Format gespeichert
Survival Test 0.25
  • Die Spielstände der neuen Überlebensmodus-Variante werden online unter http://www.minecraft.net/survivaltest/index.jsp?name=<username>&id=<0 bis 4> gespeichert, um sie von den Kreativmodus-Spielständen zu unterscheiden
  • In der Überlebensmodus-Variante kann man den Spielstand erstmalig auch lokal speichern (im Classic Level Format)
  • Beim Klicken auf "Save file..." öffnet sich im Webbrowser das Windows-Standardfenster für die Dateispeicherung, als Speicherort ist ...\.minecraft\saves voreingestellt
  • Man kann die Welten mit beliebigem Namen speichern, die Dateiendung lautet .mine
Classic 0.30
  • Der Menüpunkt zum lokalen Speichern wird auch in die Kreativmodus-Variante des Spiels eingefügt
  • Weil der Minecraft-Server zu voll wurde, ist die Online-Speicherung nur noch für Spieler mit bezahltem Account möglich[3]
Indev
23. Dezember 2009
  • Zur Weiterentwicklung des Spiels werden Indev-Versionen veröffentlicht, in denen man das Spiel vorerst absichtlich nicht speichern kann[4][5]
22. Januar 2010
  • Man kann auch in der Indev-Version Spielstände speichern und laden
  • Es wird ein neues Speicherformat verwendet (Indev Level Format), das auf dem NBT-Datenformat basiert
  • Zur Unterscheidung vom Classic Level Format lautet die Dateiendung .mclevel
  • Das im Kreativmodus und im Survival Test bereits vorhandene Menü mit den fünf Speicherplätzen wird beibehalten, die Spielstände werden in Indev jedoch nicht online, sondern nur lokal gespeichert[6]
Infdev
27. Februar 2010
  • Die Entwicklung grenzenloser Welten beginnt, die Spielstände dieser Welten werden lokal im Alpha Level Format gespeichert
  • Die Weltdaten werden in der Datei level.dat gespeichert
  • Das Konzept der Chunks wird eingeführt, die Chunkdaten werden von den Weltdaten getrennt gespeichert
  • Die Online-Speicherung ist mit grenzenlosen Welten nicht mehr möglich[7]
27. März 2010
  • Der Spielstand wird jetzt automatisch während des Spiels gespeichert, man muss dazu nicht mehr explizit den Save-Menüpunkt aufrufen[8]
Alpha 1.0.13
  • Das Spiel prüft jetzt anhand der Datei session.lock, ob zwei Clients versuchen, dieselbe Welt zu speichern und beendet sich in diesem Fall
Alpha 1.0.15
  • Die Mehrspielerversion für den Überlebensmodus wird veröffentlicht
  • Im Mehrspielermodus werden die Spielerdaten für jede Welt im Ordner /players gespeichert
Alpha 1.0.16.1
Alpha 1.2.0
  • Der Nether wird als neue Dimension eingeführt, seine Chunkdaten werden im Unterverzeichnis /DIM-1 gespeichert
Beta 1.3
  • Das neue Region Format kann die Chunkdaten deutlich schneller speichern und löst das Alpha Level Format ab
  • Chunks werden jetzt in Regiondateien zusammengefasst, die im /region-Ordner stehen
  • Das Speichern von Spielständen ist nicht mehr auf fünf Speicherplätze beschränkt[9]
Beta 1.6
  • Minecraft-Karten hinzugefügt, die Kartendaten werden in map_ID.dat in die höchste Karten-ID in idcounts.dat gespeichert
Beta 1.8
  • Dörfer hinzugefügt, die Dorfdaten werden in villages.dat gespeichert
Vollversion 1.0
Beta 1.9-pre2
  • Hardcore-Modus hinzugefügt, beim Tod des Spielers werden alle Speicherdaten der Welt gelöscht
Beta 1.9-pre4
  • Ende hinzugefügt, die Chunkdaten werden im Ordner /DIM1 gespeichert
Vollversion 1.2 (12w07a)
  • Die Chunk-Speicherung wird verbessert, das neue Speicherformat heißt Anvil Format
Vollversion 1.5 (13w04a)
  • Anzeigetafel hinzugefügt, die Anzeigetafeldaten werden in scoreboard.dat gespeichert
Vollversion 1.6.4 (1.6.3-pre)
  • Konstruktionsdaten für Bauwerke werden jetzt in eigenen Bauwerksdaten gespeichert
  • Dörfer in Village.dat, Festungen in Stronghold.dat, Minen in Mineshaft.dat, Netherfestungen in Fortress.dat, Tempel und Sumpfhütten in Temple.dat
Vollversion 1.7 (13w36a)
  • Erfolge und Statistiken werden jetzt für jede Welt getrennt gezählt, die Statistikdaten stehen im /stats-Ordner
Vollversion 1.7.6 (1.7.6-pre1)
  • Die Identifikation von Spielerdaten wird vom Spielernamen zur UUID geändert, die Spielerdaten werden nun unter /playerdata gespeichert
Vollversion 1.8
14w02a
  • Das Spiel erzeugt automatisch beim Generieren einer Welt auch die leeren Dateien villages_nether.dat und villages_end.dat
14w07a
  • Welt-Ressourcenpakete hinzugefügt, sie werden als resources.zip gespeichert
14w25a
  • Ozeanmonumente hinzugefügt, die Bauwerksdaten stehen in Monument.dat
Vollversion 1.9
15w31a
  • Endsiedlungen hinzugefügt, die Bauwerksdaten stehen in EndCity.dat
15w32b
  • Welt-Icon hinzugefügt, es wird als icon.png gespeichert
15w43a
  • Veränderte Beutetabellen können im Ordner loot_tables hinterlegt werden
Vollversion 1.10 (16w20a)
  • Konstruktionen können gespeichert werden, sie liegen dann im Ordner structures
Vollversion 1.11 (17w13a)
  • Selbst erfundene Fortschritte können im Ordner advancements gespeichert werden
Vollversion 1.12 (1.12-pre1)
  • Eigene Funktionen können im Ordner functions gespeichert werden
Vollversion 1.13
17w43a
  • Veränderte Weltdaten werden als Datenpaket im Ordner datapacks gespeichert
  • Dafür entfallen die Ordner advancements, functions, loot_tables und structures
18w06a
Vollversion 1.13.1 (18w31a)
5. Oktober 2018
  • Mojang veröffentlicht den Quellcode der Programmbibliothek für die Datenkonvertierung datafixerupper.jar
Vollversion 1.14 (19w12a)
  • Werden Welten unter dem gleichen Namen gespeichert, wird an dem Ordner-Namen kein - mehr angehängt, sondern eine fortlaufende Nummer

Einzelnachweise

Advertisement