本文编写于 127 天前,最后修改于 67 天前,其中某些信息可能已经过时。

什么是区块

  区块(Chunk)是 Minecraft 里非常重要的一个系统。通常来说,一个区块就是世界里一个 16X256X16 大小的长方体。因为世界的最高建筑高度也就 256 格,所以你可以说一个 16X16 大小的区域往上及往下都是同一个区块。但是并不是所有 16X256X16 大小的长方体都是区块,区块是在生成世界的时候就被决定的。

区块的生成

  区块如何生成是由 种子(Seed)决定的。我们在创建世界时就能看见输入种子的文本框,不同的种子码生成的世界不同,其实也就是生成的各个区块不同。同一个种子生成的区块是相同的,但条件是 Minecraft 的版本相同,不同版本的 Minecraft 生成世界的机制可能会有差别。
  区块并不是整块整块进行渲染的,通常情况下,我们在探索一个新的区块时,Minecraft 会以 16x16x16 的大小对一个区块进行渲染,也就是把这个区块切分为 8 份,逐份渲染。

区块内的活动

  这里我自己来下个定义,一个区块内所有的动物活动和生存、植物生长、红石机器运作、熔炉内物品烧制、液体流动、掉落物消失、怪物生成等活动统称为 区块活动(Chunk Activities)
  在玩家距离一个区块有一定距离的时候,这个区块内的所有区块活动都会停止,并会被储存到内存里,也就是 saves 文件中的存档文件。这就是为什么,你出了趟远门,回家发现家里的铁矿还没烧好。

主世界维度的区块储存在 saves\地图文件夹名称\region 中的 r.X.Z.mca 中,表示第 (32X,32Z) 至第 (32X+31,32Z+31) 个区块。若已知区块号,我们可以算出其所在的 .mca 文件。比如第 (X,Z) 个区块将会记录在第 (X//32,Z//32).mca 文件,即 r.(X//32).(y//32).mca 中。
其他维度的区块存储在 saves\地图文件夹名称\DIM{维度id}\region 中的 r.X.Z.mca 中。下界的维度 id 为 -1,末地的维度 id 为 1。
对于任意一个维度,坐标(X,Y,Z) 所在的区块为 (X//16,Z//16) 。比如,(1000,64,10000) 所在的区块就是 (62,625),所在的 mca 文件为 r.1.19.mca 中。 —— 摘自 Minecraft Wiki

特殊的区块

世界出生点区块

  玩家出生点所在的区块,称为 世界出生点区块(WorldSpawnChunk)。在这个区块内,无论玩家距离这个区块多远,只要玩家没有下线,区块活动都会照常运行。如果你想要你家的熔炉一直运作,为什么不尝试把家建造在这个区块内呢?或者尝试在你家所在的区块使用 /setworldspawn 指令吧(1.8+)

史莱姆区块

  并不是只有沼泽生物群系才会生成 史莱姆(Slime),在一些区块内也会生成,史莱姆会生成在 Y 轴 40 以下的史莱姆区块内(不限亮度)。如果你在矿洞中遇到了史莱姆,那就说明你找到了史莱姆区块,因为沼泽中史莱姆只会在 Y 轴 50-70 的地方生成。

勾勒出区块

这一部分资料来自 Minecraft Wiki

  你可以通过万能的 F3 来找到一个区块的边界。

  按下F3键可打开调试屏幕以显示玩家的X、Y和Z坐标以及“c”变量的值。这些坐标会因玩家的移动而改变。玩家可以通过在“x”和“z”变量旁边的“c”变量得知他们所处的区块。括号里的数字指示了玩家距离区块西北角的距离,因此如果X后面的c是3(5),Z后面的c是2(4),玩家位于区块(3,2),从区块西北角开始的方块(5,4)里。

  X或Z坐标能被16整除时即为区块之间的边界。例如:(96,-32)即为一个四区块的交点,X坐标在80到96区间内并且Z坐标在-48到-32区间内的方块即为一个区块,X坐标在96到112区间内并且Z坐标在-48到-32区间内的方块即为另一个区块,以此类推。当X和Z坐标为16的倍数时,此时玩家会穿越一个区块。

  本质上,当X和Z坐标可被16除尽时,玩家位于区块的左上角(西北角)。

  此外,玩家可根据此公式知道他们所处的区块:
  区块的X坐标:Floor( X坐标 / 16 )
  区块的Z坐标:Floor( Z坐标 / 16 )
  Floor是获取小于等于指定数字的最大整数,如Floor( 27.9561 )是27。
  换句话来说,如果X是27,Z是-15,区块将会是( Floor( 27 / 16 ), Floor( -15 / 16 ) )区块,这意味着玩家在区块(1,-1)。
  同时,玩家可以通过这个公式知道他距离西北角的距离:
(X 或 Z 坐标) AND 15