计划刻 与 刻 为同类游戏设定。
本文所有内容均基于 Java 版,基岩(BE)版不保证所有特性相同(部分已说明 BE 版的内容除外)!
计划刻(Scheduled Tick,有时也往往会被称作 Tile Tick,但是他们的翻译都是计划刻)是指 Minecraft 底层 中一种特殊的延时方案。这种方案相当一部分都被用到红石元件之中,如果打算深入研究 Minecraft 的红石系统(特别是生电相关方向),计划刻将会是玩家在游玩之中不可或缺的一部分。
(注:如无深入了解打算可以仅阅读开头的“作用与基础定义”部分)
作用与基础定义
一些方块可能会请求在将来的某一个游戏刻更新方块,这种更新方块的方式被称为计划刻。在一段时间后必定发生并且行为可以预测的变化,往往使用这种“计划刻”——比如在特定情况下,红石中继器会计划 2 游戏刻之后来改变它的状态,水会计划 1 游戏刻之后来流动。同一个方块上,计划刻与随机刻可能会起到不同的影响。
作为游戏刻(Game Tick)的一部分,之前请求的计划刻如果已到达指定时间,如果区块的加载等级小于 33(不包括 33)[仅 Java 版]或区块已加载[仅基岩版],计划刻就会被执行。否则推迟执行,直到区块被加载。
每个游戏刻所能计划的最大方块数是 65,536 个。
本质
计划刻实际上是一种更新(名词,指 Update,而不是那个用于指代游戏版本版本从低版本换到高版本的过程的动词),方块在计划自己未来某一游戏刻要发生的变化时会将这个计划加入 NTE 列表(Next Tick Entry)中,并记录将要发生变化的时间,然后在若干游戏刻之后发生某些变化。
应注意,计划刻其实是一种抽象的存在,它本质上是游戏对 NTE 列表的读取,计划刻的计划数量上限 65,536 实际上是 NTE 列表的最大长度。
计划刻的触发条件
计划刻仅在被特定方块触发计划刻事件时会被创建,而非像随机刻一样在任何时候都在发生。
延时
一个计划被加入 NTE 列表后会被指定一个时间执行某些变化,计划刻事件被创建到执行并被移出列表之间的长度为计划刻的延迟长度。
不同的计划刻事件有着自己的延迟,显然的,在同一游戏刻被创建的计划刻事件延迟短的那个会被先执行。
以下是一些常用方块的计划刻事件的延迟长度(Java 版 1.12.2):
方块 | 延迟长度,单位为游戏刻(gt) |
---|---|
红石中继器 | 红石中继器当前档数* 2(即每一挡延迟 2gt) |
红石比较器 | 2 |
压力板 | 压下:0;弹起:20 |
按钮 | 按下:0;弹起:木质 30gt,石质 20gt |
红石灯 | 亮起:0;熄灭:4 |
发射器 | 4 |
投掷器 | 4 |
红石火把 | 2 |
漏斗 | 0(NTE 阶段) |
水 | 1 |
值得强调的是,漏斗在 NTE 阶段下的延迟是 0,它的物品传输延迟并不依赖于计划刻和 NTE 元件。
优先级
如果有一些计划刻方块的计划事件被指定在同一个游戏刻执行,这些计划的执行顺序将会由计划刻优先级决定,优先级数字越小的优先级越高(也就是优先级为 -1 的比优先级 0 的优先级更高,在同一 gt 中也就要更早执行)(优先级并非是计划刻的延迟,不要理解错误了,优先级指的是两个计划刻方块请求两个不同的更新计划后两个计划的指定时间恰巧在同一个 tick 时的不同计划刻方块更新时的先后顺序优先级)。
以下是所有(至 Java 版 1.12.2 时)计划刻方块的优先级:
方块 | 优先级 |
---|---|
红石中继器 | -1 |
红石比较器 | 0 |
红石火把 | 0 |
侦测器 | 0 |
发射器 | 0 |
投掷器 | 0 |
命令方块 | 0 |
熔岩 | 0 |
水 | 0 |
掉落的沙子 | 0 |
按钮 | 0 |
压力板 | 0 |
探测铁轨 | 0 |
绊线钩 | 0 |
红石中继器与红石比较器会检查自己是否指向另一个红石中继器或红石比较器,如果一个红石中继器指向一个红石比较器则会产生 -3 的优先级,而一个红石比较器指向一个红石中继器则产生 -1 优先级。
不要将一些特殊的看上去是由计划刻决定的方块更新弄混了,如熔炉的烧制、小麦的成长、活塞的伸出收回等并不由计划刻决定。
部分方块的计划刻事件判定
其中红石中继器、红石比较器、红石火把以及侦测器在状态发生变化时(也就是它们开关的时候)创建计划刻事件;
命令方块、投掷器与发射器在被激活的时候创建计划刻事件,在被取消的时候没有;
水、熔岩以及沙子在被更新时创建计划刻事件;
各种按钮在被按下时创建计划刻事件;
压力板和探测铁轨被实体触发时创建计划刻事件;
绊线钩在被取消激活时创建计划刻事件;
红石灯在熄灭时创建计划刻事件(不是取消激活时,红石灯在被取消激活时到熄灭有 4gt 的延迟)。
参考资料
bilibili“红石科技搬运组”的内容【熟肉】剖析MC#15;
Minecraft wiki。
资料分类: | 游戏底层事件 |