关于我的世界1.8中继器组bug源码心得解析。那这个是我的世界1.8版本中关于中继器组BUG的源码解释哦~那有不懂的玩家猛戳这里查看吧!希望对大家有所帮助。
手游巴士我的世界官方群:325049520 或 256070479 欢迎各路喜爱我的世界的小伙伴们加入讨论!
玩服务器的小伙伴们可以加入:141931866 群一起联机玩游戏哦!
如果你是腐竹的话可以给我们投稿你的服务器哦~投稿地址:点我进入
如果你有心仪的作品或者心得分享的话,欢迎来手游巴士投稿,大家可以点击>>>投稿<<<进行投稿哦~ 有奖品哦~
之前在和nenn触的闲聊中,谈到了中继器串在1.8更新后无法通过1t负脉冲的问题,这显然是常识理解不了的,正好我对mc源码比较熟悉,结合源码终于对此现象做出完美的解释XD
如图所示电路,在拉杆信号的下边缘,会输出一个1t负脉冲,后面接有3个中继器。中继器的响应情况是,前两个中继器可以观察到熄灭了1t,而最后一个中继器却毫无反应。类似现象可以拓展到N个中继器,而且只有最后一个中继器不响应。
具体情况见http://tieba.baidu.com/p/3387440542中2、3、4楼。
类似的比较器脉冲也有此问题:
最后一个中继器保持常亮,不响应信号。而这一切在1.7版本中都还运行完好,所有中继器都有响应。
那么是什么造成了1.7和1.8的区别呢?答案在于1.8中对于红石中继器/比较器的优先级判定代码有改动!在mc中,如果一个中继器/比较器前方的方块也是中继器/比较器,那么这个中继器/比较器的优先级就会被提高一级。原本中继器优先级是-2,比较器优先级是0,优先级提升之后,中继器优先级变为-3,比较器优先级变为-1。
此外,前方的中继器/比较器还必须满足一个条件才能提升此中继器的优先级,就是对于方向的判定。在1.7中,如果这两个中继器的方向相同,优先级提升将被取消。而在1.8中,这部分被修改为:如果这两个中继器的方向相反,优先级提升才被取消!
至于1.7到1.8为什么会有这种变动。。sbmojang
那么,优先级变化为什么会造成最后一个中继器不响应呢?我们举例一个中继器串:
这是相连的5个中继器接通比较器脉冲时的一个瞬间,我们先来证明一个现象:
如果相邻两个中继器的优先级相同,那么同gt内一定是前方的中继器先更新。比如图中从左数第2、3个中继器,一定是第3个中继器先更新。
反证:假设现在是第二个中继器先更新,那么在下1t,此中继器的更新将导致第三个中继器第一个被加入Next Tick Entry,从而在下1t第三个中继器先更新。
好吧这个证明并不怎么严谨2333,知道事实确实是这样就行了。
我们来排一下这5个中继器的优先级:
-3、-3、-3、-3、-2.
从而,在1gt内,更新顺序从左数倒数第二个中继器开始,然后是第三个中继器,一直到第一个中继器:
这时最后一个中继器才被更新,但是:
这时它发现自己已经不需要熄灭了,于是,最后一个中继器就会保持常亮,而其他中继器会正常响应。而在1.7中,这5个中继器优先级全部为-2,所以更新顺序依次从右到左,不会有不响应信号的情况。
要避免这种情况,只需要让整串电路从左到右的优先级不会增加就行,解决方法可以有,把相邻的中继器分开,使用比较器降低优先级,以及加一个方向不同的中继器/比较器:
好,现在这个问题完美解决啦!
此外,还有几个以前无法解释的黑石现象,同样可以用优先级来解释,如nenn触的帖子
http://tieba.baidu.com/p/3581242230中3楼:
身为红石渣的我还是把它拆开吧。。
当收到拉杆下边缘信号时,左边火把会输出一个短脉冲。相同的原理,想要左边火把有响应,只需要左边火把先于右边火把更新就行了,于是利用了比较器优先级低于中继器的原理。我们也可以利用拉杆的更新顺序实现相同的效果:
结束~
PS:在此非常感谢redstone_machinery_communication贴吧玩家Gamepiaynmo的分享。
以上就是关于我的世界1.8中继器组bug源码心得解析。更多精彩尽在手游巴士我的世界专区。
相关攻略推荐:
我的世界中继器红石组成武器步骤详解
4x3x3无延迟红石中继器装置详解
我的世界墨鱼版红石中继器装置详解
我的世界两种计数器介绍 中继器脉冲计数器装置