区块加载[]
由于一个世界极大并且包含极多区块,因此游戏仅加载部分区块以使游戏可玩,游戏不会运算已卸载的区块。
Java版[]
加载标签[]
每个区块的加载都来源于一个“加载标签”。
每个加载标签具有3个属性:加载等级,标签类型和存活时间(可选属性)。
加载等级[]
加载等级用于决定了这个区块中哪些游戏内容能够被运算。
加载等级的范围是22-44。只会在22-33的范围里有常规的游戏运算。理论上小于22的加载等级是可能的(不过在原版中不可行)
一个区块如果获得多个加载等级,只有最小的加载等级是有效的。加载等级越小,游戏会运算更多内容。
加载等级可以分为以下有四种加载等级类型:
| 类型 | 等级 | 属性 |
|---|---|---|
| 强加载 | 31及以下 | 所有游戏内容都能够被运算。 |
| 弱加载 | 32 | 除了区块刻以及实体不会运算(例如不会移动),所有的游戏内容都正常运行, |
| 加载边界 | 33 | 只有少部分游戏内容会正常运行(红石元件和命令方块等都不能运行)。 |
| 不可访问 | 34及以上 | 各种游戏内容都不会运算,但世界生成会在这些区块中运行。 |
等级传播[]
带有加载标签的区块,会相邻(8个)的区块传播加载等级。对于每张“标签”使用“flood fills”算法从“标签”的位置传播,每向外传播一次就加载等级增加一,直到达到上限44。
| 34 | 34 | 34 | 34 | 34 | 34 | 34 |
| 34 | 33 | 33 | 33 | 33 | 33 | 34 |
| 34 | 33 | 32 | 32 | 32 | 33 | 34 |
| 34 | 33 | 32 | 31 | 32 | 33 | 34 |
| 34 | 33 | 32 | 32 | 32 | 33 | 34 |
| 34 | 33 | 33 | 33 | 33 | 33 | 34 |
| 34 | 34 | 34 | 34 | 34 | 34 | 34 |
| IN | IN | IN | IN | IN | IN | IN |
| IN | BO | BO | BO | BO | BO | IN |
| IN | BO | TI | TI | TI | BO | IN |
| IN | BO | TI | ET | TI | BO | IN |
| IN | BO | TI | TI | TI | BO | IN |
| IN | BO | BO | BO | BO | BO | IN |
| IN | IN | IN | IN | IN | IN | IN |
标签类型[]
不同来源的标签有不同的类型,用于确定不同加载等级。
玩家[]
由玩家加载的标签。“玩家”标签的加载等级为31。玩家的加载范围内的区块都会获得“玩家”标签。
玩家的模拟距离会生成模拟标签,模拟标签与玩家标签不同,独立计算。
- 玩家的加载范围:
- 玩家标签的范围是一个以玩家为中心的正方形。
- 正方形内的标签等级为31,正方形外按照标签传播规律传播直到等级达到45。
- 单人游戏中,正方形的边长取决于选项中的“渲染距离”:边长 = (渲染距离 - 1) × 2 + 1.
- 多人游戏中,正方形的边长取决于server.properties里的“view-distance”:边长 = (view-distance-1) × 2 + 1.
- 模拟标签的强度为max(0,31-模拟距离),位于玩家所在区块。
- 向外按照标签传播规律传播。
- 两个标签取数值较大者作为玩家的区块加载情况,与其他标签取小者不同。
- 例如,玩家附近某区块的玩家标签等级为31,模拟标签为35,则该区块的加载情况为不可访问。
根据以上阐述可以得出,玩家加载的强加载区块的正方形半径为min(渲染距离 - 1,模拟距离) × 2 + 1,向外一圈是弱加载区块,再向外是加载边界。外围是不可访问级别区块。
强制[]
使用/forceload命令可以让区块获得“强制”类型的加载标签。加载等级为31。
“强制”类型的加载标签在游戏重启后依然有效。
出生点[]
“出生点”加载标签的等级传播
世界出生点所在的区块会获得“出生点”加载标签。使用/setworldspawn改变世界出生点时,加载标签会同时改变。加载等级为22,是游戏中最小的加载等级。
传送门[]
当实体通过下界传送门传送时,在即将到达的下界传送门所在的区块会获得传送门标签,加载等级为30。
“传送门”加载标签本身没有“存活时间”,不过如果传送门300游戏刻(不卡顿则300游戏刻=15秒)内没有使用过,传送门系统会移除这个的加载标签。
末影龙[]
“末影龙”加载类型的加载等级为24。在开始攻击末影龙时,在末地的(0,0)区块创建,并在停止或结束后移除。
瞬移后[]
实体瞬移后在瞬移到的区块创建的加载标签,包括使用/tp命令、/spreadplayers命令,通过末地传送门。对于/tp命令,加载等级为32,而/spreadplayers命令和末地传送门的加载等级为33。
具有“存活时间”属性,为5gt,也就是说它在5个游戏刻后失效。
临时 [需要更多信息][]
在任意游戏代码调用“getChunk”方法时创建的标签。如果游戏认为这个区块应该被加载,它就会把这个“临时”标签赋给那个区块(可能在创建它之后)。
加载等级与区块是否已经完成世界生成有关。它的等级至少会是33,但在许多情况下会大于33。
例如:生物游荡AI执行时,它将会检查某个方块是否有完整上表面。作为检查的一部分,这个区块会获得等级为33的“临时”类型的加载标签。
它的“存活时间”为1游戏刻。
光 [需要更多信息][]
未知,可能与世界生成有关。
局限性[]
- 闲置超时
- 在加载区块中并不是所有游戏内容永远会运算,因为它们可能还有其他条件,其中包括:
特殊情况[]
一个区块中的事件可能会影响外部的区块。如果外部的区块处于非活动状态,则在大多数情况下会立即暂停。特别地,
- 弱加载区块边缘的方块发生变化,可以将方块更新传播到弱加载区块外部的方块,并使它们做出适当的响应。更新可以一个方块接一个方块地传播,直到传播到加载边界之外,这时它会创建一个“临时”加载标签并且继续传播。
- 加载等级为33的区块中的方块可以请求一个计划刻,但是直到该区块获得32及以下的等级时才进行处理。
- 流动的水或熔岩可以扩散到弱加载区块之外的第一个相邻方块,但流动会暂停,直到外部区块获得更高的等级。
- 火可以传播到弱加载区块外的第一个相邻的可燃方块。像水和熔岩那样,也会暂停;直到外部区块获得33及以下的等级。
- 草和菌丝可以传播到弱加载区块外的第一个相邻方块。
- 在强加载区块边缘生长的南瓜和西瓜茎可将其果实放置在外面区块的相邻方块上。
- 尝试移动到弱加载区块的实体(例如生物、矿车和箭)在离开强加载区块后会即刻停止所有活动。当这个弱加载区块获得更高的加载等级时,实体会继续移动。
- 强加载区块中的点燃的TNT会摧毁弱加载区块内的方块。
基岩版[]
在已加载区块里,所有游戏内容都能够被运算。在未加载的区块里几乎各种游戏内容都不会运算。
种类[]
- 玩家加载
- 近似圆形
[需要更多信息]。 - 在玩家模拟距离内的区块会被加载。
- 近似圆形
- 命令加载
- 使用
/tickingarea命令加载的区块。
- 使用
局限性 [需要更多信息][]
- 实体
- 生物生成遵循相同的规则。
特殊情况[]
一个区块中的事件可能会影响外部的区块。如果外部的区块处于非活动状态,则在大多数情况下会立即暂停。特别地,
- 已加载区块边缘的方块发生变化,可以将方块更新传播到未加载区块内的方块,并使它们做出适当的响应。
- 流动的水或熔岩可以扩散到外部区块中的第一个相邻方块,但流动会暂停,直到外部区块被加载。
- 火可以传播到加载区块外的第一个相邻的易燃方块。像水和熔岩那样,也会暂停;虽然是可见的,但动画不会被播放并且在区块活跃前不再继续传播。
- 草和菌丝可以传播到外部区域的第一个相邻方块,但受影响的方块在其区块变为活跃之前不会真正改变其外观,之后会即刻改变。
- 在加载区块边缘生长的南瓜和茎可将其果实放置在外面区块的相邻方块上。
- 尝试移动到外部区块的实体(例如生物、矿车和箭)在离开加载区块后会即刻停止所有活动。它仍然可见但会一动不动。当外部区块被加载时,实体会继续移动。
- 点燃的TNT会摧毁未加载区块内的方块,并且不像其他事件那样,其效果不限于相邻的方块。在外部区块的第二效果会暂停直到外部区块变得活跃。例如,如果爆炸破坏了支撑沙子或沙砾的方块,则沙子或沙砾不会立即掉落。附着在被摧毁的方块上的物品也会发生同样的事情,例如物品展示框和红石火把,它们在区块加载前不会掉落。
- 点燃的TNT被发射到未加载的区块时会暂停在外部空中的第一个方块。直到外部区块变为加载状态,它才将恢复其飞行和倒计时。