惯宣-CGX_ 发表于 2023-6-10 01:30:33

【命令】常见命令方块条件链式汇总及各功能偏向的比较

本帖最后由 惯宣-CGX_ 于 2023-6-10 04:36 编辑

常见命令方块条件链式汇总及各功能偏向的比较


图 - 总览

•前言

- 本文意在比较各类型命令方块链过滤条件的形式,并对比各自在功能偏向上的差异,以方便各位在地图制作上更好地搭建命令架构。各位不妨当作参考一阅。
- 命令方块的材质是自制材质,断开的是无条件、连起的是有条件。


•单链

- 任何命令链都是由作为基础组件的『单链』,附加连接起来的。这里介绍常用的两种基础款和三种特殊样式。

- 两种基础款:「比较器」和「条件制约」。可以说是最基础的款式了,用途广泛制作简易,门槛属于最初的那一级。这两种款式也是命令链条件的两种底层逻辑,只要命令方块执行成功连接的有条件命令方块或是比较器就会激活,继续触发下一个命令方块。


图 - 基础
- 比较器有4刻延迟但是可以分离运行组,让检测只做检测,而且因为是强充能,所以可以同时激活多列命令链。但是检测结果必须要等到检测失败才能断电,所以,如果连接在链尾,就必须要等到链尾的命令失败,才能再次激活连接的命令方块。

- 条件制约默认没有延迟,但是后面连接的无条件命令会全部运行,除非使用execute等命令充做条件刻意运行失败。这里还要注意高频链的延迟是不可用的。

- 条件制约是根据箭头后面的方块决定的,而非是侧边指向他的方块。绿链是只要指向他的方块被激活他就会激活,所以可以转向,可以多链触发单链也就是或门逻辑(所有指向他的方块只要有一个激活就能激活他)。所以用于决定这个方块是否激活的条件可以由其他方向决定,也就是「条件分离原链」。这种链看起来复杂但其实旁边是空链,只起到触发的作用。但是通常搞这种链的很少,与其搞这么复杂还不如多列几条链。总之,这种链只在理论存在,实践我从来没见过。

- 由此也能发现,这两种基础款有着很明确的短板:比较器有延迟且不受每次触发影响直到执行失败才会断电;条件制约则会把命令链全部运行。所以为了解决这些短板,追求更极致的命令效果,出现了如下两种形式:「断链」和「克隆」。


图 - 进阶
- 断链,顾名思义就是断开命令链。我是在B站看到的【BV1qG411G7Tz】,于是记了下来。具体原理就是通过放置不同朝向的连锁命令方块,断开或闭合命令链,来达到过滤条件的效果。本质上断链还是条件制约,只不过还带有转向。最为突出的效果是链条触发过程中的无延迟,除非对无延迟有绝对的追求,不然原地克隆更具有普遍性。

- 原地tp大家都知道吧。/tp ~~~那么原地克隆就是将脉冲命令方块原地复制。保持开启的脉冲命令方块会在放置的时候马上激活,所以ctrl+鼠标中键选取带有nbt的橙脉,那么只要放置就能激活里面的命令了。但是橙脉至少会有1刻延迟。


- 这样一来,无延迟的命令链有了,根据条件每次都能触发的命令链也有了,还不会全部触发。
- 虽然问题都得到了解决,但是这两张方法都不约而同地变得更加臃肿。尘世间一切事物何尝不是如此,越往高级发展就越是复杂,但是构成这些复杂事物的底层原理从未曾有过改变。不妨就让他更加臃肿更加地复杂吧,留下即使是在文化消亡之时也未曾稍有褪逊之色的功碑。


•侧链

- 『侧链』,侧边是导出命令执行状态的最好位置,特别是对于将一整条链都当做条件来检测的结构,连接侧边比多链更加统一有序,更直观表达每条链的作用。你看天宫不就是核心区域连接附加区域么?

- 以方块的触发方式定论可以在原有的「比较器」和「有条件」里再加第三种控制方式:「克隆」。若要以有无延迟来定论则还需加入「转向」。


图 - 侧链
- 图中所示是两条检测条件的命令链各自连接了条件通过后可以触发的侧链。
- 连接了比较器的是红石触发,没有比较器的是保持开启。左边的橙脉克隆触发,在上的紫环会在条件通过后自动开启。因而这里就是第一个比较点:触发方式。
- 其次是延迟,比较器有4刻,橙脉有1刻,紫环与条件链同时开启可以达到无延迟。
- 知道了这些之后就可以把这4种侧链分为3个类别了。

- 有条件的保持开启的脉冲命令方块,延迟只有1刻,激活需要另外的命令方块,可以做到激活与条件检测分离。
- 循环命令方块会马上激活,这两个除了4刻延迟之外没有差别,除非要用比较器触发多列命令链。所以即使不是追求无延迟,也建议用有条件的紫环。
- 红石触发的脉冲命令方块则是立即的单次激活,且直到条件检测失败之前都不能再次激活。这里再次废话。


图 - 转向
- 紫环可以无延迟激活,但是真正要无延迟还是要看绿链。通过改变方向决定是否激活,同时可以根据不同的条件选择不同的方向。所以这就是为什么说断链的本质只不过是带有转向的条件制约,因为转向不止断链。

•多链侧边比较器

- 原先我是不想写的,因为上文讲得差不多了,而且也没有特殊的东西可讲。但是侧边比较器又很流行,所以就单独拎出来了。


图 - 侧边比较器
- 就是这样一个很简易的形式,跟上面的类型相比实在是过于简易了。一条链的某个点充当检测条件,用比较器决定是否充能另一条链上相同位点的红石触发的绿链。特点是条件不在原链上,而且可以同时使用条件制约。

•结语
- 大概就是这么多,总之,命令链过滤条件还可以做的更为复杂,但是更多时候@e就够了。终归是要看为什么东西服务,要是光为了命令链而不是命令表达才搞得这么复杂那可就是为了为了而为了了。
- 上面写得肯定还是不够,若有新的形式就再来补充吧。

惯宣-CGX_ 发表于 2023-12-6 20:26:18

有条件的脉冲和循环会在检测完上一个命令方块是否成功之后再延迟输出命令。而这两种命令方块光是启动都有1刻的延迟就会导致只能检测上一刻的条件是否成功以至于无法立即停下命令链。
总之在条件失败失败之后仍然会输出一次命令。

惯宣-CGX_ 发表于 2023-9-5 17:00:23

命令方块内写了同样的指令,可以用feedback——反馈信息来区别。检测两个命令方块是否一致。这也可以作为筛选条件的一种做法。

惯宣-CGX_ 发表于 2023-8-16 14:09:50

刚刚在别人那边看到的:比较器可以检测命令方块执行成功的次数,输出不同强度的红石信号。 ​

Xiaolengnihao 发表于 2023-6-11 10:46:37

66666666666666

轻云幻月 发表于 2023-6-10 13:10:22

有用,收藏夹里吃灰去吧!

YanRan233 发表于 2023-6-10 10:03:57

感谢分享

惯宣-CGX_ 发表于 2023-6-10 05:12:21

嗷呜不生电 发表于 2023-6-10 04:57
纹理包是啥

自制的。

嗷呜不生电 发表于 2023-6-10 04:57:43

纹理包是啥[哔哩_喜欢]
页: [1]
查看完整版本: 【命令】常见命令方块条件链式汇总及各功能偏向的比较