第九十一章 紅石比較器
?。ù苏鹿?jié)原為『循環(huán)裝置-牛頓的棺材板快要按不住了?。。?!』,于2022年7月26日改為『紅石比較器』)
?。ù苏鹿?jié)有用到本章說(shuō)來(lái)插入圖片,因此最好在起點(diǎn)中文網(wǎng)上閱讀本章)
現(xiàn)在我們已經(jīng)了解了很多指令,但是僅僅知道各種指令如何使用,最多也就稱得上是一個(gè)『會(huì)用指令的玩家』而已。那該怎么辦呢?我們現(xiàn)在要做的是,將各個(gè)指令和游戲特性互相聯(lián)系起來(lái),這也就是這一卷的主要內(nèi)容。
紅石比較器(Redstone Comparator),你應(yīng)該知道這是個(gè)什么東西吧?作為紅石電路的重要組成部分之一,它有許許多多的的用途。
作者的紅石并不怎么好,所以這邊并不會(huì)講什么特別高深的紅石相關(guān)內(nèi)容(我也不會(huì)講)。但基礎(chǔ)的一些特性我們還是要了解了解。
讓我們拿出一個(gè)紅石比較器,放在地上,你應(yīng)該注意到了這東西上面插著三個(gè)看起來(lái)像是紅石火把的東西(其實(shí)就是紅石火把),并組成了一個(gè)三角形(△)。這個(gè)三角形的一邊平行于紅石比較器的一側(cè),另一頭指向另一側(cè)(見(jiàn)插圖91-1)。
這個(gè)三角形意味著什么呢?讓我們換一個(gè)方式來(lái)看待紅石比較器:
┏━┓北
┃△┃↑(插圖:91-2)
┗━┛
(長(zhǎng)方形的紅石比較器?)
?。~,就這樣子將就看吧,能夠看配圖的話那更好)
這是一個(gè)朝向正北(Z-)的紅石比較器,這個(gè)紅石比較器有三個(gè)輸入口和一個(gè)輸出口:
┏O┓
B△C(插圖:91-3)
┗A┛
A······后側(cè)輸入口
B······左側(cè)輸入口
C······右側(cè)輸入口
O······輸出口
其中,A后側(cè)輸入口是很重要的一個(gè)輸入口,你可以向這個(gè)輸入口輸入紅石信號(hào)。當(dāng)然,單純的輸入紅石信號(hào)并不會(huì)發(fā)生什么事情,因?yàn)槲覀儧](méi)有在O輸出口放置一些能夠接收紅石信號(hào)的東西。讓我們?cè)贏側(cè)放置一個(gè)紅石塊,O側(cè)放置一個(gè)紅石粉看看:
亮起來(lái)的紅石粉
┏O┓
B△C(插圖:91-4)
┗A┛
紅石塊
你會(huì)發(fā)現(xiàn)O側(cè)的紅石粉亮起來(lái)了。這是為什么?
因?yàn)榧t石比較器在A側(cè)收到了紅石塊產(chǎn)生的紅石信號(hào),于是就從O側(cè)輸出來(lái)了。那么問(wèn)題來(lái)了:我們都知道紅石信號(hào)有強(qiáng)度等級(jí)之分,在普通的紅石線中傳遞的紅石信號(hào)每過(guò)一格就會(huì)衰減一級(jí),直到完全沒(méi)有信號(hào)。那么紅石信號(hào)在穿過(guò)紅石比較器的過(guò)程中會(huì)發(fā)生衰減嗎?
由于紅石塊能夠產(chǎn)生出15級(jí)的紅石信號(hào),因此我們只需要測(cè)試O側(cè)輸出的紅石信號(hào)是否為15級(jí)即可。我們當(dāng)然可以通過(guò)延長(zhǎng)O側(cè)的紅石線路,觀察紅石信號(hào)是否傳遞了15格。但別忘了本書(shū)是一個(gè)指令教程,因此我們干脆直接用指令對(duì)O側(cè)的紅石粉進(jìn)行方塊狀態(tài)測(cè)試:
/execute if block ~~~ minecraft:redstone_wire[power=15]——Java1.13及之后版本
/testforblock ~~~ minecraft:redstone_wire [power=15]——Java1.12.2-1.11
/testforblock ~~~ minecraft:redstone_wire [“redstone_signal“:15]——基巖版
雖然方塊狀態(tài)我們并沒(méi)有了解過(guò),但也快了,這邊先預(yù)習(xí)一下也無(wú)妨。上面的指令的作用是:探測(cè)指令執(zhí)行地點(diǎn)(也就是你的位置)的方塊是否是紅石線,且power(redstone_signal)方塊狀態(tài)的值為15。其中,power(redstone_signal)方塊狀態(tài)的作用就是儲(chǔ)存該紅石粉的紅石信號(hào)強(qiáng)度等級(jí)。
站在O側(cè)的紅石粉上,根據(jù)你的版本選擇性運(yùn)行上面的指令。如果指令運(yùn)行成功,那么就代表著這個(gè)紅石粉具有15級(jí)的紅石信號(hào),也就驗(yàn)證了我們上述的猜想。那么實(shí)際情況怎么樣呢?
指令確實(shí)運(yùn)行成功了。
這意味著什么呢?這意味著,紅石比較器不會(huì)導(dǎo)致紅石信號(hào)的衰減。但隨之而來(lái)就有另一個(gè)問(wèn)題——紅石比較器會(huì)像紅石中繼器一樣增強(qiáng)信號(hào)嗎?
讓我們?cè)贉y(cè)試一下,將上面的結(jié)構(gòu)改成下面這樣:
┊——究竟是14級(jí)還是15級(jí)?
┏O┓
B△C(插圖:91-5)
┗A┛
┊——14級(jí)紅石信號(hào)
┊——15級(jí)紅石信號(hào)
?
圖例
┊······紅石線
?······紅石塊
然后還是老樣子,對(duì)O側(cè)的紅石線進(jìn)行方塊狀態(tài)測(cè)試,只需要把『15』改成『14』就行。那么結(jié)果如何呢?
指令也是成功運(yùn)行!
如果你不放心,你還可以重新測(cè)試一下『15』的值,然后你就會(huì)發(fā)現(xiàn)指令執(zhí)行失敗。
所以說(shuō),總結(jié)下來(lái),紅石比較器并不會(huì)導(dǎo)致紅石信號(hào)衰減,也不會(huì)增強(qiáng)紅石信號(hào)。借此原理,紅石比較器的第一個(gè)重要用途就出來(lái)了:
保持信號(hào)強(qiáng)度(插圖:91-6)
我們上面的討論都僅僅基于A后側(cè)輸入口和O輸出口,但紅石比較器還有兩個(gè)輸入口:B左側(cè)輸入口和C右側(cè)輸入口。這兩個(gè)輸入口有什么用呢?
說(shuō)到這兩個(gè)輸入口,就不得不提——紅石比較器的模式。
紅石比較器具有兩種模式,可以通過(guò)觀察靠近O輸出口的那個(gè)紅石火把的開(kāi)關(guān)狀態(tài)來(lái)判斷此時(shí)比較器處于哪種模式:
比較模式——O輸出口的紅石火把關(guān)閉
作差模式——O輸出口的紅石火把開(kāi)啟
先來(lái)講講比較模式。當(dāng)紅石比較器處于比較模式時(shí),B或C輸入口輸入的紅石信號(hào)強(qiáng)度會(huì)和A輸入口的紅石信號(hào)強(qiáng)度作比較,如果B或C>A則O不輸出,B或C≤A則O輸出,也就是像下面這樣子:
┊——0級(jí)
┏O┓(插圖:91-7)
B△C?
┗A┛
┊——14級(jí)
┊——15級(jí)
?
∵C=15,A=14
∴C>A
∴O=0(不輸出)
——————————
┊——14級(jí)
┏O┓(插圖:91-8)
B△C┈┈┈?(這里有3格的紅石線)
┗A┛
┊——14級(jí)
┊——15級(jí)
?
∵C=13,A=14
∴C<A
∴O=14(輸出)
懂了吧?需要注意的是,如果B和C都有輸入,那么游戲會(huì)先比較B和C,拿強(qiáng)度最大的和A比較:
空空┊——15級(jí)
空空┏O┓(插圖:91-9)
?┈┈B△C┈┈┈?
空空┗A┛
空空┊——15級(jí)
空空?
∵B=14,C=13
∴B>C
∵A=15
∴B<A
∴O=15(輸出)
紅石比較器的這個(gè)比較模式就是這樣,同時(shí)這可以引出比較器第二個(gè)重要用途:
比較信號(hào)強(qiáng)度
當(dāng)紅石比較器靠近O輸出口的紅石火把開(kāi)啟時(shí),紅石比較器就進(jìn)入了『作差模式』。作差模式的紅石比較器會(huì)將A輸入口的紅石信號(hào)強(qiáng)度和B或C的紅石信號(hào)強(qiáng)度相減,并將相減后的紅石信號(hào)強(qiáng)度從O側(cè)輸出:
空空┊——1級(jí)
空空┏O┓(插圖:91-10)
?┈┈B△C┈┈┈?
空空┗A┛
空空┊——15級(jí)
空空?
∵B=14,C=13
∴B>C
∵A=15
∴O=A-B=15-14=1(輸出)
不難發(fā)現(xiàn),不管是在哪個(gè)模式,紅石比較器都會(huì)先比較B和C輸入口的信號(hào)強(qiáng)度,將最大的信號(hào)強(qiáng)度抽出來(lái)之后再操作A輸入口的信號(hào)強(qiáng)度。
這個(gè)『作差模式』也就是這樣,同時(shí)這也引出比較器第三個(gè)重要用途:
信號(hào)強(qiáng)度作差
那么比較器就這么講完了嗎?
No,因?yàn)榧t石比較器還有第四個(gè)重要用途:
檢測(cè)方塊狀態(tài)、方塊實(shí)體和物品展示框
我們知道,紅石比較器可以檢測(cè)命令方塊上一次的執(zhí)行成功次數(shù),然后將次數(shù)轉(zhuǎn)化為紅石信號(hào)強(qiáng)度進(jìn)行輸出。還可以檢測(cè)許多容器,以及各種東西,然后輸出特定的紅石信號(hào)。對(duì)于隔壁紅石來(lái)說(shuō),紅石比較器常常用來(lái)檢測(cè)容器內(nèi)物品數(shù)量,甚至是通過(guò)不可堆疊和可堆疊的物品不斷在漏斗內(nèi)運(yùn)動(dòng),然后使用紅石比較器檢測(cè),來(lái)達(dá)到『隨機(jī)數(shù)運(yùn)算』的目的。只不過(guò)我們這邊不需要用到這么復(fù)雜的東西(其實(shí)那也沒(méi)多復(fù)雜),我們只需要能夠用紅石比較器檢測(cè)命令方塊的成功次數(shù)就行了:
┊——13級(jí)
┏O┓(插圖:91-11)
B△C
┗A┛
?
圖例
?······命令方塊,上次成功運(yùn)行次數(shù)為13次
上面是一個(gè)簡(jiǎn)易的例子——一個(gè)上次運(yùn)行指令成功次數(shù)為13次的命令方塊,通過(guò)比較器成功將成功次數(shù)轉(zhuǎn)化為信號(hào)強(qiáng)度。
所以這就是本章的全部?jī)?nèi)容了。
附錄:紅石比較器歷史
Java
1.5——加入了紅石比較器
1.6——能檢測(cè)末地傳送門(mén)框架和煉藥鍋了
1.8——能檢測(cè)物品展示框和蛋糕了
1.9——比較器現(xiàn)在能夠輸入紅石塊的紅石信號(hào)
1.14——能檢測(cè)講臺(tái)和堆肥桶
1.15——能檢測(cè)蜂巢和蜂箱
1.16——能檢測(cè)重生錨
1.17——能檢測(cè)幽匿感測(cè)體
攜帶/基巖版
Alpha0.14.0——加入了紅石比較器
1.0.0——可檢測(cè)末地傳送門(mén)框架
1.0.5——可檢測(cè)命令方塊
1.1.0——可檢測(cè)潛影貝
1.2.0——可檢測(cè)唱片機(jī)
1.11.0——可檢測(cè)煙熏爐、高爐、講臺(tái)和堆肥桶
......
......
......
......
我們知道,紅石信號(hào)等級(jí)上限為15,所以當(dāng)命令方塊的執(zhí)行成功次數(shù)等于甚至大于15時(shí),紅石比較器就沒(méi)作用了。
真的嗎?
讓我們來(lái)看一個(gè)例子:
┊——6級(jí)
┏O┓(插圖:91-12)
B△C?
┗A┛
?
圖例
?······命令方塊,上次執(zhí)行成功次數(shù)為21次
?······紅石塊
這是一個(gè)處于『作差模式』的紅石比較器,不難發(fā)現(xiàn)它的O=6,C=15。所以它的A為多少呢?
A=O+C=21,也就是命令方塊執(zhí)行成功的次數(shù)
等等,不是說(shuō)好紅石信號(hào)等級(jí)上限為15的嗎?怎么跑21去了?
嚴(yán)格來(lái)說(shuō),并不是說(shuō)紅石信號(hào)等級(jí)上限為15,而是『紅石線的承載能力最大為15級(jí)』。所以如果我們不使用紅石線,也就不會(huì)把命令方塊的輸出壓到15級(jí)。
但是不使用紅石線我們?cè)撛鯓觽鲗?dǎo)大于15級(jí)的紅石信號(hào)呢?
用紅石比較器。
由于篇幅限制,我們這邊就不詳細(xì)展開(kāi),接下來(lái)就請(qǐng)你自行研究去吧!