[从活塞到游戏机制] 03-响应的条件:更新和信号源

更新和信号源
1,更新的概念
广义的更新是指方块在发生一些变化时工作的一个游戏机制,当一个方块因为实体(比如玩家挖掘/放置方块)或区块刻(如常加载区块中的机器因区块刻推移而运行)等原因而发生的变化,它会通知附近方块,检查是否要连带作出响应(如铁块上的火把因为玩家挖掉了铁块而掉落)。
2,更新的分类(3种)
NC更新[NeighborChanged]:指最基础的最符合方块更新含义的更新类型,如红石元件的状态变化、方块的放置与破坏、方块的移动以及B36固化方块的过程(如拉杆的开关)。
PP更新[PostPlacement]:指方块发生变化导致的临近方块与变化方块交互情况发生变化的更新,比如栅栏的连接方式,红石粉的形态改变。
比较器更新:指比较器信号输入端,比较器输出端以及减法模式的信号强度的相减并输出。(与下文无多少关联,便不在此做多赘述)
3,如何区分NC更新与PP更新
NC更新:方块更新检测器(BUD)[block update detector]:原理是通过将检测器变为一种有信号但未响应的状态,如果附近产生NC更新,游戏会重新检查NC更新的方块以及附近的方块,并修复BUD的未响应状态(更新发生在检测器附近),使检测器作出响应。
PP更新:侦测器(未找到佛冷的文章,抱歉QwQ)
注:此处有一个重要概念,即元件响应都依赖更新,更新是至关重要的一步。或者说Minecraft的底层逻辑便是更新,疯狂的更新。
4,方块更新的范围

一阶六向毗邻:方块的更新范围是一阶毗邻的六个面,即向六个方向,且仅限直接接触。

二阶六向毗邻:方块的更新范围为二阶毗邻的六个面,即向六个方向,可以隔一个方块传输信号。
二阶五向毗邻:方块的更新范围为二阶毗邻的五个面(安装此方块A的方块B不可被方块A充能,但可以更新),即向五个方向,可以隔一个方块传输信号。

注:一些普通完整方块没有充能状态的NBT标签,即一些普通完整方块仅限传输信号。
5,活塞响应的两个必要条件
更新:没有更新,任何元件都不会被触发。
信号源:类似电源,为元件的响应提供能量。
半连接性QC(Quasi-connectivity):方块的激活与方块上方的空间之间,有一种隐约的连接性,却没有直接接触,被称为半连接性。(QC不是活塞的一阶毗邻!QC不是活塞的一阶毗邻!QC不是活塞的一阶毗邻!重要的事情说三遍awa)