<本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。>

指令方塊

出自Minecraft Wiki
前往: 導覽搜尋
指令方塊
Impulse Command Block.gifChain Command Block.gifRepeating Command Block.gif
Conditional Impulse Command Block.gifConditional Chain Command Block.gifConditional Repeating Command Block.gif
指令方塊連鎖式指令方塊重複型指令方塊
稀有度

史詩

透明

亮度

0

爆炸抗性

3,600,000

開採工具

可再生

可堆疊

是(64)

可燃盡

可被熔岩點燃

數據值

數據值

命名空間ID

數據值

Jeb twitter.jpg

那麼這些方塊將可以通過紅石信號控制來執行指令。只要使用恰當的指令,很多東西都能被編程。

——Jeb關於指令方塊的宣告 [1]

指令方塊(Command Block)是一種用以執行指令方塊。因為生存模式中只能通過作弊獲得,它常用在多人伺服器與自訂地圖中。

獲取[編輯 | 編輯原始碼]

指令方塊可以通過選取方塊鍵或使用指令(如/give @s minecraft:command_block‌‌[僅Java版]/give @s command_block‌‌[僅基岩版])獲得。

就像其他的方塊實體一樣,指令方塊有對應的方塊實體,能夠存儲NBT數據,使用ctrl + 選取方塊會複製指令方塊內的指令和設定。這允許它被放置在別的地方時無須重新輸入裡面的數據。

指令方塊不在創造模式物品欄中,不能在生存模式中或以非管理員身份破壞,不能被點燃,有和基岩一樣的爆炸抗性。指令方塊不能被活塞推動。

用途[編輯 | 編輯原始碼]

參見:指令教學/指令方塊

指令方塊可以被紅石信號開啟。此項沒有權限限制,可以被一些通常情況不能使用指令的玩家執行一個特定的指令(比如,允許所有人通過/give獲得一件特定的物品,而不是讓他們用/give獲得任何他們想要的東西)。

指令方塊會擁有朝向(facing),決定哪個連鎖式指令方塊會受到感應,「條件制約」模式的指令方塊會受哪個指令方塊控制。

要執行指令,在Java版中,多人遊戲server.properties檔案中的enable-command-block必須設定為true(預設為false);在基岩版中,必須啟用選項中的「指令方塊已啟用」。

設定[編輯 | 編輯原始碼]

指令方塊GUI

要輸入或修改指令,對指令方塊點擊使用鍵以打開指令方塊GUI(圖形用戶介面)。GUI只會在玩家處於創造模式,擁有相關權限才會打開。在單人遊戲裡,作弊必須開啟才可以編輯指令方塊。在多人遊戲中,只能由創造模式中的管理員所編輯。為了使指令方塊能工作,以下在server.properties的配置必須設定為:

  • enable-command-block必須為true
  • op-permission-level必須為2及以上(預設為4)

Java版中,在單人遊戲中打開GUI會暫停遊戲。

控制台指令
指令可被輸入到第一個文本框。指令方塊的指令長度限定在32,500個字符以內,但這個文本框一次只能顯示其中的一小段。按Tab ↹可以補全指令且循環代入可選項。
指令方塊內的指令可以加斜槓前綴(/),就像在聊天框使用時的那樣,但這不是必需的。
在指令文本框下是一些如何使用目標選擇器的小提示。
上一個輸出
下方的文本框顯示上一個指令的輸出。這裡的文本無法編輯。
文本框右邊的按鈕設定上一個輸出是否儲存並顯示。它設定輸出將隱藏時為O(預設),將顯示時為X。當世界中有很多指令方塊,尤其是電路高速運轉時,不顯示輸出可以減少記憶體使用以處理很多請求。
脈衝/循環/連鎖
點擊「脈衝/連鎖/循環」按鈕可更改指令方塊類型。預設為「脈衝」,但非預設類型的指令方塊也能被放置。指令方塊改變類型時也會改變顏色:
  • 脈衝型指令方塊是橙色的。這種方塊是「標準」的指令方塊,啟動一次執行一次指令。
  • 連鎖式指令方塊是綠色的。這種方塊只在指向它的方塊執行指令時才會執行指令。這不同於條件制約模式,連鎖式指令方塊檢測的是指向著它的指令方塊,而不是在它後面。指向它的指令方塊不必是連鎖式指令方塊。
  • 重複型指令方塊是紫色的。這種方塊被啟動時每一遊戲刻都執行一次指令。
條件制約/不受制約
上方:「不受制約」模式的指令方塊 下方:「條件制約」模式的指令方塊
點擊「條件制約/不受制約」按鈕來改變指令方塊的條件制約行為:
  • 「條件制約」:只有當背後的指令方塊成功執行指令時才會執行指令(「背後」的意思是指令方塊的指向的反方向,無視連鎖方向)。
  • 「不受制約」(預設):指令方塊將忽略背後的方塊。
保持開啟/紅石控制
點擊「保持開啟/紅石控制」按鈕改變指令方塊的開啟需求條件:
  • 「紅石控制」(脈衝型指令方塊和重複型指令方塊的預設設定):指令方塊必須像紅石機械一樣啟動才能執行指令。
  • 「保持開啟」(連鎖式指令方塊的預設設定):指令方塊甚至在沒有紅石信號時也會保持為開啟狀態 (連鎖式指令方塊將在感應後執行指令, 重複型指令方塊將在每一遊戲刻執行一次指令(每秒20次),脈衝型指令方塊在設定完畢後將立即啟動,且此後將無法再次執行)。
執行第一個已選項‌‌[僅基岩版]
指定重複型指令方塊是否在啟動後立即執行其指令。如果已禁用,則從啟動時起延遲後第一次執行。
已選項中的延遲‌‌[僅基岩版]
對於脈衝型指令方塊和連鎖式指令方塊,指定在被啟動或觸發後,執行指令之前延遲的遊戲刻。對於重複型指令方塊,指定其重新執行指令所延遲的遊戲刻。注意:對於脈衝型指令方塊和重複型指令方塊,延遲設定為0和1的效果相同,遊戲將把0視為1。但是,對於連鎖式指令方塊,0和1是不同的。
懸浮文本‌‌[僅基岩版]
指定指令方塊的名稱,當你指向該方塊時可以看到它。它也用於消息指令。如果指令方塊有在鐵砧中命名,將採用此名稱。如果為空,則預設為!
完成
點擊「完成」按鈕或按↵ Enter以保存指令並退出指令方塊GUI。‌‌[僅Java版]
點擊「關閉」按鈕或按Esc以保存並退出指令方塊GUI。‌‌[僅基岩版]
取消
點擊「取消」按鈕或按Esc‌‌[僅Java版]在不保存任何修改的情況下退出指令方塊GUI。

啟動[編輯 | 編輯原始碼]

指令方塊屬於紅石機械且能由以下物件啟動:

指令方塊有1遊戲刻的延遲,當它受到紅石更新時將在1遊戲刻後做出反應(啟動或撤銷啟動)。

當被啟動時,指令方塊將嘗試執行它的指令。啟動後的動作將取決於指令方塊的類型:

  • 脈衝型指令方塊會在剛啟動時嘗試執行指令一次。
  • 連鎖式指令方塊將在指向它的指令方塊執行指令後才會執行指令。
  • 重複型指令方塊將會在每個遊戲刻都嘗試執行一次指令直到不再被啟動為止。

連鎖執行[編輯 | 編輯原始碼]

如果一個指向連鎖式指令方塊的指令方塊被啟動了,它將向該方塊發出準備執行指令的信號。連鎖式指令方塊只有在被啟動開啟時(在「條件制約」模式下還要在它所指向方向的反方向的指令方塊成功執行指令時)才會執行指令。不管這個連鎖式指令方塊方塊是否執行指令,只要指向另一個連鎖式指令方塊,它也同樣會發送出準備執行指令的信號。

連鎖中的方塊將在同一遊戲刻執行指令。連鎖執行的信號無法傳遞給一個已經在這個遊戲刻執行過指令的方塊。遊戲規則maxCommandChainLength決定了連鎖式指令方塊能連鎖執行的總數量,預設為65536。


輸出[編輯 | 編輯原始碼]

當啟動時,指令方塊可以有幾種不同類型的輸出:

紅石比較器
指令方塊可以向背對它的紅石比較器輸入一個信號,強度取決於上一個指令的執行情況的信號(例如,被指令所影響的玩家數)。
信號強度一直根據上一個指令的執行情況保持,即使是在指令方塊關閉之後。
消息
輸出消息描述執行指令的成功與否,會有幾種輸出位置:
上一個輸出:輸出消息都會寫入指令方塊GUI的「上一個輸出」文本框裡。
聊天框:輸出信息將在單人模式下或多人模式下對所有管理員寫入聊天框,除非已經用/gamerule commandBlockOutput false關閉。一些指令可能會在聊天框寫入其正常工作時的附帶文本,這不會被攔截。(比如,/say指令將在所有玩家的聊天框寫入消息)。帶有執行者的名字作為前綴的聊天信息(比如指令/me/say/tell)會使用@‌‌[僅Java版]/!‌‌[僅基岩版]作為執行者名字。如果指令方塊在放置前已經被命名過,那麼就使用這個名字。
日誌:輸出信息會寫入到多人遊戲伺服器日誌,除非使用/gamerule logAdminCommands false關閉。

備註[編輯 | 編輯原始碼]

以下指令不能在指令方塊中使用:/ban/banlist/ban-ip/debug/deop/kick‌‌[僅Java版]/op/pardon/pardon-ip/publish/reload/save-all/save-off/save-on/stop/whitelist(也就是/debug/publish和所有除了/list外的多人遊戲指令)。

以下指令可以使用但功能受限(它們的輸出只會在指令方塊的「上一個輸出」文本框顯示而不是聊天框):/help/seed/list/scoreboard objectives/scoreboard players/team list

以下指令會在輸出中用到指令方塊的名字(預設為@‌‌[僅Java版]!‌‌[僅基岩版]):/me/say/tell

彩蛋[編輯 | 編輯原始碼]

在指令方塊中不加「/」執行指令「Searge」會把上一個輸出設為「#itzlipofutzli」。另外,如果在指令方塊中執行/help,它會給出一些帶有「Searge says:(Searge說:) 」前綴的信息。

數據值[編輯 | 編輯原始碼]

指令方塊擁有ID名稱minecraft:command_block並在方塊數據方塊實體中有更深的定位。指令方塊也有 方塊狀態旨在未來的版本中取代方塊數據,

ID[編輯 | 編輯原始碼]

Java版

名稱命名空間ID本地化鍵名
指令方塊command_block block.minecraft.command_block
連鎖式指令方塊chain_command_block block.minecraft.chain_command_block
重複型指令方塊repeating_command_block block.minecraft.repeating_command_block
名稱命名空間ID
方塊實體command_block

基岩版

名稱命名空間ID數字ID 本地化鍵名
指令方塊command_block 137tile.command_block.name
連鎖式指令方塊chain_command_block 189tile.chain_command_block.name
重複型指令方塊repeating_command_block 188tile.repeating_command_block.name
名稱存檔ID
方塊實體command_block

方塊數據[編輯 | 編輯原始碼]

參見:數據值

指令方塊的方塊數據用於確定方塊是否處於開啟狀態:

位元 數值
0x1 在指令方塊已經在上一次啟動了當前指令時設定
0x2
0x4
0x8
(未使用)

在1.9:

位元 數值
0x1
0x2
0x4

3個位元的空間儲存了指令方塊的朝向

  • 0: 朝下
  • 1: 朝上
  • 2: 朝北
  • 3: 朝南
  • 4: 朝西
  • 5: 朝東

6 和 7 未被使用但會造成指令方塊分別朝下和朝上

0x8 未使用但設定後造成指令方塊的朝向相似於那些沒有設定位元的方塊。

方塊實體[編輯 | 編輯原始碼]

參見:區塊格式§方塊實體

指令方塊有包含方塊附加數據的方塊實體。方塊的方塊實體ID為command_block

  • 方塊實體數據
    • 方塊實體共通標籤 see Template:Nbt inherit/blockentity/template
    •  CustomName:非必項。當前指令方塊名稱的JSON文本組件,取代由指令方塊執行了/say/tell等指令後預設出現的「@」符號。
    •  Command:指令方塊中的指令。
    •  SuccessCount:表達用紅石比較器輸出的模擬信號強度。只在指令方塊用紅石信號啟動後更新。
    •  LastOutput:上一條指令方塊生成的輸出。遊戲規則commandBlockOutput為false時依舊會儲存。在右鍵打開指令方塊GUI時顯示,包含生成輸出的時間戳
    •  TrackOutput:1或0(true/false) - 決定LastOutput是否儲存。可以在GUI中點擊"上一個輸出"文本框旁的按鈕進行開關。按鈕上的標誌指示出目前的狀態:O為true,X為false。
    •  powered:1或0(是/否) - 決定指令方塊現在的狀態是否被紅石所啟動。
    •  auto:1或0(是/否) - 允許指令方塊在沒有紅石信號的情況下啟動指令。
    •  conditionMet:1或0(是/否)- 指示條件指令塊在上次啟動時是否滿足其條件。如果不是條件指令塊,則為1。
    •  UpdateLastExecution:1或0(是/否) - 預設為是。如果設為否,創建循環後同一個指令方塊可以在一刻內執行多次。
    •  LastExecution:儲存一個連鎖式指令方塊最後被執行的遊戲刻。


方塊狀態[編輯 | 編輯原始碼]

參見:方塊狀態
名稱 預設值 接受值 描述
conditionalfalsetrue
false
當指令方塊為條件制約模式為真
facingnorthnorth
south
east
west
up
down
指令方塊的指向

歷史[編輯 | 編輯原始碼]

參見:指令§歷史
Java版
2012年7月27日Jeb開始發一些關於擴展生存模式的新方塊的推文。他開始推送一些圖片,想法和方塊將來用法的線索。
2012年7月31日Notch在他的AMA中暗示這個方塊會在1.4中出現。
1.4.212w32aImpulse Command Block JE1.png 加入了指令方塊。
1.513w03a指令方塊的成功執行可用紅石比較器輸出信號。
13w04a鐵砧重命名的指令方塊在聊天框中會用其名字代替@
1.6.113w19a指令方塊在生存模式中不再可破壞,也不會在爆炸中破壞,但藍色的凋零怪之首除外。
1.7.213w37a加入了一個顯示上一個輸出的框。
增加遊戲內輸入指令的字符限制從256到16,369。使用第三方編輯器可以達到32767個字符。
1.814w07a發射器會放置指令方塊,而不是發射它。
14w20a移除了遊戲內16369的字符限制,允許達到最高的32767個字符。
14w27a加入了CommandStatsNBT標籤。
1.8.6發射器不再放置指令方塊。[2]
1.915w34aChain Command Block JE1.pngRepeating Command Block JE1.png 加入了連鎖式指令方塊和重複型指令方塊。
加入了方塊朝向。
Impulse Command Block JE2.png 更改了指令方塊材質。
15w34b加入了條件制約模式。
15w35aImpulse Command Block JE3 BE1.pngChain Command Block JE2 BE1.pngRepeating Command Block JE2 BE1.png 更改了所有指令方塊的材質。
加入了保持開啟和紅石控制選項。加入了autoNBT標籤負責控制此項。
設定為條件制約模式後,指令方塊箭頭尾部會彎曲。
15w36a不能使用像/give這類指令的玩家不再能放置指令方塊。
15w36d不同類型的指令方塊現在在地圖上將顯示不同的顏色。
16w02a現在在指令方塊中執行/help將隨機使用各種不同的幽默短語作為上一個輸出。
16w04a在指令方塊中不帶「/」將「Searge」作為指令執行,輸出會變成「#itzlipofutzli」。
1.1116w32a方塊實體ID由Control更改為command_block
1.1217w16a連鎖式指令方塊不再安排指令鏈中的指令在下一刻執行了,現在這些指令會在被讀取後的同一刻執行。這使之後放置的方塊可以經由之前放置的方塊被修改,由此可以在一個遊戲刻內實現分支、循環等手法。
加入了遊戲規則maxCommandChainLength以決定連鎖式指令方塊執行的限度。
17w17a加入了NBT標籤UpdateLastExecutionLastExecution,可以控制對存儲連鎖式指令方塊最後執行的那一刻的跟蹤。
pre6指令方塊中使用Tab鍵來自動補全的指令名稱不再添加/前綴。
1.1317w47a扁平化之前,指令方塊、循環型、連鎖式指令方塊的數字ID分別為137、210、211。
pre1玩家現在可以重新用tab鍵補全指令了。
1.1418w43aImpulse Command Block JE4.pngChain Command Block JE3 BE2.pngRepeating Command Block JE3.png 更改了所有指令方塊的材質。
18w47bImpulse Command Block JE5 BE2.pngRepeating Command Block JE4 BE2.png 更改了脈衝型和重複型指令方塊的材質。
攜帶版
1.0.5alpha 1.0.5.0Impulse Command Block JE3 BE1.pngChain Command Block JE2 BE1.pngRepeating Command Block JE2 BE1.png 加入了所有種類的指令方塊。
基岩版
1.8.0beta 1.8.0.8指令方塊現在的預設名稱為!而不是@
1.10.0beta 1.10.0.3Impulse Command Block JE5 BE2.pngChain Command Block JE3 BE2.pngRepeating Command Block JE4 BE2.png 更改了材質。
1.12.0beta 1.12.0.2加入了自動完成功能。
加入了延遲選項。
原主機版
TU19CU71.12Patch 1Impulse Command Block JE2.png 加入了指令方塊。
指令方塊沒有任何功能。

畫廊[編輯 | 編輯原始碼]

參考[編輯 | 編輯原始碼]