Minecraft Wiki

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

了解更多

Minecraft Wiki
註冊
Advertisement
Disambig gray  本文章介紹的是指令方塊使用實例。關於執行指令的方塊,請見「指令方塊」。關於所有指令及其語法,請見「指令」。

指令方塊是一種主要用於冒險模式遊玩、多人遊戲的自動化和自訂地圖的方塊。

取得[]

擁有管理員權限或開啟作弊的單人模式玩家可以在聊天框內輸入指令/give @s command_block或者/setblock ~ ~ ~ command_block取得,也可以透過創造模式物品欄取得。

基礎[]

選擇器[]

主條目:目標選擇器

使用選擇器可以代替使用實體名稱:

選擇器 目標
@a 全部玩家
@p 最近的玩家
@r 隨機玩家
@e 全部實體
@s 執行指令的實體(如果指令由指令方塊或伺服器控制台執行,則不會選中任何實體)

基礎指令[]

傳送[]

你可以透過使用/tp <x> <y> <z>來傳送。其中<y>表示垂直方向的座標,<x><z>分別表示東西和南北方向的座標,玩家可以透過這個指令傳送到(x,y,z)這一個座標的位置。如果要以目前站的位置為基準進行傳送的話就只要在其(x,y,z)座標前面加上一個~即可,例如/tp ~<x> ~<y> ~<z>。如果當指令方塊座標(x,y,z)位於(1,2,3)時輸入/tp @p ~3 ~4 ~5,這時他會被傳送到(4,6,8)這個座標,和玩家輸入/tp @s 4 6 8是一個效果。還可以使用^<左偏移> ^<上偏移> ^<前偏移>的格式組成一個局部座標,它基於玩家的位置與朝向,例如玩家輸入/tp @s ^1 ^2 ^3會被傳送至其左方1格,上方2格,前方3格的位置。(可使用/execute模擬玩家輸入指令)

屏蔽指令方塊輸出[]

指令方塊被觸發時,會自動在聊天欄中輸出一條資訊,如:「[@]:已召喚1個實體」。

可以透過此指令屏蔽指令方塊輸出:/gamerule commandBlockOutput false

屏蔽指令方塊輸出可以給玩家帶來更好的遊戲體驗。但將會使玩家難以直接了解指令方塊的執行結果。

/gamerule commandBlockOutput true來恢復指令方塊輸出。

重生保留物品與記錄點[]

/gamerule keepInventory true可以在玩家死後儲存背包物品。同時記錄點可以用/spawnpoint來做。

實例[]

以下列出了一些使用實例:

給予一個隨機玩家一個物品並告訴所有人[]

給予一個隨機玩家五個餅乾,然後告訴所有人。

搭建:

/tag @a[tag=cookie] remove cookie
/say @a[tag=cookie] 已被給予五個餅乾。
/give @a[tag=cookie] minecraft:cookie 5
/tag @r add cookie

自動人行道[]

類似於電梯的概念,用於使實體往x或z座標移動。

初始化工作:

使用/fill <x> <y> <z> <x2> <y2> <z2> <方塊>[僅Java版]/fill <x> <y> <z> <x2> <y2> <z2> <方塊> <資料值>[僅基岩版]指令填充一片方塊。

搭建:

/execute as @e at @s if block ~ ~-1 ~ <方塊> run tp @s ~-0.1 ~ ~[僅Java版]
/execute @e ~ ~ ~ detect ~ ~-1 ~ <方塊> <資料值> tp @s ~-0.1 ~ ~[僅基岩版]

現在站到填充的方塊上,你就會自動向指定的方向移動。

指令中的~-0.1 ~ ~可以替換為你想要的座標,座標的格式可以參照上方的「傳送」段落。

無線紅石[]

輸入[]

可以使用/execute[僅Java版]指令實現無線紅石輸入:

/execute if block 123 12 123 stone_button[powered=true] ...[僅Java版]

輸入要測試的特定方塊的座標和名稱,在本例中是位於123 12 123的石製按鈕。這可以使用在任何可變更方塊狀態的方塊上。測試所得的值根據方塊狀態變化。

輸出[]

可以使用/setblock指令實現無線紅石輸出。圖中指令的座標需要根據實際情況變更。

入門套件[]

你可以使用標籤來區分「已領取套件的玩家」和「未領取套件的玩家」。

透過使用參數[tag=!<标签>],選擇不帶指定標籤的玩家,然後把已經領取套件的玩家以同樣的標籤標記,來在(伺服器)地圖上製作一個只能獲得一次的套件。至於這個標籤的名字,你可以隨意取,不過最好使用英文。

搭建:

/tag @a add <用以區分的標籤>
與上一個指令方塊中的格式相同,有幾個物品就放幾個這樣的指令方塊。
/give @a[tag=!<用以區分的標籤>,distance=..<半徑>] <物品ID> <數量>

方塊踩踏事件[]

/execute as @a at @s if block ~ ~-1 ~ iron_block run tp @s ~ ~3 ~[僅Java版]
/execute @a ~ ~ ~ detect ~ ~-1 ~ iron_block 0 tp @s ~ ~3 ~[僅基岩版]

以上指令會讓踩在鐵方塊上的玩家向上傳送三格。也可以將tp @s ~ ~3 ~改為其它內容來達到不同效果,或將iron_block改為其他方塊。

在單機非創造模式地圖中使用指令方塊[]

透過/gamemode也可以使你在單機非創造性地圖中使用指令方塊,簡單的切換遊戲模式可以使用/gamemode creative然後將指令方塊的指令設定為你想要的任何內容,最後使用/gamemode survival切換回生存模式。指令方塊只是需要在創造模式下設定,但切換至生存模式仍然可以正常運作。

他也可以被用於傳送(例如一個遙遠的要塞,在地下挖礦,或者在一個浮天空島世界)。如果他需要你花了很長時間才能到達那裡,然後你不介意他是一種軟作弊,這樣你可以建立起一個傳送系統。請確保你在設定指令方塊的時候是創造模式(請使用/gamemode creative。如果你並沒有開啟作弊選項,打開區域網模式設定打開作弊),但你還是可以在生存模式中使用它。在打開的指令方塊的介面中輸入/tp @p <x> <y> <z>。然後,用紅石啟動這個指令方塊,然後你就會被送到遠處的目的地。你可以建立多種不同的傳送器。這也可以用於跨越大面積的大型項目,或者將儲物箱從舊房子轉移到新房子。

定格動畫[]

透過使用/clone,或者Minecraft地圖編輯器,例如Minecraft地圖編輯器可以複製一張圖片(利用方塊做出來的繪畫),然後粘貼到其它地方(一般緊挨著上一個圖畫),並變動繪畫的一些方塊,利用一些壓力板或者絆線鉤,在玩家短時間欣賞繪畫後,指令方塊做出/clone指令,將設定好的圖片複製到觀看區域。如果大量的複製粘貼這樣的零件,按順序地複製方塊並稍稍弄出一點點的延遲,那麼玩家就會產生幻覺,認為這個繪畫是在運動的,這就是利用指令方塊來實現定格動畫技術。

自動公告[]

透過在指令方塊中使用指令/tellraw @a {"text":"<資訊>"}[僅Java版]/tellraw @a {"rawtext":["text":"<資訊>"]}[僅基岩版]可以創造一個無人自動廣播(需要連接循環紅石等不斷發出啟動訊號的紅石元件)。還可以加入一些判斷,如在第一位玩家抵達終點時向所有人廣播。

特殊的彩色文字[]

雖然你不能於指令方塊直接輸入彩色/粗體/斜體文字,但是可以直接利用原始JSON文字來弄出彩色/粗體/斜體字體。也可以使用「§」[僅基岩版]或「\u00a7」來進行文字的變色、甚至是亂碼(§k[僅基岩版]或\u00a7k)。

安全掃描[]

使用/clear指令,你可以清除玩家背包中的某物品。具體步驟是這樣的,使用/clear <@a|玩家名稱> <清除的物品名>。如果想實現自動清理危險品可以將該指令方塊設為循環型。

你甚至還可以進一步將被清除危險品的玩家顯示在聊天框中:

Java版中,可以藉助指令統計值來完成:

初始化工作:建立一個計分項。

搭建:

/execute if entity @a[scores={<记分项>=1}] run tellraw @a [{"text":"已清除"},{"selector":"@a[scores={<记分项>=1}]"},{"text":"身上的危险品"}]
/execute as @a store success score @s <记分项> run clear @s <清除的物品名>

基岩版中,需要用到「無序遍歷」的方法完成:

搭建:

/tag @a remove <标签>
/tellraw @a {"rawtext":[{"text":"已清除"},{"selector":"@a[tag=<标签>]"},{"text":"身上的危险品"}]}
/clear @a[tag=<标签>] <清除的物品名>
/tag @a add <标签>

區域內檢測[]

在選擇器參數中,x、​y、​z、​dx、​dy、​dz、​rrm[僅基岩版]x、​y、​z、​dx、​dy、​dzdistance[僅Java版]可用於檢測玩家是否在指定的區域內

可以用指令方塊的範圍限制來製作一個「圍欄」,透過圍欄的玩家會變成指定遊戲模式。比如這樣:

/gamemode <遊戲模式> @a[x=<區域中心X>,y=<區域中心Y>,z=<區域中心Z>,distance=<距離下限>..<距離上限>][僅Java版]
/gamemode <遊戲模式> @a[x=<區域中心X>,y=<區域中心Y>,z=<區域中心Z>,rm=<距離下限>,r=<距離上限>][僅基岩版]

這樣放置兩個搜尋區域不重合的指令方塊,就可以將規定半徑內的玩家改變模式。

也可以是一個長方體區域,比如這樣:

/effect give @a[x=<X>,y=<Y>,z=<Z>,dx=6,dy=3,dz=6] strength 1 2 true[僅Java版]
/effect @a[x=<X>,y=<Y>,z=<Z>,dx=6,dy=3,dz=6] strength 1 2 true[僅基岩版]

將使所有在方塊區域(X~X+6,Y~Y+3,Z~Z+6)內的玩家獲得1秒力量II效果。

PVP玩法[]

使用指令/gamerule keepInventory true來關閉玩家死亡後的物品掉落(同樣在重生後會保留物品和經驗等,所以需要在玩家重生後清空背包)。使用/give @p <物品ID>可以給予玩家武器(可以加入NBT標籤),你可以設計一套完善的職業系統,玩家選擇不同的職業會有不同的裝備。使用/spawnpoint <x> <y> <z>設定玩家重生地點,使用/tp <x> <y> <z>移動地圖中的玩家到指定區域。

時間與天氣[]

時間倒流[]

使用方塊類指令(/setblock、​/fill/clone)來變更玩家所處的場景,並且時間也被設定為開始的時刻,這就好像是時間倒退。 (可以廣泛用於劇情RPG地圖)

時間加速[]

/time add 3500

時間會加速變化,你可以清楚地看到日月迅速升起落下的情景。(可以用在敘事故事類地圖中)

輕鬆設定日/夜[]

在一片開闊且露天的場地上放置一個指令方塊。在指令方塊上放置日光感測器,然後按下使用鍵,將其設定為反向日光感測器。在指令方塊中輸入/time set day。或者你希望永遠是夜晚,你可以直接放置一個日光感測器,然後在指令方塊中輸入/time set night

天氣機[]

使用/weather來開始或者結束降雨(雷雨)合理安排這些指令的話會十分有用,你可以隨自己的意願開始或停止降雨。這個技術可以用於村民和一些由降水控制的紅石機械,不用輸入任何指令就可以控制天氣(需要管理員啟動指令方塊自動執行),合理利用將會十分有效,比如在森林火災時或者在雨天生怪。

對於不同遊戲模式玩家的控制[]

使用值[gamemode=creative][僅Java版][m=1][僅基岩版]你就可以設定指令只對創造模式的玩家有效,生存模式就是[gamemode=survival][m=0][僅基岩版]。 例:傳送所有創造模式的玩家到254,47,-874,使用的指令為/tp @a[gamemode=creative] 254 47 -874[僅Java版]/tp @a[m=1] 254 47 -874[僅基岩版]

「聯合」住宅[]

建造至少兩個建築物,在房間的入口或者出口設定一個/tp指令的指令方塊,你不必將你的建築都在同一個地方建設,它們可以在任何地方,只需要入口的指令方塊傳送過去,玩家會忽然覺得外面感覺很小的建築內部空間竟如此之大。用這種方法聯合多個建築,可用作與伺服器或單人地圖中的場景瞬移。

睡覺模擬[]

使用/spawnpoint可以直接設定重生點,再使用/time set day指令,就可以模擬出睡覺的效果了。

檢測世界是否為和平難易度[]

敵對生物檢測法[]

建立一個攻擊型生物,把它放在壓力板上。(請確保它會保持始終按下狀態,所以一定要確保它不能跳或走開)。做一個紅石電路,讓壓力板在沒有接收到紅石訊號的時候啟動指令方塊。指令方塊裡設定一個訊息,通知玩家的地圖由於難易度切換到了和平難易度導致損壞,需要的怪物已經消失,請重新下載這個地圖。

指令查詢法[]

Information icon
此特性為Java版獨有。

使用無參數的/difficulty指令可以返回目前的遊戲難易度。前接/execute store result ...,會將和平難易度以數值0返回。

初始化工作:建立一個計分項。

搭建:

/execute if score <虛擬玩家名(須前後一致)> <計分項> matches 0 run <將執行的指令>
/execute store result score <虛擬玩家名> <計分項> run difficulty

會說話的冒險地圖(有一個任務系統!)[]

/say指令可以直接給玩家發送訊息。將指令方塊命名後會更好,這樣你就不需要放很多的告示牌和頁碼多到不行的書來告訴玩家遊戲規則,你只需要把指令方塊放成一條線然後在中間鋪紅石中繼器來弄各個語段之間的延遲即可。

有一些是和NPC配合使用的。想像一下你進了鐵匠鋪並且你想要讓裡面的鐵匠說些什麼。在指令方塊出現之前,你需要一些書和告示牌來充當對話的效果,然後在鐵匠鋪裡造些房間並放些雜物,這樣會讓這個鐵匠鋪看起來變得非常亂。但是現在,你只需要使用/say指令來製造鐵匠說話的效果。也許櫃檯後面的豬會求饒!讓我們再舉另外一個例子:你在一家工廠裡,一個報警鈴的聲音提示說工廠陷入危險了。用這個方法在聊天框中告訴玩家,以便保持一個緊張的氣氛,特別是如果文字很長時應當用此方法。這同樣可以用在定時炸彈裝置,如果玩家看到了聊天框中的倒計時,他將可以更好地把情緒帶進地圖。

最後一點並非不重要,它可以更容易地建立一個任務系統,來讓我們的玩家開始進行任務。玩家透過壓力板後會用一個有/say指令的指令方塊去表達屠夫對玩家的要求,然後獲得一個特別的標籤(前面的指令在執行時忽略帶有這個標籤的玩家)。他需要去殺一隻。當玩家殺死在指定區域內的豬時,指令方塊將會時玩家回到屠宰場之後啟動三個指令方塊。第一個指令是屠夫感謝玩家的/say指令,第二個指令是使玩家獲得獎勵的/give指令,最後同樣是獲得一個特別的標籤(前面的指令在執行時忽略帶有這個標籤的玩家)。除此之外,別忘了使用目標選擇器@a[tag=<标签>],使屠夫說出玩家的名字。例如,將指令方塊設定為:/say 謝謝,@a[tag=<標籤>],你幫我殺了那頭豬。,聊天框就會顯示:[@]:谢谢, <玩家> 。你帮我杀了那头猪。這讓地圖變得更酷,看起來像是為玩家製作的,因為上面寫著他/她的名字!

建立商店[]

透過使用/give @p[level=<''等级''>..] <物品> <數量>/experience add @p[level=<''等级''>..] <等級> levels指令可以建立一個商店,舉例來說,如果你放了兩個指令方塊,一個輸入/give @p[level=5..] grass_block 64指令,另外一個輸入/experience add @p[level=5..] -5 levels指令,並連接到相同的紅石電路,當指令方塊被啟動後,會從等級高於5等的玩家扣除5等等級,並給玩家64個草地。

  • 透過使用指令/experience add @p[level=3..] -3 levels將經驗減去作為貨幣。level=後面的範圍是指令執行所需的最低經驗。

可以使用指令方塊建立出售任何物品的自訂村民[僅Java版]。 例如:
/summon minecraft:villager ~2 ~ ~ {VillagerData:{profession:"armorer"},CustomName:'"BLACKSMITH"',CustomNameVisible:0,Offers:{Recipes:[ {maxUses:13,buy:{id:"emerald",Count:5},sell:{id:"golden_sword",Count:1,tag:{Enchantments:[{id:"sharpness",lvl:9},{id:"fire_aspect",lvl:6}],display:{Name:'"Molten Gold Sword"'}}}},{maxUses:13,buy:{id:"emerald",Count:1},sell:{id:"stick",Count:1,tag:{Enchantments:[{id:"sharpness",lvl:5}],display:{Name:'"Whuppin Stick"'}}}},{maxUses:13,buy:{id:"emerald",Count:2},sell:{id:"blaze_rod",Count:1,tag:{Enchantments:[{id:"sharpness",lvl:5},{id:"fire_aspect",lvl:10}],display:{Name:'"Radioactive Whuppin Stick"'}}}}]},Brain:{memories:{"minecraft:job_site":{value:{pos:[I;<x>,<y>,<z>],dimension:<维度命名空间ID>}}}}}

其中<x><y><z><维度命名空间ID>要根據實際情況改為對應高爐所在的位置。

使用buy標籤的部分是村民的收購物,使用sell標籤的部分是村民的出售物。如果不希望交易次數耗盡,可以將maxuses標籤變更為1000;如果希望使其成為只能交易一次的項目,可以將maxuses變更為1。注意這裡的第一個物品(金劍)有一個超出範圍的附魔(鋒利9)。是的,這是可行的,但在做出超出範圍的效果之前,一定要研究什麼樣的附魔效果,因為有些東西什麼也不做,甚至會產生負面影響(水下呼吸的「看清水下」副作用使所有東西在高水平上都變成了令人眼花繚亂的白色,就像你潛入充滿泥漿的北極水域一樣)。至於那把金劍,記住金劍的耐久度實在是太低了(這就是人們稱之為黃油劍的原因)。一個10級耐久附魔會將一把金劍達到一個體面的耐用性水平。另外注意,另外兩個「武器」實際上是一個木棒和一個帶有武器附魔的烈焰桿。使用任何非武器作為武器都會造成與空手相同的傷害(1(♥),但這些武器上的附魔使它們與未附魔的劍一樣。它的優點是木棒、烈焰桿或其他物品可以無限使用。同樣的技巧也可以用於生物頭顱和水下呼吸3,以製造一個無限耐久的潛水面罩。

在更少的指令方塊和遞歸中使用更多的指令[]

有幾種方法可以將指令組組合為一個指令。
  • 觸發鐵軌上生成一個指令方塊礦車,該指令方塊礦車上按順序騎著另一些指令方塊礦車。
參見:函數

使用地圖作為通關依據(scroll)[]

YouTuber 「SethBling」使用地圖當作通關依據(scroll),當空白地圖被使用時,會變成一般地圖,那時,指令會立即將地圖從玩家的物品欄清除,並執行指令(召喚生物、傳送玩家),同時關卡透過。

優點

  • 快速的互動。
  • 緊湊的系統。
  • 簡單觸發,只要使用右鍵即可啟動。

缺點

  • 玩家在刪除地圖之前啟動地圖時可能會看到地圖動畫。
  • 玩家在遊戲過程中不能使用地圖(顯示文字資訊、路徑、圖畫…)。

機制建設

玩家可以變更物品的顯示名稱和介紹,讓玩家更好地了解並使用物品。使用以下指令為玩家提供自訂命名地圖[僅Java版]/give <玩家> map{display:{Name:'"<名稱>"',Lore:['"<介紹>"']}}

  • 玩家:指定的玩家(@p@a[参数]……)。
  • 名稱:在快捷欄中捲動或用滑鼠懸停於物品上方時顯示的名稱。
  • 介紹:滑鼠懸停於物品上方時名稱下方的文字。

檢測地圖的啟動

搭建:

任意你想執行的指令,如給予玩家某種效果,傳送玩家到某處等。
/give <玩家> map{display:{Name:'"<名稱>"',Lore:['"<介紹>"']}}(可選,若有則觸發後可重新獲得通關依據)
/clear <玩家> filled_map

進階

/clear指令可以檢驗其他可互動的物品:

  • 在玩家剛喝過藥水時檢驗玻璃瓶
  • 在收回浮標時檢驗釣竿。在工具的NBT中包含一個名為Damage的標籤,是工具的耐久度:

/clear <玩家> fishing_rod{Damage:2} 請注意如果釣到了地面或者生物時,釣竿可能會損失不少於2點耐久度,所以對每2點耐久度都進行一次檢驗。

更多資源[]

Feare的指令方塊教學
Dragnoz的YouTube教學提供了很多使用NBT標籤的可能性
NBT標籤的文字教學

參見[]

語言

Advertisement