Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

Template:BlockTileEntity

Jeb twitter

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

——Jeb關於命令方塊的宣吿 [1]

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

取得

命令方塊可以透過選取方塊鍵或各種命令,比如/give @s minecraft:command_block(java 版)/give @s command_block(基岩版)獲得。

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

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

用途

為了避免囉嗦,以下段落可能對帶類型的命令方塊進行縮寫

例如,連環型命令方塊稱為連鎖方塊,等等

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

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

設定

Command Block GUI

命令方塊GUI

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

  • enable-command-block必須為true
  • op-permission-level必須為2及以上(預設為4)
控制台命令
命令可被輸入到第一個文字框。命令方塊的命令長度限定在32,500個字元以內,但這個文字框一次只能顯示其中的一小段。按Tab ↹可以補全命令且循環代入可選項。
命令方塊內的命令可以加斜槓前綴(/),就像在聊天框使用時的那樣,但這不是必需的。
在命令文字框下是一些如何使用目標選擇器的小提示。
上一個輸出
下方的文字框顯示上一個命令的輸出。這裏的文字無法編輯。
文字框右邊的按鈕設定上一個輸出是否儲存並顯示。它設定輸出將隱藏時為O(預設),將顯示時為X。當世界中有很多命令方塊,尤其是電路高速運轉時,不顯示輸出可以減少記憶體使用以處理很多請求。
脈衝/循環/連鎖
點擊「脈衝/連鎖/循環」按鈕可變更命令方塊類型。預設為「脈衝」,但非預設類型的命令方塊也能被放置。命令方塊改變類型時也會改變顏色:
  • 「脈衝」方塊是橙色的。這種方塊是「標準」的命令方塊,啟動一次執行一次命令。
  • 「連鎖」方塊是綠色的。這種方塊只在指向它的方塊執行命令時才會執行命令。這不同於條件制約模式,連鎖方塊檢測的是指向着它的命令方塊,而不是在它後面。指向它的命令方塊不必是連鎖方塊。
  • 「循環」方塊是紫色的。這種方塊被啟動時每一遊戲都執行一次命令。
條件制約/不受制約
Command block textures

上方:「不受制約」模式的命令方塊 下方:「條件制約」模式的命令方塊

點擊「條件制約/不受制約」按鈕來改變命令方塊的條件制約行為:
  • 「條件制約」:只有當背後的命令方塊成功執行命令時才會執行命令 ("背後" 的意思是命令方塊的指向的反方向,無視連鎖方向)。
  • 「不受制約」(預設):命令方塊將忽略背後的方塊。
保持開啟/紅石控制
點擊「保持開啟/紅石控制」按鈕改變命令方塊的開啟需求條件:
  • 「紅石控制」(脈衝方塊和循環方塊的預設設定):命令方塊必須像紅石機械一樣啟動才能執行命令。
  • 「保持開啟」(連鎖方塊的預設設定):命令方塊甚至在沒有紅石訊號時也會保持為開啟狀態 (連環型命令方塊將在感應後執行命令, 重複型命令方塊將在每一遊戲刻執行一次命令(每秒20次),脈衝型命令方塊在設定完畢後將立即啟動,且此後將無法再次執行)。
完成
點擊「完成」按鈕或按↵ Enter以儲存命令並退出命令方塊GUI。
取消
點擊「取消」按鈕或按Esc在不儲存任何修改的情況下退出命令方塊GUI。

啟動

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

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

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

  • 命令方塊(「脈衝型」)會在剛啟動時嘗試執行命令一次。
  • 連鎖的命令方塊(「連鎖型」)將在指向它的命令方塊執行命令後才會執行命令。
  • 循環中的命令方塊(「循環型」)將會在每個遊戲刻都嘗試執行一次命令直到不再被啟動為止。

連鎖執行

如果一個指向連鎖方塊的命令方塊被啟動了,它將向連鎖方塊發出準備執行命令的訊號。連鎖方塊只有在被啟動開啟時,在「條件制約」模式下還要在背後的命令方塊成功執行命令時(背後針對指向而言,不是説某個命令方塊接入連鎖的方向),才會執行命令。不管這個連鎖方塊是否執行命令,只要指向另一個連鎖方塊,它也同樣會發送出準備執行命令的訊號。

連鎖中的方塊將在同一遊戲刻執行命令。連鎖執行的訊號無法傳遞給一個已經在這個遊戲刻執行過命令的方塊。

輸出

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

紅石比較器
命令方塊可以向背對它的紅石比較器輸入一個訊號,強度取決於上一個命令的執行情況的訊號(例如,被命令所影響的玩家數)。
訊號強度一直根據上一個命令的執行情況保持,即使是在命令方塊關閉之後。
訊息
輸出訊息描述執行命令的成功與否,會有幾種輸出位置:
上一個輸出:輸出訊息都會寫入命令方塊GUI的「上一個輸出」文字框裏。
聊天框:輸出資訊將在單人模式下或多人模式下對所有管理員寫入聊天框,除非已經用/gamerule commandBlockOutput false攔截。一些命令可能會在聊天框寫入其正常工作時的附帶文字,這不會被攔截。(比如,/say命令將在所有玩家的聊天框寫入訊息)。帶有執行者的名字作為前綴的聊天資訊(比如命令/me/say/tell)會使用@作為執行者名字。如果命令方塊在放置前已經被命名過,那麼就使用這個名字。
日誌:輸出資訊會寫入到多人聯機伺服器日誌,除非使用/gamerule logAdminCommands false攔截。
命令統計
Information icon
此特性為基岩版獨有。
命令方塊可以推送多種成功結果到計分板目標,包括:
  • SuccessCount:成功的次數(之前也能用紅石比較器輸出,但不會限制到15)
  • AffectedBlocks:被修改的方塊的個數
  • AffectedEntities:被修改的實體的個數,包括玩家
  • AffectedItems:被修改的物品的個數
  • QueryResult:命令的回傳值
要使用的目標可以用命令/stats確定或直接用命令/blockdata修改命令方塊的NBT數據。

備註

以下命令不能在命令方塊中使用:/ban/banlist/ban-ip/debug/deop/kick/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

以下命令會在輸出中用到命令方塊的名字(預設為@):/me/say/tell

彩蛋

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

數據值

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

ID

命令方塊的ID決定於其類型:

名稱 ID 名稱 數字ID[僅BE]
命令方塊 minecraft:command_block 137
重複型命令方塊 minecraft:repeating_command_block 210
連環型命令方塊 minecraft:chain_command_block 211
方塊實體 minecraft:command_block[僅JE] -

方塊數據

參見:數據值

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

位元 數值
0x1
0x2
0x4

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

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

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

0x8 決定該方塊的條件制約狀態

方塊實體

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

Java版

  • 方塊實體數據
    • 方塊實體共通標籤
    •  auto:表示此命令方塊是否保持開啟。
    •  Command:命令方塊中的命令。
    •  conditionMet:表示受條件制約的命令方塊是否滿足條件。如果此命令方塊不受制約,此值為true
    •  CustomName:表示目前命令方塊名稱的JSON文字,預設為「@」。
    •  LastOutput:上一條命令的輸出,是一個JSON文字。遊戲規則commandBlockOutputfalse時依舊會儲存。當 TrackOutputfalse時不存在。
    •  LastExecution:上一條命令執行的時間戳。當 UpdateLastExecutionfalse時不存在。
    •  powered:表示命令方塊是否已被啟動。
    •  SuccessCount:表示用紅石比較器輸出的模擬訊號強度。只在命令方塊啟動後更新。
    •  TrackOutput:表示是否儲存上一條命令的輸出。可以在GUI中點擊"上一個輸出"文字框旁的按鈕進行開關。按鈕上的標誌指示出目前的狀態:O為true,X為false
    •  UpdateLastExecution:表示是否儲存上一條命令執行的時間戳。

基岩版

  • 方塊實體數據
    • 方塊實體共通標籤
    •  Command:命令方塊內的命令。
    •  Version:數據版本。
    •  SuccessCount:成功次數,表示紅石比較器輸出的訊號強度。
    •  CustomName:命令方塊的自訂名稱,顯示在方塊頂部以及GUI內。
    •  LastOutput:由命令方塊最新的一行輸出的本地化鍵名。在遊戲規則commandBlockOutput被設定為false時仍會儲存。在命令方塊的GUI中顯示。
    •  LastOutputParams:輸出的本地化字串的參數列表。
      • :具體參數。
    •  TrackOutput:用於決定是否儲存LastOutput。可以在命令方塊UI內的「上一個輸出」旁邊的按鈕進行控制。
    •  LastExecution:儲存命令方塊最後一次執行命令的時間。
    •  TickDelay:執行每次命令的間隔時間(刻)。
    •  ExecuteOnFirstTick:在儲存或啟動後在首個刻執行命令時為true。

方塊狀態

參見:方塊狀態

Java版

名稱 預設值 接受值 描述
conditionalfalsetrue
false
當命令方塊為條件制約模式時為「true」
facingnorthnorth
south
east
west
up
down
命令方塊的朝向

基岩版

名稱對應的附加值位 預設值 接受值附加值位的值 描述
conditional_bit0x8falsefalse
true
0
1
當命令方塊為條件制約模式時為「true」
facing_direction0x1
0x2
0x4
00
1
2
3
4
5
0
1
2
3
4
5
命令方塊的朝向
  • 0:朝下
  • 1:朝上
  • 2:朝北
  • 3:朝南
  • 4:朝西
  • 5:朝東

歷史

Java版
2012年7月27日Jeb開始發一些關於擴展生存模式的新方塊的推文。他開始推送一些圖片,想法和方塊將來用法的線索。
2012年7月31日Notch在他的AMA中暗示這個方塊會在1.4中出現。
1.4.212w32aImpulse Command Block Revision 1 加入了命令方塊。
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 Revision 1Repeating Command Block Revision 1 加入了連環型命令方塊和重複型命令方塊。
加入了方塊朝向。
Impulse Command Block Revision 2 變更了命令方塊材質。
15w34b加入了條件制約模式。
15w35aImpulse Command Block Revision 3Chain Command Block Revision 2Repeating Command Block Revision 2 變更了所有命令方塊的材質。
加入了保持開啟和紅石控制選項。加入了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 TextureUpdate Revision 1Chain Command BlockRepeating Command Block TextureUpdate Revision 1 變更了所有命令方塊的材質。
18w47bImpulse Command BlockRepeating Command Block 變更了脈衝型和重複型命令方塊的材質。
攜帶版
1.0.5alpha 1.0.5.0Impulse Command Block Revision 3Chain Command Block Revision 2Repeating Command Block Revision 2 加入了所有種類的命令方塊。
基岩版
1.8.0beta 1.8.0.8命令方塊現在的預設名稱為!而不是@
1.10.0beta 1.10.0.3Impulse Command BlockChain Command BlockRepeating Command Block 變更了材質。
1.12.0beta 1.12.0.2加入了自動完成功能。
加入了延遲選項。
原主機版
TU19CU71.12Patch 1 Impulse Command Block Revision 2 加入了命令方塊。
命令方塊沒有任何功能。

畫廊

參考

Advertisement