Skip to content

世界格式 ​

IMPORTANT

目前,Pumpkin 仅支持 Anvil 世界格式,这是原版 Minecraft 所使用的格式。不过,未来计划支持其他世界格式,如下所述。

已确定待合并主线的文件格式

Region 文件格式 ​

Minecraft Beta 1.3 到 Release 1.2 使用了一种名为“区域文件格式”(Region file format)的 Minecraft 格式。

这种格式存储的文件是.mcr 文件,每个文件存储一个称为区域的 32x32 区块组。

更多详细信息可以在 Minecraft Wiki 上找到。

Anvil 文件格式 ​

Anvil 文件格式是原版 Minecraft 当前使用的世界格式。它在 Minecraft Beta 1.9 中被引入,以取代区域文件格式。

Anvil 文件以.mca 扩展名存储,并且与旧格式相比,提供了多项改进,包括更好的性能和对更大世界的支持。

更多详细信息可以在 Minecraft Wiki 中找到。

Linear 文件格式 ​

线性区域文件格式(Linear region file format)是一种更现代的文件格式,它通过使用 zstd 库而不是 zlib 来节省磁盘空间。

zlib 是一种非常陈旧且过时的库,而 zstd 提供了更好的压缩效率和性能。

采用线性区域文件格式存储的文件扩展名为 .linear,这种格式在主世界和下界可以节省大约 50% 的磁盘空间,而在末地则可以节省高达 95% 的空间。

更多详细信息可以在 LinearRegionFileFormatTools 中找到。

Slime 文件格式 ​

Slime 文件格式是由 Hypixel 开发的一种改进型世界存储格式,旨在解决 Anvil 文件格式的许多问题。

它通过替换 zlib,进一步节省了存储空间,并且将整个世界保存在一个单独的文件中,这使得加载和管理世界更加高效。

此外,这种格式允许同一个文件被加载到多个实例中,从而提高了服务器的灵活性和性能。

更多详细信息可以在 Slime 世界管理器 的 GitHub 页面上找到,也可以在 Hypixel 的 Dev Blog #5 中查看。

Schematic 文件格式 ​

与其他列出的文件格式不同,Schematic 文件格式并不是用于存储 Minecraft 世界,而是用于第三方程序,例如 MCEdit、WorldEdit 和 Schematica。

这种格式存储的文件是.schematic 文件,并且是以 NBT 格式存储的,大多数情况用来储存结构等建筑信息。

更多详细信息可以在 Minecraft Wiki 中找到

世界生成 ​

当服务器启动时,它会检查是否存在一个存档,也就是所谓的 “world”。

随后,Pumpkin 会调用世界生成功能:

存在存档 ​

调用 Anvil 区块读取器(AnvilChunkReader)来处理给定存档的区域文件

  • 如上所述,区域文件存储了 32x32 区块。

    每个区域文件的命名都对应于其在世界中的坐标。

r.{}.{}.mca

  • 从存档文件中读取位置表,表示区块的坐标。
  • 从存档文件中读取时间戳表,表示区块最后一次被修改的时间。

不存在存档 ​

世界种子被设置为 “0”,在未来它将被设置为基本配置中的值。

随后调用了平原生成器(PlainsGenerator),因为到目前为止,平原是唯一实现的生物群系。

  • PerlinTerrainGenerator 被调用来设置区块高度。
  • 石头高度被设置为区块高度以下 5 格。
  • 土壤高度被设置为区块高度以下 2 格。
  • 草方块出现在土壤的顶部。
  • 基岩被设置在 y = -64。
  • 花朵和矮草随机分布。

SuperflatGenerator 也是可用的,但目前无法调用。

  • 基岩设置在 y = -64
  • 土壤设置在基岩上方两格
  • 草方块设置在土壤上方一格

玩家可以放置和破坏方块,但这些更改无法在任何世界格式中保存。

再编写这个中文文档的时候,Anvil世界 以支持保存世界格式

Released under the MIT License.