【Minecraft】一种简便的分析红石电路延迟方法

最近搞红石电路时遇到一些延迟分析问题,计算延迟时总是混乱一些元件的延迟。后来,我发现用一种方法分析红石电路的延迟是比较方便而且准确的,我用它成功地分析了一些比较容易引起混乱的红石电路。收益良多,下文我就分享一下这种方法。
前言:
1.本文讨论范围为java版的Minecraft。
2.方法在1.8--1.12.2是适用的,1.5--1.7.10也可以作为参考,至于1.5以下,或者以后更新的版本,我没验证过,不敢肯定能否用于这些版本。
3.阅读本文前,推荐先去看看以下视频或者文章,这对后文理解有益,
(1)https://www.bilibili.com/video/av2537345
PS:该视频理论有一些小错误,不过还是建议看看
(2)https://www.bilibili.com/video/av2547012
(3)百度贴吧(自行补充) /p/ 4078230299
PS:你们看不懂1、2就去看3吧,3可以说是GP大触对1、2的总结
废话:
如果你看了上面这些已经完全头晕眼花什么都不懂的话,我建议你也别读我这篇文章了,学习红石去,几天后或者几个月后再回来看吧。
如果你能勉强理解的话,看不看你自己定咯。
(〜 ̄△ ̄)〜
PS:之前让某人去看GP大触的论文,他就圈着“理论适合所有的1.8.x版本,因1.9中活塞代码进行了修改,部分内容可能不再适用。”这句话发给我,不予评价!

正文:
1.准备一个Excel或者WPS表格,并且按照图中制作表格。(你手画也行)

2.在MC中搭出要分析的电路,截图。(尽可能截到所有的红石元件)
3.编辑截图,在各个需要分析的元件上标注“1”、“2”、“3”或“A”、“B”、“C”等,不易混淆即可。
4.把截图插入表格中,以便后面分析。
5.开始分析
6.分析完成,总结得出结论

如何分析:
1.分析的前提是你已经熟悉了各个元件的延时,元件属于NTE还是BE等,所标注的中继器档位是多少等,如果连这个都搞错的话,那么分析出来的也是错误的。
2.表格中,我用加粗的黑线隔开每个gametick,你可以理解成1条黑线延迟1gt,也可以说1条黑线延时0.05s
3.从某个事件触发开始分析(玩家拉拉杆、某个中继器亮起、活塞开始推出等),过后发生什么连锁反应,就记进“事件”中,简短表达即可。(你自己看得懂就行)
4.如果事件都发生在同一个更新顺序时(表格中同一行),则按照顺序从左到右写,注意,这个很重要,排错序也有可能导致后面的分析出错。
5.NTE类元件(中继器、投掷器)等,当其在某一gt受到激活且有更新时(比如中继器后端收到红石信号),就在那一gt加入NTE表中。
6.BE类元件(活塞,音符盒),当其在某一gt受到激活且有更新时(活塞激活),如果信号是来自BE或者之前的,马上进入本gt的BE表并工作,如果收到来自BE之后的信号,则跳到下1gt的BE中工作。(跨过1条黑线)
7.活塞工作时间是2gt的!(正常推出收回),当活塞推方块或者拉方块时,方块到位是活塞开始工作2gt后的TE上!

例子分析:
来看看实际分析过程
(・∀・)
例1:

MC中测试,拉下红色羊毛上的拉杆,两个活塞是同时伸出;拉下绿色羊毛上的拉杆,B活塞先推,C活塞后推,间隔1gt。
分析过程↓↓



例2:
MC中测试,当拉下红色羊毛上的拉杆,两个投掷器先后投掷(可以通过听声音,在其中一个投掷器里塞入东西,可以辨别哪个投掷器先投掷)(考验听力233);拉下绿色羊毛上的拉杆,两个投掷器同时投掷。

分析过程↓↓



例3:
在MC中测试,当拉下红色羊毛上的拉杆,两个活塞同时伸出,两个投掷器先后投掷;拉下绿色羊毛上的拉杆,C活塞先于D活塞早1gt伸出,两个投掷器同时投掷。

分析过程↓↓



例4:

Jim当时做电路时问我,为什么两个活塞是同时收回,而不是右路比左路晚1gt收回,我给他分析了下。
分析过程↓↓

关键在于,Jim认为A活塞收回延时3gt,然而其实是收回2gt,在方块压线时,中继器就在那一gt就进入NTE表中。然而如果方块压线后接的是活塞,活塞是跳到下一gt才会动作的,所以表现为延时3gt。

例5:
先讲个笑话,瓜君和我做树场时,他用老仙的0t发生器,并且用命令方块测时间,结果测到两次0t脉冲间隔2gt(正常来说是3gt),瞬间颠覆瓜君的红石观2333,过后,他才发现是命令方块搞的鬼,因为命令方块是属于NTE元件的,下表中我就分析了一下,命令方块是如何搞鬼的。
(・∀・)
分析过程↓↓

第3gt时,“F的红石块复位”,就已经让命令方块进入NTE,然后G活塞等都是跳到下1gt才响应的,然后命令方块也在那个时候报时,刚好两个报时间隔了两条横线,所以在MC中测出是延时2gt,然而观察活塞们的工作,它们都是隔了3条横线的(3gt)。

本文就讲述到此,感谢各位的阅读,也感谢前言中的那些研究MC机制的老外,搬运的UP,读源代码的GP大触,以及各位dalao的帮助,让我写出这篇文章。本文也许有些瑕疵或者有误之处,欢迎指出修正。
(=・ω・=)