首页 男生 游戏竞技 Minecraft指令手册

第九十一章 红石比较器

Minecraft指令手册 你好MC 4938 2024-07-09 15:29

  (此章节原为『循环装置-牛顿的棺材板快要按不住了啊!!!』,于2022年7月26日改为『红石比较器』)

  (此章节有用到本章说来插入图片,因此最好在起点中文网上阅读本章)

  现在我们已经了解了很多指令,但是仅仅知道各种指令如何使用,最多也就称得上是一个『会用指令的玩家』而已。那该怎么办呢?我们现在要做的是,将各个指令和游戏特性互相联系起来,这也就是这一卷的主要内容。

  红石比较器(Redstone Combr /arator),你应该知道这是个什么东西吧?作为红石电路的重要组成部分之一,它有许许多多的的用途。

  作者的红石并不怎么好,所以这边并不会讲什么特别高深的红石相关内容(我也不会讲)。但基础的一些特性我们还是要了解了解。

  让我们拿出一个红石比较器,放在地上,你应该注意到了这东西上面插着三个看起来像是红石火把的东西(其实就是红石火把),并组成了一个三角形(△)。这个三角形的一边平行于红石比较器的一侧,另一头指向另一侧(见插图91-1)。

  这个三角形意味着什么呢?让我们换一个方式来看待红石比较器:

  ┏━┓北

  ┃△┃↑(插图:91-2)

  ┗━┛

  (长方形的红石比较器?)

  (额,就这样子将就看吧,能够看配图的话那更好)

  这是一个朝向正北(Z-)的红石比较器,这个红石比较器有三个输入口和一个输出口:

  ┏O┓

  B△C(插图:91-3)

  ┗A┛

  A······后侧输入口

  B······左侧输入口

  C······右侧输入口

  O······输出口

  其中,A后侧输入口是很重要的一个输入口,你可以向这个输入口输入红石信号。当然,单纯的输入红石信号并不会发生什么事情,因为我们没有在O输出口放置一些能够接收红石信号的东西。让我们在A侧放置一个红石块,O侧放置一个红石粉看看:

  亮起来的红石粉

  ┏O┓

  B△C(插图:91-4)

  ┗A┛

  红石块

  你会发现O侧的红石粉亮起来了。这是为什么?

  因为红石比较器在A侧收到了红石块产生的红石信号,于是就从O侧输出来了。那么问题来了:我们都知道红石信号有强度等级之分,在普通的红石线中传递的红石信号每过一格就会衰减一级,直到完全没有信号。那么红石信号在穿过红石比较器的过程中会发生衰减吗?

  由于红石块能够产生出15级的红石信号,因此我们只需要测试O侧输出的红石信号是否为15级即可。我们当然可以通过延长O侧的红石线路,观察红石信号是否传递了15格。但别忘了本书是一个指令教程,因此我们干脆直接用指令对O侧的红石粉进行方块状态测试:

  /execute if block ~~~ minecraft:redstone_wire[br /ower=15]——Java1.13及之后版本

  /testforblock ~~~ minecraft:redstone_wire [br /ower=15]——Java1.12.2-1.11

  /testforblock ~~~ minecraft:redstone_wire [“redstone_signal“:15]——基岩版

  虽然方块状态我们并没有了解过,但也快了,这边先预习一下也无妨。上面的指令的作用是:探测指令执行地点(也就是你的位置)的方块是否是红石线,且br /ower(redstone_signal)方块状态的值为15。其中,br /ower(redstone_signal)方块状态的作用就是储存该红石粉的红石信号强度等级。

  站在O侧的红石粉上,根据你的版本选择性运行上面的指令。如果指令运行成功,那么就代表着这个红石粉具有15级的红石信号,也就验证了我们上述的猜想。那么实际情况怎么样呢?

  指令确实运行成功了。

  这意味着什么呢?这意味着,红石比较器不会导致红石信号的衰减。但随之而来就有另一个问题——红石比较器会像红石中继器一样增强信号吗?

  让我们再测试一下,将上面的结构改成下面这样:

  ┊——究竟是14级还是15级?

  ┏O┓

  B△C(插图:91-5)

  ┗A┛

  ┊——14级红石信号

  ┊——15级红石信号

  ▦

  图例

  ┊······红石线

  ▦······红石块

  然后还是老样子,对O侧的红石线进行方块状态测试,只需要把『15』改成『14』就行。那么结果如何呢?

  指令也是成功运行!

  如果你不放心,你还可以重新测试一下『15』的值,然后你就会发现指令执行失败。

  所以说,总结下来,红石比较器并不会导致红石信号衰减,也不会增强红石信号。借此原理,红石比较器的第一个重要用途就出来了:

  保持信号强度(插图:91-6)

  我们上面的讨论都仅仅基于A后侧输入口和O输出口,但红石比较器还有两个输入口:B左侧输入口和C右侧输入口。这两个输入口有什么用呢?

  说到这两个输入口,就不得不提——红石比较器的模式。

  红石比较器具有两种模式,可以通过观察靠近O输出口的那个红石火把的开关状态来判断此时比较器处于哪种模式:

  比较模式——O输出口的红石火把关闭

  作差模式——O输出口的红石火把开启

  先来讲讲比较模式。当红石比较器处于比较模式时,B或C输入口输入的红石信号强度会和A输入口的红石信号强度作比较,如果B或C>A则O不输出,B或C≤A则O输出,也就是像下面这样子:

  ┊——0级

  ┏O┓(插图:91-7)

  B△C▦

  ┗A┛

  ┊——14级

  ┊——15级

  ▦

  ∵C=15,A=14

  ∴C>A

  ∴O=0(不输出)

  ——————————

  ┊——14级

  ┏O┓(插图:91-8)

  B△C┈┈┈▦(这里有3格的红石线)

  ┗A┛

  ┊——14级

  ┊——15级

  ▦

  ∵C=13,A=14

  ∴C<A

  ∴O=14(输出)

  懂了吧?需要注意的是,如果B和C都有输入,那么游戏会先比较B和C,拿强度最大的和A比较:

  空空┊——15级

  空空┏O┓(插图:91-9)

  ▦┈┈B△C┈┈┈▦

  空空┗A┛

  空空┊——15级

  空空▦

  ∵B=14,C=13

  ∴B>C

  ∵A=15

  ∴B<A

  ∴O=15(输出)

  红石比较器的这个比较模式就是这样,同时这可以引出比较器第二个重要用途:

  比较信号强度

  当红石比较器靠近O输出口的红石火把开启时,红石比较器就进入了『作差模式』。作差模式的红石比较器会将A输入口的红石信号强度和B或C的红石信号强度相减,并将相减后的红石信号强度从O侧输出:

  空空┊——1级

  空空┏O┓(插图:91-10)

  ▦┈┈B△C┈┈┈▦

  空空┗A┛

  空空┊——15级

  空空▦

  ∵B=14,C=13

  ∴B>C

  ∵A=15

  ∴O=A-B=15-14=1(输出)

  不难发现,不管是在哪个模式,红石比较器都会先比较B和C输入口的信号强度,将最大的信号强度抽出来之后再操作A输入口的信号强度。

  这个『作差模式』也就是这样,同时这也引出比较器第三个重要用途:

  信号强度作差

  那么比较器就这么讲完了吗?

  No,因为红石比较器还有第四个重要用途:

  检测方块状态、方块实体和物品展示框

  我们知道,红石比较器可以检测命令方块上一次的执行成功次数,然后将次数转化为红石信号强度进行输出。还可以检测许多容器,以及各种东西,然后输出特定的红石信号。对于隔壁红石来说,红石比较器常常用来检测容器内物品数量,甚至是通过不可堆叠和可堆叠的物品不断在漏斗内运动,然后使用红石比较器检测,来达到『随机数运算』的目的。只不过我们这边不需要用到这么复杂的东西(其实那也没多复杂),我们只需要能够用红石比较器检测命令方块的成功次数就行了:

  ┊——13级

  ┏O┓(插图:91-11)

  B△C

  ┗A┛

  ▤

  图例

  ▤······命令方块,上次成功运行次数为13次

  上面是一个简易的例子——一个上次运行指令成功次数为13次的命令方块,通过比较器成功将成功次数转化为信号强度。

  所以这就是本章的全部内容了。

  附录:红石比较器历史

  Java

  1.5——加入了红石比较器

  1.6——能检测末地传送门框架和炼药锅了

  1.8——能检测物品展示框和蛋糕了

  1.9——比较器现在能够输入红石块的红石信号

  1.14——能检测讲台和堆肥桶

  1.15——能检测蜂巢和蜂箱

  1.16——能检测重生锚

  1.17——能检测幽匿感测体

  携带/基岩版

  Albr /ha0.14.0——加入了红石比较器

  1.0.0——可检测末地传送门框架

  1.0.5——可检测命令方块

  1.1.0——可检测潜影贝

  1.2.0——可检测唱片机

  1.11.0——可检测烟熏炉、高炉、讲台和堆肥桶

  ......

  ......

  ......

  ......

  我们知道,红石信号等级上限为15,所以当命令方块的执行成功次数等于甚至大于15时,红石比较器就没作用了。

  真的吗?

  让我们来看一个例子:

  ┊——6级

  ┏O┓(插图:91-12)

  B△C▦

  ┗A┛

  ▤

  图例

  ▤······命令方块,上次执行成功次数为21次

  ▦······红石块

  这是一个处于『作差模式』的红石比较器,不难发现它的O=6,C=15。所以它的A为多少呢?

  A=O+C=21,也就是命令方块执行成功的次数

  等等,不是说好红石信号等级上限为15的吗?怎么跑21去了?

  严格来说,并不是说红石信号等级上限为15,而是『红石线的承载能力最大为15级』。所以如果我们不使用红石线,也就不会把命令方块的输出压到15级。

  但是不使用红石线我们该怎样传导大于15级的红石信号呢?

  用红石比较器。

  由于篇幅限制,我们这边就不详细展开,接下来就请你自行研究去吧!

目录
设置
手机
书架
书页
评论