本站文本內容除另有聲明外,均在知識共享 署名-非商業性使用-相同方式共享 3.0 協議下提供。(詳細信息…

指令方塊

從 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
指令方塊連鎖型指令方塊循環型指令方塊
類型

方塊實體

物理特性

透明度

亮度

爆炸抗性

18,000,000

硬度

-1

工具

None

可再生

可堆疊

是(64)

首次出現

歷史

掉落物

自身

實體ID

command_block

數據值

#數據值

名稱

#數據值

為了避免囉嗦,以下段落可能對帶類型的指令方塊進行縮寫
例如,連鎖型指令方塊稱為連鎖方塊,等等
所以這些方塊可以用紅石信號來執行命令行。只要使用恰當的命令,一切皆可編程
——Jeb評論於指令方塊 [1]

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

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

指令方塊可以通過選取方塊鍵或各種命令,比如/give @p minecraft:command_block獲得。

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

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

另見命令教程/指令方塊

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

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

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

指令方塊GUI

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

  • enable-command-block 必須為true
  • op-permission-level 必須為2 及以上 (默認為 4)
控制台命令
命令可被輸入到第一個文本框。 指令方塊的命令長度限定在32,500個字符以內,但這個文本框一次只能顯示其中的一小段。自從1.9,按 Tab ↹ 可以補全命令且循環代入可選項。
指令方塊內的命令需要加斜槓前綴(/),就像在聊天框使用時的那樣,不過加了也依舊能用。
在控制台命令文本框下是一些如何使用目標選擇器的小提示。
上一個輸出
下方的文本框顯示上一個命令的輸出(成功或是失敗)。這裏的文本無法編輯。
文本框右邊的按鈕設置上一個輸出是顯示還是隱藏。它設置輸出將隱藏時為 O(默認),將顯示時為X。當世界中有很多指令方塊,尤其是電路高速運轉時, 不顯示輸出可以減少內存使用以處理很多請求。
脈衝/循環/連鎖
點擊"脈衝/連鎖/循環"按鈕可更改指令方塊類型。默認為「脈衝」,但非默認類型的指令方塊也能被放置。指令方塊改變類型時也會改變顏色:
  • 「脈衝」方塊是橙色的。這種方塊是「標準」的指令方塊,功能和它的前身差不多,激活一次執行一次命令。
  • 「連鎖」方塊是綠色的。這種方塊只在指向它的方塊成功執行命令時才會執行命令。這不同於它在條件制約模式時,會檢測什麼在指向着它,而不僅僅是靠在它之後。指向它的指令方塊也不必一定是連鎖方塊本身來觸發連鎖執行。
  • 「循環」方塊是紫色的。這種方塊被激活後的每一都執行命令,減小了紅石時鐘設備的重要性。
條件制約/不受制約
上方: "不受制約"模式的指令方塊 下方: "條件制約"模式的指令方塊
點擊「條件制約/不受制約」按鈕來改變指令方塊的條件制約行為
  • 「條件制約」: 指令方塊只有在背後的指令方塊成功執行命令時才會執行命令 ("背後" 的意思是指令方塊前指的對立方向,無視連鎖方向,甚至連鎖已被佔用也一樣)。
  • 「不受制約」(默認): 指令方塊將忽略背後的方塊。
保持開啟/紅石控制
點擊「保持開啟/紅石控制」按鈕改變指令方塊的開啟需求條件:
  • 「紅石控制」(脈衝型指令方塊的默認設置):指令方塊必須像紅石機械一樣激活才能執行命令。
  • 「保持開啟」(連鎖型指令方塊與循環型指令方塊的默認設置):指令方塊甚至在沒有紅石信號時也會保持為開啟狀態 (連鎖型指令方塊將在感應後執行命令, 循環型指令方塊將在每一遊戲刻執行一次命令(每秒20次),脈衝型指令方塊激活後將不能再次激活)。
完成
點擊「完成」按鈕或按 ↵ Enter 以保存命令並退出指令方塊GUI。
取消
點擊「取消」按鈕或按Esc 在不保存任何修改的情況下退出指令方塊GUI。

激活[編輯 | 編輯原始碼]

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

另外,當指令方塊由命令複製到一個會被激活的位置時,新的指令方塊只有在原有命令未被執行過時才會執行命令。 (可從F3調試螢幕的 "triggered"看到)。

不像除了音階盒的其它紅石元件,指令方塊可在每個遊戲刻激活一次(每秒20次,在不卡頓的情況下)。然而,在兩個遊戲刻中都激活一次需要使其在同一刻鐘從被激活轉為未激活狀態(見fill+replace高頻的實例)。

處於"保持開啟"的指令方塊將一直被激活。默認的模式為「紅石控制」,也就是需要充能才能運行。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ID[編輯 | 編輯原始碼]

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

名稱 ID 名稱 方塊/物品ID
指令方塊 minecraft:command_block 137
循環型指令方塊 minecraft:repeating_command_block 210
連鎖型指令方塊 minecraft:chain_command_block 211

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

另見數據值

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

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

在1.9:

位元 數值
0x1
0x2
0x4

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

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

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

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

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

另見區塊格式§方塊實體值

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


  • 方塊實體數據

    •  id: Control

    •  x: 方塊實體的X坐標。

    •  y: 方塊實體的Y坐標。

    •  z: 方塊實體的Z坐標

    •  CustomName: 可選。 指令方塊的名字,用以在saytell等命令中代替 '@' 。

    •  Command: 指令方塊中的命令。

    •  SuccessCount: 表達用紅石比較器輸出的模擬信號強度。只在指令方塊用紅石信號激活後更新。

    •  LastOutput: 上一條指令方塊生成的輸出。遊戲規則commandBlockOutput為false時依舊會儲存。在右鍵打開指令方塊GUI時顯示,包含生成輸出的時間戳

    •  TrackOutput: 1 或 0 (true/false) - 決定LastOutput是否儲存。可以在GUI中點擊"上一個輸出"文本框旁的按鈕進行開關。按鈕上的標誌指示出目前的狀態:O為true,X為false。

    •  CommandStats: 關係到根據上一個命令運行情況變化的記分板參數。

      •  SuccessCountName: 儲存上一個命令成功數量的玩家名稱。可以是玩家選擇器但可能只有一個結果目標。

      •  SuccessCountObjective: 儲存上一個命令成功數量的目標名稱。

      •  AffectedBlocksName: 儲存上一個命令修改方塊數量的玩家名稱。可以是玩家選擇器但可能只有一個結果目標。

      •  AffectedBlocksObjective: 儲存上一個命令修改的方塊數量的目標名稱。

      •  AffectedEntitiesName: 儲存上一個命令修改實體數量的玩家名稱。可以是玩家選擇器但可能只有一個結果目標。

      •  AffectedEntitiesObjective: 儲存上一個命令修改的實體數量的目標名稱。

      •  AffectedItemsName: 儲存上一個命令修改物品數量的玩家名稱。可以是玩家選擇器但可能只有一個結果目標。

      •  AffectedItemsObjective: 儲存上一個命令修改的物品數量的目標名稱。

      •  QueryResultName:儲存上一個命令查詢返回的玩家名稱。可以是玩家選擇器但可能只有一個結果目標。

      •  QueryResultObjective: 儲存上一個命令查詢返回值的目標名稱。

    •  powered: 1 或 0 (true/false) - 決定指令方塊現在的狀態是否被紅石所激活。

    •  auto: 1 或 0 (true/false) - 允許指令方塊在沒有紅石信號的情況下激活命令。


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

另見方塊狀態
名稱 描述

 triggered (在1.9中移除)
true
false
當指令方塊已經在上一次激活了當前命令時為真。

 conditional (1.9)
true
false
當指令方塊為條件制約模式為真

 facing (1.9)
north
south
east
west
up
down
指令方塊的指向

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

Mojang發佈的第一張指令方塊的截圖。
Mojang發佈的第二張截圖,展示着方塊正在給予玩家 玻璃
另見命令§歷史
正式版本
2012年7月27日 Jeb開始發一些關於擴展生存模式的新方塊的推文。他開始推送一些圖片,想法和方塊將來用法的線索
2012年7月31日 Notch在他的AMA中暗示這個方塊會在1.4中出現。
1.4.2 12w32a Grid Command Block.gif加入了指令方塊。
1.5 13w03a 指令方塊的成功運行可用 紅石比較器輸出信號。
13w04a 鐵砧[email protected]
1.6.1 13w19a 指令方塊在生存模式中不再可破壞, 也不會在爆炸中破壞,但藍色的凋零怪骷髏頭顱除外。
1.7.2 13w37a 加入了一個顯示上一個輸出的框。
增加遊戲內輸入命令的字符限制從256 到 16,369 。使用第三方編輯器可以達到 32,767 個字符。
1.8 14w07a 發射器 將會放置指令方塊,而不是發射它。
14w20a 移除了遊戲內16,369的字符限制, 允許達到最高的 32,767 個字符。
14w27a 加入了CommandStats NBT 標籤。
1.8.6 發射器不再放置指令方塊。[2]
1.9 15w34a Chain Command Block 15w34a.pngRepeating Command Block 15w34a.png加入了連鎖型指令方塊和循環型指令方塊。
加入了方塊朝向。
Impulse Command Block 15w34a.png升級了指令方塊材質。
15w34b 加入了條件制約模式。
15w35a Impulse Command Block.pngChain Command Block.pngRepeating Command Block.png升級所有三種指令方塊的材質。
加入了保持開啟和紅石控制選項。加入了 auto NBT 標籤負責控制此項。
設置為條件制約模式後,指令方塊箭頭尾部會彎曲。
15w36a 不能使用像/give這類命令的玩家不再能放置指令方塊。
15w36d 不同類型的指令方塊現在在地圖上將顯示不同的顏色。
16w02a 現在在指令方塊中運行/help將隨機使用各種不同的幽默短語作為先前的輸出。
16w04a Running "Searge" as the command in the command block without a preceding "/" will now set the previous output to "#itzlipofutzli".
1.11 16w32a 方塊實體ID由Control更改為command_block
未來
1.12 17w16a Chains of command blocks no longer schedule their commands to be run in the next tick, they now execute all in the same tick they are read. This allows later blocks in a chain to be modified via earlier blocks, allowing techniques like branching and looping, all in the same tick.
Added maxCommandChainLength game rule to control the max length of such a chain.
17w17a Added UpdateLastExecution and LastExecution NBT tags, which control the tracking of which tick a chain command block was last executed in.
攜帶版
1.0.5 build 1 加入了所有種類的指令方塊。

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

  1. https://twitter.com/jeb_/status/228829830731427840
  2. https://bugs.mojang.com/browse/MC-80671?focusedCommentId=228546&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-228546