红石粉更新研究报告【MC刨根问底#1】

来源: 哔哩哔哩 2023-07-30 20:27:30

基础定义

连接性

概念:

该方向有红石粉与源红石粉相连接,包括玻璃下传(有连接但不传递信号),不包括被方块阻断


(相关资料图)

红石粉的更新:pp nc prepare

pp更新

常规pp更新:向毗邻的西东北南下上6个方块发出pp更新

prepare更新

22w13a 以前- 红石线放置、破坏、改变状态时,对它水平指向的任意方块,若它不是另一个红石线,则向它上下侧的方块(侦测器除外)发送PP更新。

22w13a 及以后- 红石线对斜上斜下的PP更新仅作用于其他红石线。

——Minecraft WiKi - 红石粉

性质

prepare更新本质上是:检查方块和状态并进行0~8次pp更新

更新流程

源红石粉按照北东南西的顺序依次进行以下步骤:

检查连接性,连接性成立则继续

检查该方向毗邻方块下方是否为侦测器,若不是侦测器,则向该方向毗邻方块下方发送pp更新

同2,其中方向变为上方

nc更新

流程

红石粉执行二阶毗邻更新:源红石粉本身及其毗邻的6个方块作为7个更新源,各向西东下上北南六个方向发出总计6*7=42次nc更新

更新源顺序

7个更新源的先后顺序是基于红石粉坐标的哈希信息随机排列的,其顺序见下表。这些更新源有97%的概率被分为三组。

各组别内的更新顺序是固定的,但组别排列顺序随机。除此之外,还有一些其他的概率极低的排列选项。

总更新流程

受到nc更新

红石粉受到nc更新时检查自身能量等级

改变自身能量等级 -> 周围与自身有连接的红石粉的最大能量值减一(即max-1)

发送prepare更新

发送pp更新

发送prepare更新

发送nc更新

受到pp更新

红石粉受到pp更新时检查自身连接状态

改变连接状态side

发送prepare更新

发送pp更新

发送prepare更新

常见“更新次数”解释

“42次更新”

指的是红石粉及其毗邻的7个更新源发出的总计42次nc更新

“最多22次更新”

指的是红石粉发出的两次prepare更新(包含最多8*2=16次pp更新)及常规pp更新(6次)总计最多22次pp更新

感谢@Fanzhitianyu的源码分析,并感谢@LazyAlienServer中所有帮助分析的成员

关键词:

你可能会喜欢: