Minecraft Wiki
(Bot: Umbenennung Reflist => Verweisliste)
(26 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
{{Diese Seite|das Mapformat|den Amboss (engl. ''Anvil'')|Amboss}}
 
{{Diese Seite|das Mapformat|den Amboss (engl. ''Anvil'')|Amboss}}
  +
Das fünfte Datenformat zur [[Spielstand-Speicherung]] ist das '''Anvil Format''', das notwendig wurde, um die Bauhöhe von 128 auf 256 Blöcke anzuheben. Außerdem wurde die Speichergeschwindigkeit beschleunigt, indem Luftbereiche nicht mehr gespeichert werden.
   
  +
Das Anvil Format wurde mit der {{ver|1.2|12w07a}} eingeführt und verbessert das bisherige [[Region Format]]. Das Regionenkonzept und die anderen Daten sind gleich geblieben, nur die [[Chunkdaten]] wurden verbessert. Die Chunkdaten im neuen Format können von alten Minecraft-Versionen nicht gelesen werden.
Das '''Anvil Format''' beschreibt die Speicherung der [[Chunk]]s einer Minecraft-Welt. In einer '''mca-Datei''' (''Minecraft Anvil'') werden 32×32 Chunks zu einer Region zusammengefasst. Die Dateien werden im komprimierten [[NBT-Format]] im [[Welt-Ordner]] gespeichert.
 
   
  +
Entwicklung: [[Region Format]] [[Datei:Pfeil34.png|15px|link=]] '''Anvil Format'''
Das Anvil Format<ref name="Anvil">http://www.mojang.com/2012/02/14/new-minecraft-map-format-anvil/</ref> löste mit Einführung der {{ver|1.2|12w07a}} das [[Region Format]] ab und enthält viele Änderungen und Verbesserungen gegenüber dem vorherigen Format.
 
   
== Änderungen gegenüber dem Region Format ==
+
== Änderungen ==
  +
Wie schon im Region Format werden 32×32 Chunks zu einer Regiondatei zusammengefasst, die jetzt die Endung ''.mca'' ("Minecraft Anvil") trägt. An den Regiondateien, ihrer Benennung und ihrer internen Struktur hat sich nichts geändert, Details sind weiterhin dem [[Region Format]] zu entnehmen. Geändert hat sich dagegen die Struktur der [[Chunkdaten]]:
[[Datei:Anvil Conversion.png|200px|thumb|right|Konvertieren einer Welt von [[Region Format]] zu Anvil.]]
 
  +
* Ein Chunk wird jetzt in 16 Sektionen geteilt, die jeweils 16×16×16 Blöcke enthalten.
Die einzigen Änderungen von Region zu Anvil waren im [[Chunk Format]] - das [[Region Format]] wird immer noch genutzt, wird aber jetzt Anvil genannt. Anvil führt diese Änderungen ein:
 
  +
* Alle Daten, die bisher chunkweise gespeichert wurden, werden jetzt sektionsweise gespeichert.
  +
* Komplett mit Luft gefüllte Sektionen werden nicht gespeichert oder geladen. Dadurch können Chunks durchaus weniger als 16 Sektionen enthalten. Chunks in Ebenen, die ungefähr auf Meeresspiegelhöhe liegen, haben z.B. nur 5 oder 6 Sektionen, darüber ist Luft.
  +
* Die Pakete zum Senden von Chunkdaten zwischen [[Client-Server-Konzept|Server und Client]] wurden deutlich verkleinert, was die Datenübertragung beschleunigt.
  +
* Die maximale [[Numerische Identifikation#Block-IDs|Block-ID]] wurde von 256 auf 4096 erhöht durch Hinzufügen der ''Add''-Eigenschaft. Allerdings verwendet das Spiel weiterhin die IDs ab 256 für die Gegenstände. Minecraft-[[Mod]]s können jedoch in dem Bereich bis 4096 eigene Blöcke definieren.
  +
* Für jede X/Z-Position wird jetzt das Biom gespeichert, sodass es mit Tools leicht und blockgenau verändert werden kann.
  +
* Details zu den Änderungen der Chunkdaten siehe die Information im [http://www.mojang.com/2012/02/new-minecraft-map-format-anvil/ Mojang-Blog].
   
  +
== Konvertierung ==
* Maximale Bauhöhe wurde auf 256 angehoben (von 128).
 
 
[[Datei:Anvil Conversion.png|200px|thumb|right|Konvertieren einer Welt vom Region zum Anvil Format]]
* Leere Chunks (komplett mit Luft gefüllt) werden nicht gespeichert oder geladen.
 
  +
Die einzigen Daten, die sich ändern, sind die Regiondateien. Minecraft {{ver|1.2}} konvertiert (ab {{ver|version|12w07a}}) alte Regiondateien automatisch in das Anvil Format. Der Weltgenerator wurde nicht geändert, d.h. die Landschaft wird nicht höher, es werden bei der Konvertierung lediglich 128 zusätzliche Blöcke Luft über das bisherige Terrain gelegt.
* Die maximalen BlockIDs wurden auf 4096 erhöht (von 256), durch das Hinzufügen eines 4 Bit Datenlayers, allerdings ist der Rest des Codes von Minecraft noch nicht darauf vorbereitet. Die Forge API ermöglicht dies jedoch für Modder.
 
* Die Anordnung der Blöcke wurde vom Format ''XZY'' zu ''YZX'' geändert um die Kompression zu verbessern.
 
* Die Pakete zum Senden von Chunks wurden deutlich verkleinert (ein 256 Blöcke hoher, voller Chunk ist kleiner als im alten Format, und einer, der zusätzlich noch leeren Platz enthält, ist noch viel kleiner).
 
* [[Biom]]e werden per X, Z Position gespeichert und sie können somit mit Tools leicht verändert werden.
 
   
  +
Konvertierte Dateien erhalten zur Kennzeichnung die neue Endung ''.mca'' ("Minecraft Anvil"). Die alten ''.mcr''-Dateien ("Minecraft Region") bleiben zusätzlich erhalten, damit man diese Welt auch noch mit der {{ver|1.1}} (oder älteren Versionen) spielen kann. Wenn man das nicht möchte, kann man die ''.mcr''-Dateien manuell löschen, sie werden ab {{ver|1.2}} nicht mehr benötigt.
===Weitere Informationen===
 
Seit {{ver|1.2|12w07a}} werden Welten automatisch in das neue Format konvertiert, dabei wird allerding eine Kopie der Weltdateien im alten Format erstellt, um die Kompatibilität für ältere Versionen sicherzustellen. Der Weltgenerator wurde nicht geändert, es werden nur 128 zusätzliche Blöcke Luft über das normale Terrain gelegt, daraus resultieren 192 Blöcke von Normal Null zum Höhenlimit.
 
   
  +
Mojang hat auch einen separaten Konverter zur Verfügung gestellt, den man als ''.zip''-Datei [https://assets.minecraft.net/12w07a/Minecraft.AnvilConverter.zip hier] herunterladen kann. In der ''.zip''-Datei ist auch der Quellcode zur Konvertierung enthalten.
* Die 16×128×16 "Blocks", "Data", "SkyLight" und "BlockLight" Tags verändert und umfunktioniert (siehe unten).
 
* Ein "Section"-Listentag, der Compound-Tags enthält, wurde bis zu 16 Compound-Tags aufgefüllt.
 
* Jede Sektion besitzt 16×16×16 "Blocks", "Data", "SkyLight" and "BlockLight" Tags.
 
* Jede Sektion besitzt einen "Y"-Bytetag welcher festlegt, um welche Sektion es sich in der vertikalen Auflistung handelt. 0 bedeutet ganz unten (Grundgesteinsschicht) und 15 ist die höchste Position.
 
* Jede Sektion besitzt einen optionalen "Add" Tag, welcher ein Bytearray Datenlayer ist (wie "Data"). Dieser "Add" Tag ist nicht im Konverter enthalten, da im alten Format niemals Blöcke mit der ID größer als 255 vorgekommen sind. Dieser Extratag wird erstellt wenn ein Block dies verlangt, deswegen muss die <code>getTile()</code> Funktion nachsehen, ob der "Add" Tag existiert und es mit den Standardblockdaten kombinieren. In anderen Worten: <code>blockid = (add << 8) + baseid</code>.
 
* Jeder Chunk besitzt ein 16×16 Bytearray mit [[Datenwert#Biom-IDs|Biom-IDs]] enthält und "Biomes" heißt. Wenn dieses Array fehlt wenn das Spiel den Chunk lädt, wird überall -1 eingetragen.
 
* Das alte Format ist XZY <code>((x × 16 + z) × 16 + y)</code> und das neue Format ist YZX <code>((y × 16 + z) × 16 + x)</code> (der Unterschied zwischen DataLayer und OldDataLayer).
 
* Das neue Format nutzt ".mca" als Dateiendung, anstatt ".mcr"
 
* Ein neuer [[NBT]] Tagtyp mit dem Namen IntArray und der ID 11 wurde zum NBT-Format hinzugefügt und wird vom "Heightmap" Tag genutzt.
 
   
  +
== Aufhebung der ID-Begrenzungen und Metadaten ==
Für weitere Informationen siehe: [[Chunk Format]]).
 
  +
Bereits seit dem [[Indev Level Format]], noch vor Einführung der [[Chunk]]s, gab es die [[Metadaten]] zur Speicherung von Blockzuständen. Der erste Block mit Metadaten war die [[Fackel]], die es in fünf Ausrichtungen (Norden, Süden, Westen, Osten und stehend) gab. Von Anfang an waren die Metadaten auf 4 Bit Speichergröße festgelegt, was 16 verschiedenen Werten entspricht. Daher konnte es nur 16 Wollfarben geben und nicht mehr. Ebenso waren die Block-IDs auf 1 Byte Speichergröße festgelegt, was 256 verschiedenen Blöcken entspricht. Dies wurde auch in den darauf folgenden Speicherformaten bis hin zum aktuellen Anvil Format so beibehalten.
   
  +
Im Laufe der Zeit zeigten sich aber immer öfter die Nachteile dieser Begrenzungen:
==Eigenständiger Konverter und Source-Code==
 
  +
* Schon für den [[Hebel]], der mit {{ver|Alpha|1.0.1}} ins Spiel kam, reichten die Metadaten nicht für alle Möglichkeiten aus: Auf dem Boden (und mit {{ver|1.3}} an der Decke) konnte er längs und quer platziert werden, nicht jedoch an den Wänden. Dafür hätte man 24 Metadaten benötigt (je zwei Ausrichtungen für Decke, Boden und vier Seiten, jeweils aktiviert und deaktiviert).
Der Konverter und der Source-Code wurden nicht zusammen veröffentlicht, damit Entwickler sich vorbereiten und den Code untersuchen konnten<ref name="Anvil"/>
 
  +
* Mit {{ver|1.7}} musste man dann erstmals Blöcke notgedrungen verdoppeln, weil die Metadaten für die Darstellung der neuen Holzarten nicht immer ausreichten. Zwar hätte man für die [[Holzbretter]] 16 verschiedene Holzarten einführen können, aber bei [[Stamm]] und [[Laub]] waren nur vier Holzarten möglich, denn sie hatten schon Metadaten für die Ausrichtung bzw. für den Zerfall. Deshalb wurden zu den vorhandenen Block-IDs ''log'' und ''leaves'' die neuen Blöcke ''log2'' und ''leaves2'' hinzugefügt, um die restlichen zwei Holzarten abbilden zu können.
  +
* Obwohl es bereits zwei [[Blume]]n mit verschiedenen Block-IDs gab (37 ''yellow_flower'', 38 ''red_flower''), hat man in {{ver|1.7}}, um Block-IDs zu sparen (ID 174 war bereits erreicht), keine neuen Block-IDs, sondern acht neue Metadaten für ''red_flower'' vergeben. Das führte allerdings zu Problemen beim [[Blumentopf]]: Bisher speicherte er seinen Inhalt in 11 Metadaten. Mit den neuen Blumen und Setzlingen hätte man 21 Metadaten benötigt. Daher wurden die Metadaten des Blumentopfes entfernt und sein Inhalt als [[Blockobjektdaten]] gespeichert. Um den in alten Welten eingesetzten {{b|/setblock flower_pot}} weiterhin funktionsfähig zu halten, wurden in allen 1.7-Versionen zusätzlich die Metadaten der bisherigen 11 Inhalte beibehalten und erst mit {{ver|1.8}} entfernt.
  +
* Mit {{ver|1.8}} kam der [[roter Sand|rote Sand]] ins Spiel, aus dem [[roter Sandstein]] hergestellt werden konnte. Obwohl dieser bis auf die Farbe identisch zum bisherigen gelben Sandstein war, mussten vier neue Blöcke eingeführt werden (179 ''red_sandstone'', 180 ''red_sandstone_stairs'', 181 ''double_stone_slab2'', 182 ''stone_slab2'' ), weil die Metadaten der bisherigen Blöcke nicht ausreichten, um die neue Farbe mit abzubilden.
  +
* In derselben Version kamen 15 neue Blöcke für [[Zauntor]]e, [[Zaun|Zäune]] und [[Tür]]en in anderen Holzarten hinzu, weil die Metadaten der bisherigen Blöcke nicht ausreichten, um verschiedene Holzarten abzubilden.
  +
* Spätestens mit der {{ver|1.11}} muss die Entscheidung gefallen sein, die Metadaten und ID-Begrenzungen aufzuheben, denn für die [[Shulkerkiste]] in 16 Farben und die [[glasierte Keramik]] in 16 Farben ({{ver|1.12}}) wurden insgesamt 32 neue Block-IDs vergeben. Danach waren nur noch zwei Block-IDs frei (253 und 254). Die {{ver|1.13}} musste also etwas an diesem System ändern.
   
  +
Das neue Speicherkonzept ab {{ver|1.13|17w47a}} übernimmt aus den seit {{ver|1.9}} existierenden [[Konstruktionsvorlagen]] das Prinzip der Blockzustandspalette:
==Verkleinern der Levelgröße nach der Konvertierung==
 
  +
* Für jede [[Chunkdaten#Datenstruktur|Chunk-Sektion]] wird eine Blockzustandspalette als Liste gespeichert. Standardmäßig steht an erster Stelle der Liste (Index 0) immer Luft, auch wenn die Sektion gar keine Luft enthält. Dann folgen alle unterschiedlichen Blockzustände, die in dieser Sektion vorkommen. Enthält die Sektion z. B. Stein und zwei unterschiedlich ausgerichtete Kürbislaternen, dann stehen in der Palette Luft (Listenindex 0), Stein (Listenindex 1), Kürbislaterne mit Ausrichtung Norden (Listenindex 2) und Kürbislaterne mit Ausrichtung Osten (Listenindex 3).
Die Leveldaten der Anvil Formats haben eine ".mca" Endung, während die Dateien des Region Formats auf ".mcr" enden.
 
  +
* Die Palette kann für jede Sektion anders aussehen: Mal kann Stein bei Index 1 stehen, mal bei Index 27, mal kommt er gar nicht vor.
Um Speicherplatz zu sparen, können die ".mcr" Dateien nach einer erfolgreichen Konvertierung gelöscht werden:
 
  +
* Zusätzlich zur Palette gibt es einen Index-Array. Dieser enthält exakt 16×16×16 = 4096 Einträge für die 4096 Blöcke der Sektion. Jeder Eintrag ist ein Index auf die zugehörige Blockzustandspalette der Sektion.
  +
* Wenn das Spiel den Block an Position (X, Y, Z) darstellen will, schaut es im Index-Array an die passende Position, erhält den Palettenindex und schaut mit diesem in die Blockzustandspalette. Dort steht die Block-ID und der genaue Zustand dieses Blockes.
   
  +
=== Änderungen ===
* Windows Konsole
 
  +
* Numerische Block-IDs spielen keine Rolle mehr, sie werden nicht mehr gespeichert. Stattdessen wird der ID-Name in der Palette gespeichert. Die Begrenzung auf 256 Block-IDs entfällt, es kann jetzt beliebig viele Blöcke geben.
*# Windows Konsole öffnen (''Win-r, cmd, Enter'')
 
  +
* Metadaten spielen keine Rolle mehr, die Blockzustände werden nicht mehr als Metadaten gespeichert. Stattdessen wird der Blockzustand-Name und -Wert in der Palette gespeichert. Es kann jetzt beliebig viele Blockzustände für einen Block geben.
*# Führe dieses Kommando aus(ohne die <> Zeichen):
 
del <path_to_your_world_data_directory>\*.mcr
 
   
  +
=== Konvertierung ===
* Windows Explorer
 
  +
* Die Regiondateien von Welten, die vor {{ver|1.13|17w47a}} erzeugt wurden, werden automatisch in das neue Blockspeicherformat konvertiert.
*# Öffne den Windows Explorer (''Win-e'')
 
*# Navigiere zu dem Ordner, der die Weltdateien enthält.
 
*# Wähle ihn aus.
 
*# Durchsuche den Ordner (''F3'')
 
*# Suche nach *.mcr
 
*# Wähle aller Ergebnisse aus (''Strg+a'')
 
*# Drücke ''Entf (Entfernen)''
 
 
* Linux shell
 
*# cd in den Ordner, der die Leveldaten enthält.
 
*# führe dieses Kommando aus:
 
find . -name \*.mcr -delete
 
 
==Einzelnachweise==
 
{{Verweisliste}}
 
   
 
== Geschichte ==
 
== Geschichte ==
 
{{Geschichtlich
 
{{Geschichtlich
 
|group1= {{ver|1.2|12w07a}}
 
|group1= {{ver|1.2|12w07a}}
  +
|list1= *Die Bauhöhe wird von 128 auf 256 erhöht und das [[Spielstand-Speicherung/Region Format|Region Format]] zur Speicherung der Chunkdaten wird durch das Anvil Format abgelöst.
|list1= *Das Anvil Format ersetzt das [[Region Format]]
 
  +
|group2= {{ver|1.13|17w47a}}
  +
|list2= *Die Begrenzung der Block-IDs wird aufgehoben und die [[Metadaten]] entfallen.
  +
|group3= {{ver|1.16|20w14a}}
  +
|list3= *Dateien in diesem Format werden jetzt im synchronen Modus geöffnet, um Datenverlust und Beschädigung nach einem Absturz zu vermeiden.
 
}}
 
}}
  +
{{Navbox-Minecraft}}
+
{{Navbox-Minecraftdaten}}
   
 
[[en:Anvil file format]]
 
[[en:Anvil file format]]
 
[[fr:Anvil]]
 
[[fr:Anvil]]
  +
[[ja:Anvilファイルフォーマット]]
  +
[[nl:Anvil bestandsformaat]]
  +
[[pt:Anvil (formato de arquivo)]]
 
[[ru:Anvil (формат карт)]]
 
[[ru:Anvil (формат карт)]]
 
[[zh:Anvil文件格式]]
 
[[zh:Anvil文件格式]]

Version vom 8. Juni 2021, 16:26 Uhr

Das fünfte Datenformat zur Spielstand-Speicherung ist das Anvil Format, das notwendig wurde, um die Bauhöhe von 128 auf 256 Blöcke anzuheben. Außerdem wurde die Speichergeschwindigkeit beschleunigt, indem Luftbereiche nicht mehr gespeichert werden.

Das Anvil Format wurde mit der Vollversion 1.2 (12w07a) eingeführt und verbessert das bisherige Region Format. Das Regionenkonzept und die anderen Daten sind gleich geblieben, nur die Chunkdaten wurden verbessert. Die Chunkdaten im neuen Format können von alten Minecraft-Versionen nicht gelesen werden.

Entwicklung: Region Format Pfeil34 Anvil Format

Änderungen

Wie schon im Region Format werden 32×32 Chunks zu einer Regiondatei zusammengefasst, die jetzt die Endung .mca ("Minecraft Anvil") trägt. An den Regiondateien, ihrer Benennung und ihrer internen Struktur hat sich nichts geändert, Details sind weiterhin dem Region Format zu entnehmen. Geändert hat sich dagegen die Struktur der Chunkdaten:

  • Ein Chunk wird jetzt in 16 Sektionen geteilt, die jeweils 16×16×16 Blöcke enthalten.
  • Alle Daten, die bisher chunkweise gespeichert wurden, werden jetzt sektionsweise gespeichert.
  • Komplett mit Luft gefüllte Sektionen werden nicht gespeichert oder geladen. Dadurch können Chunks durchaus weniger als 16 Sektionen enthalten. Chunks in Ebenen, die ungefähr auf Meeresspiegelhöhe liegen, haben z.B. nur 5 oder 6 Sektionen, darüber ist Luft.
  • Die Pakete zum Senden von Chunkdaten zwischen Server und Client wurden deutlich verkleinert, was die Datenübertragung beschleunigt.
  • Die maximale Block-ID wurde von 256 auf 4096 erhöht durch Hinzufügen der Add-Eigenschaft. Allerdings verwendet das Spiel weiterhin die IDs ab 256 für die Gegenstände. Minecraft-Mods können jedoch in dem Bereich bis 4096 eigene Blöcke definieren.
  • Für jede X/Z-Position wird jetzt das Biom gespeichert, sodass es mit Tools leicht und blockgenau verändert werden kann.
  • Details zu den Änderungen der Chunkdaten siehe die Information im Mojang-Blog.

Konvertierung

Anvil Conversion

Konvertieren einer Welt vom Region zum Anvil Format

Die einzigen Daten, die sich ändern, sind die Regiondateien. Minecraft Vollversion 1.2 konvertiert (ab 12w07a) alte Regiondateien automatisch in das Anvil Format. Der Weltgenerator wurde nicht geändert, d.h. die Landschaft wird nicht höher, es werden bei der Konvertierung lediglich 128 zusätzliche Blöcke Luft über das bisherige Terrain gelegt.

Konvertierte Dateien erhalten zur Kennzeichnung die neue Endung .mca ("Minecraft Anvil"). Die alten .mcr-Dateien ("Minecraft Region") bleiben zusätzlich erhalten, damit man diese Welt auch noch mit der Vollversion 1.1 (oder älteren Versionen) spielen kann. Wenn man das nicht möchte, kann man die .mcr-Dateien manuell löschen, sie werden ab Vollversion 1.2 nicht mehr benötigt.

Mojang hat auch einen separaten Konverter zur Verfügung gestellt, den man als .zip-Datei hier herunterladen kann. In der .zip-Datei ist auch der Quellcode zur Konvertierung enthalten.

Aufhebung der ID-Begrenzungen und Metadaten

Bereits seit dem Indev Level Format, noch vor Einführung der Chunks, gab es die Metadaten zur Speicherung von Blockzuständen. Der erste Block mit Metadaten war die Fackel, die es in fünf Ausrichtungen (Norden, Süden, Westen, Osten und stehend) gab. Von Anfang an waren die Metadaten auf 4 Bit Speichergröße festgelegt, was 16 verschiedenen Werten entspricht. Daher konnte es nur 16 Wollfarben geben und nicht mehr. Ebenso waren die Block-IDs auf 1 Byte Speichergröße festgelegt, was 256 verschiedenen Blöcken entspricht. Dies wurde auch in den darauf folgenden Speicherformaten bis hin zum aktuellen Anvil Format so beibehalten.

Im Laufe der Zeit zeigten sich aber immer öfter die Nachteile dieser Begrenzungen:

  • Schon für den Hebel, der mit Alpha 1.0.1 ins Spiel kam, reichten die Metadaten nicht für alle Möglichkeiten aus: Auf dem Boden (und mit Vollversion 1.3 an der Decke) konnte er längs und quer platziert werden, nicht jedoch an den Wänden. Dafür hätte man 24 Metadaten benötigt (je zwei Ausrichtungen für Decke, Boden und vier Seiten, jeweils aktiviert und deaktiviert).
  • Mit Vollversion 1.7 musste man dann erstmals Blöcke notgedrungen verdoppeln, weil die Metadaten für die Darstellung der neuen Holzarten nicht immer ausreichten. Zwar hätte man für die Holzbretter 16 verschiedene Holzarten einführen können, aber bei Stamm und Laub waren nur vier Holzarten möglich, denn sie hatten schon Metadaten für die Ausrichtung bzw. für den Zerfall. Deshalb wurden zu den vorhandenen Block-IDs log und leaves die neuen Blöcke log2 und leaves2 hinzugefügt, um die restlichen zwei Holzarten abbilden zu können.
  • Obwohl es bereits zwei Blumen mit verschiedenen Block-IDs gab (37 yellow_flower, 38 red_flower), hat man in Vollversion 1.7, um Block-IDs zu sparen (ID 174 war bereits erreicht), keine neuen Block-IDs, sondern acht neue Metadaten für red_flower vergeben. Das führte allerdings zu Problemen beim Blumentopf: Bisher speicherte er seinen Inhalt in 11 Metadaten. Mit den neuen Blumen und Setzlingen hätte man 21 Metadaten benötigt. Daher wurden die Metadaten des Blumentopfes entfernt und sein Inhalt als Blockobjektdaten gespeichert. Um den in alten Welten eingesetzten Befehl /setblock flower_pot weiterhin funktionsfähig zu halten, wurden in allen 1.7-Versionen zusätzlich die Metadaten der bisherigen 11 Inhalte beibehalten und erst mit Vollversion 1.8 entfernt.
  • Mit Vollversion 1.8 kam der rote Sand ins Spiel, aus dem roter Sandstein hergestellt werden konnte. Obwohl dieser bis auf die Farbe identisch zum bisherigen gelben Sandstein war, mussten vier neue Blöcke eingeführt werden (179 red_sandstone, 180 red_sandstone_stairs, 181 double_stone_slab2, 182 stone_slab2 ), weil die Metadaten der bisherigen Blöcke nicht ausreichten, um die neue Farbe mit abzubilden.
  • In derselben Version kamen 15 neue Blöcke für Zauntore, Zäune und Türen in anderen Holzarten hinzu, weil die Metadaten der bisherigen Blöcke nicht ausreichten, um verschiedene Holzarten abzubilden.
  • Spätestens mit der Vollversion 1.11 muss die Entscheidung gefallen sein, die Metadaten und ID-Begrenzungen aufzuheben, denn für die Shulkerkiste in 16 Farben und die glasierte Keramik in 16 Farben (Vollversion 1.12) wurden insgesamt 32 neue Block-IDs vergeben. Danach waren nur noch zwei Block-IDs frei (253 und 254). Die Vollversion 1.13 musste also etwas an diesem System ändern.

Das neue Speicherkonzept ab Vollversion 1.13 (17w47a) übernimmt aus den seit Vollversion 1.9 existierenden Konstruktionsvorlagen das Prinzip der Blockzustandspalette:

  • Für jede Chunk-Sektion wird eine Blockzustandspalette als Liste gespeichert. Standardmäßig steht an erster Stelle der Liste (Index 0) immer Luft, auch wenn die Sektion gar keine Luft enthält. Dann folgen alle unterschiedlichen Blockzustände, die in dieser Sektion vorkommen. Enthält die Sektion z. B. Stein und zwei unterschiedlich ausgerichtete Kürbislaternen, dann stehen in der Palette Luft (Listenindex 0), Stein (Listenindex 1), Kürbislaterne mit Ausrichtung Norden (Listenindex 2) und Kürbislaterne mit Ausrichtung Osten (Listenindex 3).
  • Die Palette kann für jede Sektion anders aussehen: Mal kann Stein bei Index 1 stehen, mal bei Index 27, mal kommt er gar nicht vor.
  • Zusätzlich zur Palette gibt es einen Index-Array. Dieser enthält exakt 16×16×16 = 4096 Einträge für die 4096 Blöcke der Sektion. Jeder Eintrag ist ein Index auf die zugehörige Blockzustandspalette der Sektion.
  • Wenn das Spiel den Block an Position (X, Y, Z) darstellen will, schaut es im Index-Array an die passende Position, erhält den Palettenindex und schaut mit diesem in die Blockzustandspalette. Dort steht die Block-ID und der genaue Zustand dieses Blockes.

Änderungen

  • Numerische Block-IDs spielen keine Rolle mehr, sie werden nicht mehr gespeichert. Stattdessen wird der ID-Name in der Palette gespeichert. Die Begrenzung auf 256 Block-IDs entfällt, es kann jetzt beliebig viele Blöcke geben.
  • Metadaten spielen keine Rolle mehr, die Blockzustände werden nicht mehr als Metadaten gespeichert. Stattdessen wird der Blockzustand-Name und -Wert in der Palette gespeichert. Es kann jetzt beliebig viele Blockzustände für einen Block geben.

Konvertierung

  • Die Regiondateien von Welten, die vor Vollversion 1.13 (17w47a) erzeugt wurden, werden automatisch in das neue Blockspeicherformat konvertiert.

Geschichte

Versionsgeschichte der Java Edition
Vollversion 1.2 (12w07a)
  • Die Bauhöhe wird von 128 auf 256 erhöht und das Region Format zur Speicherung der Chunkdaten wird durch das Anvil Format abgelöst.
Vollversion 1.13 (17w47a)
  • Die Begrenzung der Block-IDs wird aufgehoben und die Metadaten entfallen.
Vollversion 1.16 (20w14a)
  • Dateien in diesem Format werden jetzt im synchronen Modus geöffnet, um Datenverlust und Beschädigung nach einem Absturz zu vermeiden.