UU看書

第二章 命令方塊

天才一秒記住【UU看書】地址:www.uukanshu.co

(本章寫作時作者使用的是基岩版1170版本和Java1171版本)

(本章內容有可能有些難,推薦在遊玩Minecraft的情況下閱讀本章)

(本章於2022年7月10日進行大規模修改)

在你不知道指令的時候,你是否在玩地圖的時候看到過一個五彩斑斕的方塊?當你因好奇嘗試去擼它的時候,你卻發現:這根本擼不動!

沒錯,這就是我們的命令方塊,英文名CommandBlock,名稱空間ID為commandblock,在MC指令圈中常常被簡寫成CB。你可以透過give指令來獲得它,比如:

givescommandblock

目前你不需要去了解這個指令到底是啥,怎麼用,看下去就完事了。

如果你在輸入了以上指令以後都沒有獲得,那麼你最好去檢查一下你的Minecraft遊戲版本。你可以嘗試使用命令方塊的數字id:137。(give你的玩家名137)

如果還是不行,請你看一下你的Minecraft版本是否低於JAVA142或者是攜帶版105。低於這兩個版本的Minecraft是沒有命令方塊的。

命令方塊有三種顏色,六種方向,具體為:

顏色:橙得一批、青得一批、紫得一批

方向:東西南北上下

命令方塊的硬度和基岩是一樣的,都是1。

爆炸抗性也一模一樣,都是3600000。

命令方塊的三種顏色,各代表著3種不同的種類:

橙得一批的那個是脈衝,作用是你叫它動一下(接入紅石訊號),它就動一下(執行一次命令),並會向其指向的鏈命令方塊發出執行訊號。

紫得一批的那個是重複,作用是你叫它動一下(接入紅石訊號),它就沒完沒了地動(每一遊戲刻執行一次命令,一般1遊戲刻120秒),並且每動一下都會向其指向的鏈命令方塊發出執行訊號。

青得一批的那個是鏈(又叫做連鎖),作用是你叫它動一下(接入紅石訊號),它不會動。它只會在收到執行訊號時,將該執行訊號立馬傳遞給下一個它指向的鏈命令方塊,然後再根據當前條件判斷是否要執行。聽起來似乎有點複雜?舉個例子:

A→B→C→D→

其中,A是未被啟用的脈衝命令塊,BCD三個命令方塊都是已被啟用且無條件限制的鏈命令塊。當A啟用時,ABCD將會同時執行指令,因為A啟用時向B發出了執行訊號,B收到後也向C發出了訊號,C也向D發出了訊號,三個鏈命令方塊也都沒有條件限制。(關於無條件是個什麼東西,下面會講到)

關於鏈命令方塊還是比較複雜的,具體內容請到『第九十九章初識模組簡單的註冊登入系統下』瞭解。

而方向的話,有什麼用呢?

上面我們講連鎖命令方塊時已經遇到過一次了:當你將一個未被啟用的脈衝或迴圈命令方塊(A)指向另一個已被啟用的連鎖命令方塊(B),那麼當A被啟用時,就會向B發出執行訊號。(注意,B以及之後的CDE等一般都是連鎖,作為開頭的A一般是脈衝或迴圈命令方塊)

就像下面這樣(箭頭即該命令方塊的朝向,符號☼代表此命令方塊被啟用,符號✪代表此命令方塊收到執行訊號):

①A→B☼→

②A☼→B☼→

③A☼→B☼✪→

但B並不一定會執行,還得看這個B是有條件(條件制約)還是無條件(不受制約)的。

另外,只要這一串命令方塊一直延伸下去,且除了第一個之外後面全都是鏈命令方塊,那麼不管這些鏈命令方塊有沒有被啟用、是否會真的執行指令、指令有無錯誤,訊號仍然會一直傳遞下去,直到預設指定的最大值。

我們會在以後討論更加複雜的情況,也就是在第九十九章進行討論。在此之前,你可以自己做做實驗,猜猜規律。

需要注意,雖然通常情況下像這樣一個接著一個的命令方塊鏈是擺成一條直線的樣子,但你也可以像下面這樣擺成蛇形:

B←A

C→D→

這也是沒有問題的。

甚至你對著放,也是沒有問題的:

B→←A

總的來說,命令方塊的方向決定了執行訊號傳遞的方向。一串方向正確且能夠正常傳遞執行訊號的命令方塊,就是一個命令方塊鏈。命令方塊鏈是命令方塊知識點中最難的一部分,搞懂這個,你基本上也就入門了。還是那句話,我們會在第九十九章詳細討論這東西,也就是命令方塊鏈和連鎖型命令方塊。

現在我們來開啟命令方塊。

右鍵(鍵鼠模式)、按下RT(手柄模式)或點選(觸屏模式)命令方塊以開啟。開啟命令方塊要滿足一定條件,Java版的條件是:處於創造模式,並且玩家許可權等級至少為2(正常單人遊戲都能打得開);基岩版是需要操作員許可權(或者說玩家許可權等級至少為1)。如果條件不滿足,是無法開啟的。

至於玩家許可權是什麼東西。放心,我們會在第六章瞭解到玩家許可權的相關內容。

開啟命令方塊後,Java版的介面頂上是輸入框,框下面是一個“O”的按鈕,按了可以開啟一個框,並且按鈕變成了“X”,這個框用途就是“顯示上次執行、檢查指令的結果”。

為什麼還要多出一個檢查呢?檢查跟執行是不一樣的。當你修改完後退出介面,命令方塊會自己檢查一下,如果有錯會顯示一些資訊,如果都正確那就什麼也沒有發生。執行的話就不一樣了,執行就算正確也會顯示訊息。這個框在Java版預設不顯示,在基岩版預設顯示,據說關掉可以讓遊戲更流暢一點。

再下面是三個選項,分別顯示:

脈衝不受制約紅石控制

這三個選項具體的用途是:

第一個顯示脈衝的選項——選擇命令方塊種類,可以選擇『脈衝、連鎖和迴圈』,即上面介紹過的三種型別。

第二個顯示不受制約的選項——這可以選擇『不受制約』和『條件制約』(基岩版中是『無條件』和『有條件的』)。預設是選擇『不受制約』。下面我們會詳細瞭解這選項。

第三個顯示紅石控制的選項——這可以選擇『紅石控制』和『保持開啟』(基岩版中是『需要紅石』和『始終活動』)。預設是選擇『紅石控制』,即命令方塊必須要收到紅石訊號後才能被啟用。如果改成『保持開啟』,那麼命令方塊將會始終處於啟用狀態。

『不受制約』和『條件制約』分別有什麼作用呢?

我們知道,命令方塊可以執行指令,而執行指令無非就兩種結果:指令執行成功和失敗。

命令方塊其實會保留其最後一次執行指令的結果,這個保留下來的結果並不是只能被我們也就是玩家所看見,它還有三個作用:

①被其他指令探測,將結果資訊輸出到計分板中。

②被紅石比較器探測,將指令執行成功的次數轉化為紅石訊號強度等級。

③屁股對著這個命令方塊的其他命令方塊可以檢測該命令方塊的指令是否執行成功,並根據該條件判斷自身是否需要執行指令。

前兩個作用我們會在以後瞭解到具體用法,第三個作用其實就對應著上面的『不受制約』那個選項。

命令方塊在執行前,如果這個命令方塊是『條件制約』的,那麼它就會檢查一下它屁股對著的那個命令方塊最後一次執行指令是否執行成功,如果成功才會執行。比如下面的例子:

←B←A

A迴圈,不受制約,始終活動

B迴圈,條件制約,始終活動

A不管如何,除非遊戲停止執行,它都會一直執行指令,每秒最高可以執行20次。

B不管如何,也會一直嘗試執行指令。只不過由於它是『條件制約』的,所以它在嘗試執行指令之前,會先檢查一遍A命令方塊是否執行成功,如果成功才會執行指令。

那麼這有什麼用呢?

假設A裡面寫著一條指令,可以檢測半徑30m範圍內是否有怪物出現,而B裡面寫著一條能夠傳送警告訊息的指令。如果半徑30m內一直沒有怪物出現,那麼A的指令就會一直執行失敗,雖然B也在嘗試執行,但由於A一直失敗,B也就不會真正執行指令,也就是不會發出警報。但如果A突然執行成功了,也就是發現怪物,那麼B就會真正執行指令,發出警報。

當然,像這種由兩個迴圈型命令方塊構成的命令方塊鏈十分少見,因為如果把B換成連鎖型,也可以達成一樣的效果,還可以降低一點CPU消耗,豈不美哉?

總而言之,條件制約的命令方塊在執行前會檢測其屁股後面的命令方塊最後一次執行指令是否成功執行,如果那個命令方塊最後一次成功執行了指令,這個命令方塊也會執行,反之則不會執行。對於不受制約的命令方塊來說,則並不會進行上述檢查,而是直接執行指令。

懂了吧?如果不懂,多多實踐即可。

基岩版的命令方塊介面和Java版大不相同——其介面有兩列,左側主要是對命令方塊本身狀態的一個設定,右側主要是用於填寫命令。

右側不用多說,這裡需要講的是左側相比Java版多出來的內容。

左側最上面有一個“懸停說明”,舊版本是“懸浮文字”。這兒是修改命令方塊名字的地方,並且修改後的名字會直接作用在一些指令中,比如say。而且,正如其言,這個名字還會懸浮在命令方塊上面,只不過用這個是無法做出浮空字的,因為這個浮空字僅僅會在玩家指向該命令方塊時才會出現。你也可以使用鐵砧重新命名命令方塊,並且這個方法Java版同樣適用。

命令方塊的預設名字在基岩版180及之後的版本是“”,在Java版和基岩版180以下版本預設是“”。

在“需要紅石始終活動”選項的下面,還有一個“執行第一個已選項”的按鈕和一個“已選項中的延遲”框。這兩個東西的作用如下:

執行第一個已選項——命令方塊型別為迴圈時可用,預設開啟。開啟將會讓命令塊在啟用後立即執行指令,關閉則會先延遲“已選項中的延遲”設定的時間,再執行。即:

開啟——啟用命令方塊→執行→等待x遊戲刻→執行→等待x遊戲刻→執行

關閉——啟用命令方塊→等待x遊戲刻→執行→等待x遊戲刻→執行→等待x遊戲刻→執行

(x值為“已選項中的延遲”的值,1遊戲刻120秒)

已選項中的延遲——所有命令方塊型別均可用,預設為0,單位為遊戲刻。對於脈衝和鏈命令塊來說,就是指定啟用命令塊到執行指令的延遲。比如設定為5,那麼:

啟用→等待5遊戲刻→執行

對於迴圈的命令塊來說,就是設定每次執行指令執行的間隔時間。比如設定為6,且關閉執行第一個已選項,那麼:

啟用命令方塊→執行→等待6遊戲刻→執行→等待6遊戲刻→執行

迴圈型命令方塊不管延遲是0還是1,結果都是延遲1遊戲刻。而脈衝和鏈型命令方塊則不同,延遲是0即按下就立馬執行,1的話還是會延遲1遊戲刻。

現在,讓我們嘗試在輸入框中輸入點東西。注意,命令方塊中輸入指令,“”字首是可以省略的,因為不必和普通聊天訊息作區分。在Java版113及以上版本中,命令方塊中輸入指令也會有像聊天欄中輸入指令一樣的提示;113以下的版本雖然沒有提示,但也可以透過Tab鍵補全。

接下來你就自行研究吧,還是那句話,第九十九章我們會重新來研究命令方塊鏈。

要不然最後我們留點作業吧?

還是算了,畢竟現在你也不會寫些指令。

(一天,張三把一個命令方塊放到了一個礦車,然後)

附表:命令方塊歷史

Java

142——加入命令方塊

15——紅石比較器會輸出命令方塊成功執行的訊號,命令方塊可用鐵砧重新命名

161——命令方塊現在無法在生存模式中和爆炸中破壞

(冷知識,在Java舊版本,生存模式也可以開啟命令方塊,並且可以破壞)

172——加入了“顯示上一個輸出”框,並將命令方塊字元上限重256增加到了16369,用修改器最大可達32767

18——發射器會放置命令方塊,命令方塊內字元上限達到了32767

186——發射器不再放置命令方塊

19——加入了連鎖、迴圈型命令方塊和方塊朝向、條件制約模式、保持開啟和紅石控制模式。操作許可權等級小於2的玩家無法放置命令方塊

112——命令方塊鏈中的鏈命令方塊現在在同一遊戲刻中執行,並加入了maxCommandChainLength規則以規定命令塊鏈的最大長度

攜帶版基岩版

105——加入命令方塊

180——更改命令方塊預設名稱重到

1120——加入了已選項中的延遲和執行第一個已選項

如遇章節錯誤,請點選報錯(無需登陸)

新書推薦

海洋求生:最強升級進化 我有一個熱血傳奇世界 率土之水泊梁山 npc身份暴露後我成了玩家團寵 LOL:在LCK做中援太快樂了 全線戰爭 人生扮演遊戲