octopuscraft吧 关注:2,147贴子:44,160
  • 5回复贴,共1

【解说向,第二发】红石原理(雾)(范围有点大了额)

取消只看楼主收藏回复

涉及元件:红石线、红石中继器、红石比较器、活塞、门(乱入)
Topic:延时事件处理【重点活塞】、红石线
一边写一边实验一边发好了可能有点慢

===================……====================

@defanive2 镇楼节选自讨论前后
我来帮你写顺便水水贴看不懂不要怪我,有话在先请做好准备
当然群里的人都看到过了吧→ →这里还有解析


1楼2014-06-27 10:07回复
    为什么会讨论到这个呢,起因是@正正正正正好 不相信红石系统中非整数tick的存在,如0.5t(1gt),然后我们谈笑风生,我本想用活塞1.5t说的,结果通过大量实验数据,得出活塞延迟竟然不定(雾),最后def结合源码大谈延迟问题→ →
    以下测试均在14w20b进行,红石系统无异,只是为了更好的F3
    首先从我的电路说起

    很简单的电路,活塞伸出到到位不是1.5t么,盯着活塞开拉杆,预想是右、中、左顺序激活,但是结果。。。。
    活塞伸出延迟2t你一定在逗我然后nenn说活塞动画顺序不一定和激活顺序一样→ →再说我的破电脑显卡不好,cpu也不行,且眼睛看着0.05s太费力,于是换了不同声音的音符盒(当然要先关掉其他音效,不然活塞和栏杆声音会干扰)不愧是听音不错的→ →终于。。。听出来了左边两列是同时激活的
    PS:为什么不用命令方块或者两个相对的活塞呢?因为精确度【太高】了,我现在想判断左边两列之间有没有0.5t延迟,但即使是同一gt内激活,命令也能区分出来(表示顺序),过高的精确度无意义,我们研究的是有没有delay,而不是更新的顺序。相对眼睛来说,耳听0.05s还是无压力的,音符盒也是即时触发
    最终的最终,一个活塞确实是2t延迟,难道说1.5t的都是错的么?
    (待续)


    4楼2014-06-27 10:30
    收起回复
      然后本能地串联好几个活塞后,发现部分是1.5t延迟,部分是2t延迟的直接崩溃。
      后来,因为音符盒声音距离的问题,我把导线拉过来,连了个中继器,妈蛋活塞全变成1.5t延迟了好啊原来是电源接入方式的问题

      左边:拉杆/按钮/etc直接接入;红石块推动接入或放置接入;手动破坏切断红石线的方块;放置能被充能的方块——同时发生,也就是活塞2t
      右边:中继器接入;比较器接入;活塞移走切断红石线的方块——右先左后,再串联1t可以证明活塞死1.5t
      最终规律:如果电源接入时正好有活塞/中继器/比较器在工作中,那么活塞延迟1.5t,否则2t。这里强调的是【工作中】,表示进行时,比如:中继器(比较器)已经点亮了,再在前方放置方块使其被充能接入电路,此时活塞延迟2t;红石块被活塞推动,活塞运动完毕,红石块才被接入,此时活塞也是2t。
      def看的代码证明了我的想法:





      麻麻麻麻,mojang为什么要这么写代码啊?——因为mojang sb。
      PS:会不会什么时候当做bug修掉?那无延迟电路可能要出问题哎


      5楼2014-06-27 10:59
      回复
        活塞确实是个神奇的东西→ →本来想讲延迟事件的处理方案的,不过突然不想讲了,先说红石线,这货没有延迟,一下执行到底,下面是def的看法(感觉我一直在搬记录有木有QwQ)



        确实相当麻烦,研究起来也晕晕的,而且没啥大用处,如上,用了也不可靠,没准sb mojang什么时候这里改改那里改改就不能用了→ →


        6楼2014-06-27 11:08
        收起回复
          接下来说下红石线激活效应器的正确接法
          在ITx4里能看到这样的布线
          确实可以全部激活,而且没有BUD(废话),但是我们选取一部分,就会发现

          活塞不能激活=A=“但左边的确实指向活塞了啊,难道是BUD?”当然不是- -其实这个红石线根本没有【指向】活塞“胡说,明明指着QAQ”我们看到的只是渲染效果,红石线是否真正【指向】活塞并非看渲染,仔细看右上角的调试界面(知道我为什么用20b了吧),west:side,也就是西边有相邻,也就是引出,这里的引出可以是红石线、中继器(注意方向)、比较器、拉杆、按钮、火把、探测铁轨等等一堆,而且红石粉可以在相邻的上方或者下方(没有切断的情况下),比如第一张图
          但这里有个特殊情况,就是当红石线附着在非实体方块(上半砖、萤石、红石块)时,红石粉是只能向下连而不能向上连,但信号传输顺序相反,只能上传不能下xia传zai,看右上角连接方式,左边(东east)并没有side,活塞不会伸出
          但是下面就会连上啦,即使红石线没亮(当然不能有切断线的方块),现在是east:side和west:side。小伙伴们应该会发现放上红石的时候活塞会没反应,因为BUD啦,给个更新就是了;w;
          其实这个时候,mc把指针指向的红石线当做提供能量的线了,这个红石线必须能量等级不为0,而不是右下角的红石线不为0(略废话)
          这里的活塞可以换成任何非实体效应器(漏斗、TNT、栅栏门、活板门),下面是一个BUD态的TNT;w;(注意右上角,有亮点,不过不影响结论)
          还有一个重点,不能再垂直于活塞方向的边上有连接,这个时候是不会激活的
          最后总结,一个红石粉需要激活A方向的效应器(这里是不是实体方块无所谓),必须在C方向有引出,且B、D方向没有引出,这样就能激活(或BUD态)啦。是不是BUD要看有没有使效应器受到更新,上个帖子重点就是红石元件的更新

          这部分基本上在上个帖子里都有简单介绍过,这里扩展了一点,更重要的是那个帖子都要成黑历史了→ →


          7楼2014-06-27 11:49
          收起回复
            对于中继器,这样的激活方式很正常

            上面的活塞空气不能被充能,右下的活塞说明中继器不会给附着方块充能,那活塞为什么能激活呢?我们把活塞想象成门,嗯,明白了么?确实,使活塞激活的范围和门一模一样,小伙伴们可以自己试试,当然因为门是非实体方块,有的实验可能做不了,但只要想象一下,下面的电路就没什么问题了

            PS:mojang对门情有独钟还是怎么


            8楼2014-06-27 11:59
            收起回复