Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

世界的游戏状态存储发生在文件中,这些文件的内容构建在一个清晰的树结构中。这些不是文本文件,而是以所谓的NBT格式(名称二进制标记)存储的,因此您只能使用特殊程序查看内容。有些程序以图形方式表示数据,以便您可以看到和更改Minecraft以外的世界(例如“MCEdit”)或表示数据树装结构的程序(例如“NBT Explorer”)。

存储

存档的保存发生在不同的时间:

  • 生成新世界时,它将首次保存。
  • 在玩游戏时,不断添加和更改数据。
  • 按下Esc暂停按钮后即被保存。在启动器的“游戏输出”中记录:"[Server thread/INFO]: Saving and pausing game..." - 您可以继续玩游戏或通过菜单项退出”保存并返回主菜单“。
  • 如果卸载了区块,因为玩家离它们太远,它们会被提前保存。
  • 定期自动保存。

格式

随着游戏的发展,存储格式发生了多次变化:

  • 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 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.
  • 在已经更换到新的Anvil文件格式。 保留了区域的概念,但是现在可以保存而不是128个高度的256个块。 将方块分成16×16×16块立方体部分。 空气部分不再存储,不再装载。该概念还有其他变化,以加快方块的加载和保存。

转换

对于每个新版本的Minecraft,存储游戏内存数据都会有轻微或重大的变化。如果使用旧版本创建了一个世界,则新版本无法再读取它。为了实现这一点,必须在读取之前或期间转换数据,即转换为新格式。

Beispiel: Mit 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 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 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 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).

世界文件夹

保存所有世界的存档的起点是文件夹.minecraft/saved。 在此文件夹中,您生成的每个世界都有一个世界文件夹。 每个世界文件夹都带有世界名称,因为它是在界面中选择的。 在稍后重命名游戏中的世界时,world文件夹始终保留原始名称。 这始终以单人模式显示在世界名称下。

  • Template:JSON Minecraft文件夹
    • Template:JSON 所有的Minecraft世界。
      • Template:JSON 一个世界中的所有数据。 可以通过菜单/编辑世界直接轻松打开世界文件夹。
        • Template:JSON 对于这个世界上的每个玩家,各自的条件和时间戳达到配方书进度。 文件名由玩家的UUID组成。 参见配方数据进度数据。 到达的配方也存储在recipeBookplayer data中的recipe book中。
        • Template:JSON 世界的结构和其他数据。
          • Template:JSON 关于世界的区块的可选信息。
          • Template:JSON 可选地,世界上最近创建的地图的ID,无论它是由哪个玩家制作的。 见地图物品格式
          • Template:JSON 有关特定地图的可选信息。 文件名包含物品的ID。 见地图物品格式
          • Template:JSON 关于世界记分板的可选信息。 参阅记分板数据.
          • Template:JSON 关于主世界的村庄信息。 即使尚未生成任何村庄,也始终生成此文件。 见村庄数据
          • Template:JSON 关于末地中村庄居民的信息。 这样的村庄不是由游戏产生的,而是可以由玩家建造的。 始终生成此文件。 见村庄数据
          • Template:JSON 关于下界中村民的信息。 这样的村庄不是由游戏产生的,而是可以由玩家建造的。 始终生成此文件。 见村庄数据
        • Template:JSON 这个世界的数据包
        • Template:JSON 下界文件 (维度 "负1").
          • Template:JSON 这个维度的数据。
          • Template:JSON 来自版本的世界,是村民的”兴趣点”(poi)。包含工作站方块,床和铃铛。
            • Template:JSON Optional information about persistent chunks of the Nether. See Chunkladedaten.
          • Template:JSON 对于DIM-1,创建一个类似于主世界的文件夹“玩家”,这在这里毫无意义。
          • Template:JSON 下界的所有区块文件。
        • Template:JSON 末地文件 (维度 "正1").
          • Template:JSON 这个维度的数据。
          • Template:JSON 来自版本的世界,是村民的”兴趣点”(poi)。包含工作站方块,床和铃铛。
            • Template:JSON Optional information about persistent chunks of the end. See Chunkladedaten.
          • Template:JSON 对于DIM1,创建一个类似于主世界的“玩家”文件夹,这在这里毫无意义。
          • Template:JSON 末地的所有区块文件。
        • Template:JSON 存储在维度上的结构。
          • Template:JSON The Minecraft Constructions.
            • Template:JSON Constructions stored by a construction block.
        • Template:JSON 进入这个世界的所有玩家
          • Template:JSON 文件名包含玩家的UUID。 请参阅玩家
        • Template:JSON 对于玩家数据之前的世界。 即使对于较新的世界,有时也会创建“玩家”文件夹,但之后没有任何意义。
          • Template:JSON 文件名包含玩家的名称。 见玩家数据
        • Template:JSON 来自版本的世界,是村民的”兴趣点”(poi)。包含工作站方块,床和铃铛。
        • Template:JSON 所有主世界区域文件(维度0)。
        • Template:JSON 对于在这个世界上玩的每个玩家,成就统计数据
        • Template:JSON 菜单/单人游戏中显示的世界图标,可以在编辑菜单/世界菜单中重置。
        • Template:JSON 存档信息。 参见世界格式
        • Template:JSONalpha阶段的开始处,创建了新文件“level.dat”,并将旧文件重命名为“level.dat_old”。 但即使在那之后,“level.dat_old”也会在生成世界时生成,并在保存世界时进行描述。 参见世界格式
        • Template:JSON (在加载世界时自动加载的世界资源包可选)。 见资源包
        • Template:JSON Lock as soon as the world gets hit with Minecraft. See Alpha Level Format.


Template:Data

参考

Advertisement