我们常用的侦测器高频实际上具有更加复杂的计划刻事件
常规的侦测器事件
【资料图】
侦测器受到面向的方块发出的pp更新,此时侦测器立即添加<2gt后亮起>的计划刻事件
在2gt延迟后,侦测器执行亮起计划刻
1) 侦测器改变自身状态,开始输出红石信号(powered=true),并以自身为中心发出pp更新
2) 侦测器添加<2gt后熄灭>的计划刻事件
3) 侦测器向指向(即红石信号输出方向)的方块及该方块的毗邻方块发出nc更新
在2gt延迟后,侦测器执行熄灭计划刻
1) 侦测器改变自身状态,停止输出红石信号(powered=false),并以自身为中心发出pp更新
2) 侦测器发出nc更新(同)
侦测器添加<2gt后熄灭>计划刻事件的特殊性
如果在同一gt内、侦测器执行亮起计划刻事件之前,侦测器受到了pp更新,侦测器会在此时添加<2gt后熄灭>的计划刻事件
侦测器在执行亮起计划刻时,仍会尝试添加<2gt后熄灭>的计划刻事件,但此时由于计划刻队列中已经存在了该事件,此次添加失败
侦测器在TE事件添加<2gt后亮起>计划刻事件的特殊性
b36方块到位时,若该b36将转变的方块为侦测器,则它会先在当前位置添加一个侦测器2gt后亮起的计划刻,再执行侦测器到位
由上述的常规结论和侦测器添加计划刻事件的特殊性,我们不难分析出玩家放置的侦测器高频(6gt)与活塞推动的侦测器高频(4gt)的差异原因。接下来让我们解释开头的那句话“我们常用的侦测器高频实际上具有更加复杂的计划刻事件”。
以下我们假设玩家和活塞操作的都是侦测器1(分别做了图示分析和文字分析,其中部分pp更新与计划刻添加失败省略)
玩家放置:
[侦测器1} {侦测器2]
0gt-NU-玩家放置侦测器1-侦测器2添加计划刻
2gt-NTE-侦测器2亮起(pp更新-侦测器1添加亮起计划刻-侦测器2添加熄灭计划刻)
4gt-NTE-侦测器1亮起(侦测器1添加熄灭计划刻)-侦测器2熄灭
6gt-NTE-侦测器1熄灭(pp更新-侦测器2添加亮起计划刻)
循环
活塞推动:
0gt-BE-活塞推动侦测器1(pp更新-侦测器2添加亮起计划刻)
2gt-NTE-侦测器2亮起(侦测器2添加熄灭计划刻)
2gt-TE-侦测器1添加亮起计划刻-侦测器1的b36到位
4gt-NTE-侦测器2熄灭(pp更新-侦测器1添加熄灭计划刻)-侦测器1亮起(pp更新-侦测器2添加亮起计划刻)
6gt-NTE-侦测器1熄灭(pp更新-侦测器2添加熄灭计划刻)-侦测器2亮起(pp更新-侦测器1添加亮起计划刻)
循环
侦测器除在常规状态下受到pp更新时会添加亮起计划刻事件外,还会:
在同一gt内、执行亮起计划刻前受到pp更新,会添加熄灭计划刻
在b36到位的那一游戏刻的TE事件中,会在b36到位前添加亮起计划刻