关于我的世界1.8中继器组bug源码心得解析

时间:2017-12-24 来源:88130安卓下载 作者:佚名

  关于我的世界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

  那么,优先级变化为什么会造成最后一个中继器不响应呢?我们举例一个中继器串:

  关于我的世界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无延迟红石中继器装置详解

  我的世界墨鱼版红石中继器装置详解

  我的世界两种计数器介绍 中继器脉冲计数器装置

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高