我目前正在制作一个 Minecraft 块操作程序,我想知道 Minecraft 块部分是如何存储的。
来自Minecraft Wiki 关于 Minecraft 如何存储其区块的文章 http://minecraft.gamepedia.com/Chunk_format.
部分:复合标签列表,每个标签都是一个子块。
一个单独的部分。
Y:该部分的 Y 索引(不是坐标)。范围 0 到 15(从下到上),没有重复项,但如果为空,某些部分可能会丢失。
块:定义地形的 4096 字节块 ID。每块 8 位,加上 ?来自下面的添加标签的位。
添加:可能不存在。 2048 字节的附加块 ID 数据。添加到(组合)上述块 ID 以形成 0 到 4095 范围内的真实块 ID 的值。每个块 4 位。组合是通过将该值移至左侧 8 位,然后将其添加到上面的块 ID 来完成的。
数据:2048 字节的块数据另外定义了部分地形。每块 4 位。
BlockLight:2048字节记录每个块中块发射的光量。与加载时重新计算相比,加载时间更快。每块 4 位。
SkyLight:2048 字节记录照射到每个块的阳光或月光量。每块 4 位。
但我不明白如何Blocks
已读。块中的每个部分都是 16 x 16 x 16 块。但是 Minecraft 将块存储在1-d array.
3D 数组也线性存储在 RAM 中。您需要将坐标转换为索引。对于“Blocks”标签,其公式如下:
Index = Ycoord * 256 + Zcoord * 16 + Xcoord
这称为 YZX 阶。标签“HeightMap”或“Biomes”使用 ZX 顺序(索引 = Zcoord * 16 + X)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)