第六十二章 命令方塊礦車
Minecraft中的礦車有許許多多的種類。截至目前的1.18.2版本,Minecraft一共有如下幾種礦車:
TNT礦車——會爆炸
動力礦車——像火車一樣可以消耗燃料前進
普通礦車——可以運輸生物和船(?)
運輸?shù)V車——放東西
漏斗礦車——傳輸物品
刷怪籠礦車——生成生物
命令方塊礦車——執(zhí)行指令
每種礦車都有自己的特點以及獨特的用法。比如你可以通過在一個狹窄的空間內(nèi)堆疊超級多的TNT礦車來制作一個可以秒殺幾乎任何生物的爆炸裝置。
那么對于命令方塊礦車來說,有什么奇妙的用法呢?
觀前提示:在了解命令方塊礦車之前,請先把礦車的英文和我的世界的英文區(qū)分開,因為:
礦車————Minecart
我的世界——Minecraft
記住,千萬不要把礦車和我的世界混在一起了,礦車的英文比我的世界少了一個字母“F”?。ɑ鶐r版舊版本的翻譯就犯了這個錯誤,用機翻然后把命令方塊礦車翻譯成“帶有命令塊的《我的世界》”)
首先,讓我們來了解一下命令方塊礦車的基本數(shù)據(jù)。
命令方塊礦車(Minecart with Command Block)的實體和物品ID均為command_block_minecart。它和普通的礦車一樣,也是一個實體,唯一的區(qū)別就在于命令方塊礦車在普通礦車的基礎上多了一個迷你的命令方塊。
如果命令方塊礦車被處于生存模式下的玩家打掉,將會僅僅掉落礦車(不然還會掉落命令方塊???)。
?。ㄗⅲ涸贘ava1.11版本之前,命令方塊礦車的ID是MinecartCommandBlock)
看起來命令方塊礦車的本質(zhì)就是一個會移動的命令方塊。但實際上,兩者在很多方面都有較大的差異。
第一個差異:種類
和普通的命令方塊不一樣的是,命令方塊礦車的種類是固定死的。在Java版中,命令方塊礦車的種類被固定成了脈沖型,在基巖版則是循環(huán)型。至于為什么要這么搞,待會你就知道了。
(這里其實有個BUG,編號MCPE-42990,就是在基巖版中物品形態(tài)的命令方塊礦車竟然是脈沖型的,放出來就變循環(huán)型了。真離譜。)
第二個差異:激活方式和執(zhí)行頻率
普通的命令方塊可以通過紅石信號激活,但命令方塊礦車作為一個實體該如何感受到紅石信號呢?想想TNT礦車是怎么被激活的你就知道了。
命令方塊礦車和TNT礦車一樣,當它處于激活鐵軌上時,就會被激活并執(zhí)行指令。
你看到這估計沒有任何疑問。但別忘了,命令方塊礦車雖然不能選擇種類,但本質(zhì)上也是有種類的是不是。既然命令方塊在Java版是脈沖型,在基巖版是循環(huán)型,那么兩者是不是不一樣呢?
我們現(xiàn)在不打開Minecraft,就憑腦子猜一猜,然后你大概率會得出如下結論:
在Java版中,命令方塊礦車由于是脈沖型,所以當它處于被紅石信號激活的激活鐵軌上時,只會執(zhí)行一次。如果需要再次執(zhí)行,需要先停止激活激活鐵軌,然后再次激活激活鐵軌才行。
而在基巖版,命令方塊礦車是循環(huán)型,所以當它處于被紅石信號激活的激活鐵軌上時,它會一直執(zhí)行直到?jīng)]有紅石信號。
好,看來你之前學的東西都沒有白費,所以讓我們打開Minecraft驗證一下吧!
我們先打開Minecraft Java(只要有命令方塊礦車的版本均可),然后放置一個激活鐵軌并在旁邊放上拉桿,隨后將一個命令方塊礦車置于鐵軌之上。
為了方便觀察,我們這邊還需要創(chuàng)建一個計分項,如:
/scoreboard objectives add test dummy
然后在命令方塊礦車中輸入:
/scoreboard players add test test 1
最后激活鐵軌,令人大跌眼鏡的一幕發(fā)生了,聊天框中開始出現(xiàn)如下的執(zhí)行信息:
[@:將玩家test的test分數(shù)設置為1]
[@:將玩家test的test分數(shù)設置為2]
[@:將玩家test的test分數(shù)設置為3]
[@:將玩家test的test分數(shù)設置為4]
.......
你這不是脈沖型嗎,怎么一直在重復執(zhí)行?
然后我們可以再打開Minecraft基巖版,也按照上面的實驗流程進行,你也會發(fā)現(xiàn)現(xiàn)象是一致的。
這究竟是怎么一回事?其實命令方塊礦車是個很神奇的東西,不管它的外觀是脈沖型還是循環(huán)型,它在兩個Minecraft版本中的特性都是一致的:
當其位于被激活的激活鐵軌上方時,命令方塊礦車會以4游戲刻為周期循環(huán)執(zhí)行指令,即正常情況下每秒會執(zhí)行5次。
也就是說,命令方塊礦車本質(zhì)上是循環(huán)型,只不過是頻率比較慢的循環(huán)型而已。
?。ㄋ訫ojang,你在Java版搞這個外觀是干啥呢?誤導人是吧。)
這就是命令方塊礦車與普通命令方塊的第二個差異。
第三個差異:紅石比較器
和命令方塊一樣,命令方塊礦車也可以通過紅石比較器檢測命令的運行情況。但畢竟礦車是個實體,這導致如果要檢測命令方塊礦車的話,就得用紅石比較器檢測處于命令方塊礦車下面的鐵軌才能檢測到命令方塊礦車。
需要注意,這里的鐵軌不是普通的鐵軌,也不是激活鐵軌,而是探測鐵軌,就是中心有一個正方形的那個!
上面這三個差異就是命令方塊礦車和命令方塊最主要的差異了。那么命令方塊礦車有什么用呢?
命令方塊礦車和普通的命令方塊相比,最重要的一個特點就是可以移動,特別是可以按照預定的線路移動,所以命令方塊礦車很適合運用在空間需要不斷變化的場景內(nèi),比如:
我們需要自動鋪路、挖掘機,并對美觀沒有太大要求,直直的即可
這種情況下命令方塊礦車就很有用了。但實際上,命令方塊礦車最常見的用處并不是在這里,而是在OOC(Only One Command),即“僅有一條指令”。
啥意思呢?
?。紤]到這東西會涉及到下落的方塊的使用、實體的騎乘屬性還有NBT,所以這里我們就先簡單介紹一下,不過多深入。)
想一想,在Minecraft中,你是不是可以騎在馬上?
你應該知道在Minecraft中,每個實體都有一個NBT,那么當你騎在馬上的時候,你和馬是兩個獨立的個體還是被看作是一個個體呢?
從外觀上來看,是兩個個體。但如果你此時查看一下馬的NBT,你就會發(fā)現(xiàn)在NBT層面,你們倆合二為一了!
沒錯,在NBT層面,你的實體NBT被嵌套進了馬的NBT里面!
好,那么我們現(xiàn)在想一想,從理論上來說,你可以騎在羊上嗎?或者說甚至是一些其他的實體,如你可以騎在玩家上嗎?
我們先不要過早下結論,讓我們來看看2022年4月1日Mojang發(fā)布了個什么驚人更新:
One Block at a Time Update(一次只拿一塊更新)
在這次更新中,你可以和其他玩家疊高高,也就是騎在玩家身上,而且最高還可以疊5層!
這說明了什么?這就說明了,玩家也是可以騎在玩家身上的。
但為什么玩家在這次更新就可以被騎了呢?是不是Mojang為了實現(xiàn)這個功能把馬的騎乘模塊移到了玩家身上?
答案并不是這樣的,而是玩家本身就有騎乘模塊,或者說Minecraft中的所有實體都有騎乘模塊,只不過Mojang僅僅讓少數(shù)實體可以應用這些模塊而已。
所以從理論上來說,你是可以騎在羊身上的,甚至你可以說,你可以騎在任何實體身上!
那么這跟指令以及命令方塊礦車有什么關系呢?
現(xiàn)在讓我們再來看看另一個東西:下落的方塊。
下落的方塊,名字聽起來是個方塊,但實際上它是個實體。
你可能認為你從來沒有見到過下落的方塊,但實際上,你很容易就可以遇見它。
在Minecraft中,如果一個受到重力影響的方塊(如沙子)要落下,那么游戲就會將其轉(zhuǎn)換為“下落的方塊”這個實體,并將方塊的相關數(shù)據(jù)存儲于實體NBT中,等到實體落到地面之后游戲再將其轉(zhuǎn)換回去。
既然下落的方塊是個實體,那么我們就可以通過summon指令將其生成。并且,由于方塊的相關數(shù)據(jù)都存儲于實體NBT中,所以我們可以通過指令來召喚特定的“下落的方塊”。比如,你可以召喚出一個“下落的鉆石塊”,這個實體版的鉆石塊照樣會在落到地面時變回方塊版的鉆石塊。
好,你現(xiàn)在聽懂了吧,但這又跟命令方塊礦車有什么關系呢?
想一想,如果我們使用summon命令,召喚一個“下落的紅石塊”,這個“下落的紅石塊”上面騎著“下落的激活鐵軌”,而這個“下落的激活鐵軌”上面又騎著一個命令方塊礦車,最后,這個命令方塊礦車里寫了一串指令:say hello Minecraft。
聽著有點暈是吧?正常。簡單點說,就是你召喚了一個疊高高,這個疊高高一共有三層,最上面一層是寫有“say hello Minecraft”指令的命令方塊礦車,中間一層是正處于下落狀態(tài)的“激活鐵軌”,最下面一層是正處于下落狀態(tài)的“下落的紅石塊”
能夠明白了吧?想一想,當這個“疊高高”到達地面時,會發(fā)生什么事情?
紅石塊會先落到地面并回到方塊形態(tài),然后激活鐵軌就會因為紅石塊變回方塊而也變回方塊形態(tài),隨后被紅石塊激活。命令方塊礦車接著會落到激活鐵軌上面,并開始重復執(zhí)行指令。最終你的聊天欄就會不斷出現(xiàn)“hello Minecraft”的消息。
是不是很神奇?僅用一條指令,就執(zhí)行了........say hello Minecraft?這本來就可以一條指令做到啊,搞這么復雜有毛病???!
沒有毛病。別忘了,既然命令方塊礦車可以騎在下落的方塊上,那不也能騎在命令方塊礦車上嗎?而且由于鐵軌方塊的特性,同一個鐵軌上可以有許多個礦車卡在一起。所以從理論上,你可以通過“疊高高”的形式召喚一大堆的命令方塊礦車,這些命令方塊礦車可以分別執(zhí)行不同的指令,但你召喚它們僅需要一條十分十分十分長的指令即可。
這就是OOC(Only One Command),即“僅有一條指令”在游戲中真正的表現(xiàn)形式。
?。ㄆ鋵嵾€有一種表現(xiàn)形式,就是召喚疊高高的“下落的命令方塊”,照樣也可以實現(xiàn)類似的功能,就是比較占地)
現(xiàn)在你知道命令方塊礦車有何作用了吧?
?。阒绬幔诨鶐r版1.17尚未更新時,命令方塊礦車有一個惡性BUG,編號MCPE-93666。
這個BUG的內(nèi)容很簡單:游戲規(guī)則commandblocksenabled用于控制命令方塊是否啟動,但這個規(guī)則管不到命令方塊礦車,這就導致就算關閉了commandblocksenabled這個規(guī)則,命令方塊礦車也可以運行命令。
在當時,許多基巖版的服務器就因為這個BUG遭到了破壞,Mojang也是很快地在有人反饋后就在1.17更新中修復了這個bug。現(xiàn)在已經(jīng)沒有這個bug了。)