Minecraft块段是如何存储的

Minecraft块段是如何存储的,minecraft,chunks,Minecraft,Chunks,我目前正在制作一个Minecraft区块操作程序,我想知道Minecraft区块部分是如何存储的 从 节:复合标记列表,每个标记都是排序的子块 一个单独的部分 Y:本节的Y索引(非坐标)。范围从0到15(从下到上),没有重复项,但如果为空,某些部分可能会丢失 块:定义地形的4096字节块ID。每个块8位,加上?下面的位添加标记 添加:可能不存在。2048字节的附加块ID数据。要添加到(结合)上述块ID以形成范围为0到4095的真实块ID的值。每个块4位。合并是通过将该值向左移动8位,然后将其从上

我目前正在制作一个Minecraft区块操作程序,我想知道Minecraft区块部分是如何存储的

节:复合标记列表,每个标记都是排序的子块

一个单独的部分

Y:本节的Y索引(非坐标)。范围从0到15(从下到上),没有重复项,但如果为空,某些部分可能会丢失

块:定义地形的4096字节块ID。每个块8位,加上?下面的位添加标记

添加:可能不存在。2048字节的附加块ID数据。要添加到(结合)上述块ID以形成范围为0到4095的真实块ID的值。每个块4位。合并是通过将该值向左移动8位,然后将其从上面添加到块ID来完成的

数据:2048字节的块数据额外定义了地形的各个部分。每个块4位

BlockLight:2048字节,记录每个块中的块发射光量。使加载时间比加载时重新计算更快。每个块4位

天光:2048字节,记录击中每个街区的阳光或月光量。每个块4位


但我不明白
块是如何读取的。块中的每个部分都是16 x 16 x 16块。但是,Minecraft将区块存储在一个1-d阵列的一个部分中。

3D阵列也线性存储在RAM中。您需要将坐标转换为索引。对于“块”标记,其公式如下:

Index = Ycoord * 256 + Zcoord * 16 + Xcoord
这称为YZX订单。标签“高度图”或“生物群落”使用ZX顺序(索引=Zcoord*16+X)