本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

教程/指令方塊

出自 Minecraft Wiki
前往: 導覽搜尋
此條目的部分內容由於太久沒更新而已過期。
你可以幫助我們來更新此條目。
Cleanup.svg
該文章需要整理以符合樣式標準 討論
請幫助優化文章樣式來讓它符合樣式要求。

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

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

擁有管理員權限或開啟作弊的單人模式玩家可以輸入指令/give @s command_block來獲得指令方塊。

基礎[編輯 | 編輯原始碼]

選擇器[編輯 | 編輯原始碼]

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

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

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

指令方塊有各種各樣的用途,如改變難易度,改變天氣的狀態,或者給你指定的物品。它們只能在作弊為開啟時才能使用。

實例[編輯 | 編輯原始碼]

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

給予一個隨機玩家一個物品並告訴所有人[編輯 | 編輯原始碼]

餅乾給予器 5000X

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

首先創建一個記分板(名字任意,注意除非在你測試,否則不要顯示它),比如說「cookie」

/scoreboard objectives add cookie dummy cookie

第一個指令方塊的指令:

/scoreboard players set @r cookie 1

第二個和第三個指令(兩者可顛倒,但要同時被激活)

/say @a[scores={cookie=1}] 已被给予五个餅乾

/give @a[scores={cookie=1}] minecraft:cookie 5

第四個指令方塊的指令

/scoreboard players set @a[scores={cookie=1}] cookie 0

上圖中I代表輸入紅石信號原。(建議可使用永動紅石電路)

傳送[編輯 | 編輯原始碼]

你可以通過使用/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 @p 4 6 8是一個效果。

玩家安全系統[編輯 | 編輯原始碼]

指令方塊也可以製作安全系統。 只要在建築物入口的鐵門前放置一個壓力板,並於指令方塊中輸入指令:/tp @p[r=<半径>,name=!<你的玩家名>] <x> <y> <z>。在1.13或更新版本中,則為/tp @p[distance=..<半径>,name=!"你的玩家名"] <x> <y> <z>。對於怪物,簡單的柵欄或熔岩護城河就能達到目的。

自動人行道[編輯 | 編輯原始碼]

類似於電梯的概念,用於使生物往x或z坐標移動。 可以通過以下方式建立:

  • 使用/fill指令加上你的坐標。 (比如/fill <x> <y> <z> <x2> <y2> <z2>)
  • 對於要填充的方塊,使用這個:command_block 1 replace{Command:/tp @p ~-1 ~1 ~}

1.13及以上版本使用這個:command_block{Command:/tp @p ~-1 ~1 ~}

  • 修改括號內的坐標,將會改變傳送的方向。(請勿隨意修改y坐標(過大容易摔死,小於零則會使使用者窒息(卡牆)))
  • 將壓力板放在所有指令方塊的頂部。
  • 在這時,請用/gamerule CommandBlockOutPut false將指令塊提示遊戲規則關閉,因為聊天菜單會被指令提示刷屏。

屏蔽指令方塊輸出[編輯 | 編輯原始碼]

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

您可以通過此指令屏蔽指令方塊輸出:/gamerule CommandBlockOutput false

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

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

永日[編輯 | 編輯原始碼]

Time reseter .png
  • 13w24a,可通過在聊天菜單輸入/gamerule doDayLightCycle false指令以及/time set 6000指令來獲得永日。

通過使用蛛網和礦車,你可以使用 /time set 0跳過夜晚。一個礦車需要31秒穿過一個蛛網。因此,通過使用23個堆疊的蛛網和檢測器軌道和幾個動力軌道來達成永日。

或者,你也可以在一個木質壓力板測重壓力板上放置一個掉落物去實現,掉落物每5分鐘就會被清除再放置,這時它會觸發一個指令方塊將時間重置為0,還會觸發一個發射器(或投擲器)將一個新物品扔到木質壓力板上。5分鐘是一天的周期,並且會在怪物產生之前觸發重置時間。然而,這個方法被限制在該區塊被加載後的64×9=576個周期,即48個現實小時的遊戲時間。在快照13w01a和更高版本中添加了漏斗,可以挑選物品並將它們存入儲物箱。在怪物磨床中,可以在發射器中填滿火藥或者腐肉。 另一種方法是使用指令方塊創建。(例如:/summon Item ~1 ~0 ~1 {Item:brown_mushroom} )這樣做的好處是它不像使用發射器那樣有64×9的格子限制。

這兩種方法都要求保持區塊加載以使系統工作。在1.13.1以下(/forceload加入前),世界重生點為中心16x16區塊是常加載區塊。1.13.1或更新版本中可以通過在機器上使用/forceload add ~ ~指令來保持機械所在區塊常加載


或者你可以將指令方塊連接到一個重複的紅石脈衝,例如一個5分鐘,某種類型的循環,或者如右圖所示的陽光探測器。為了防止聊天框被刷屏,使用指令/gamerule CommandBlockOutput false關閉指令方塊在聊天框上的消息輸出。注意:這個方法可以使用不同的指令來設定各種各樣的東西。(比如,要使天氣永遠晴朗,在循環中添加另一個指令方塊,並使用指令/weather clear。)

為了可以在不同功能之間切換,可以在指令方塊前設定一個與門,在一邊放置一個控制桿,在另一邊設定一些電路。


使用陽光探測器是永日的一種更直接的方法。

Automatic Time Resster view 1.png Automatic Time Reseter view 2.png

當沒有足夠的亮度陽光探測器在遠處為紅石火把供電時,探測器會停止充能並啟動指令方塊,將時間設定為8000。換句話說,當亮度太低時,指令方塊會將時間設定為中午。當指令被激活時,亮度會隨着紅石線的距離而變化,它設定的時間隨在指令方塊中輸入的時間而變化。

Automatic Time Reseter view 3.png

要做到這一點,首先,你要把陽光探測器放在一個開放的區域。然後你從它相鄰的位置開始向遠處設定一些紅石線紅石線的距離取決於你需要多少延遲的時間。你最多只能有15個紅石線陽光探測器發送信號到它的另一端。接下來,在紅石的另一端放一個方塊。把紅石火把放在這個方塊的一側,並在火把頂部設定一個指令方塊。右鍵單擊指令塊輸入指令,指令以/time set開始,以有效的時間值結束。這個值即為指令方塊在觸發時會將時間設定到的數值。午夜是18000,晚上是12000,中午是6000。

Automatic Time Reseter.png

這種設計可以在地圖上使用,使之保持在特定的時間。但這個簡單的裝置只能用在創造模式或者開啟作弊時。

還有一種更緊湊的設計。如果你把一個陽光探測器作為一個紅石比較器的第一個輸入,一個強度為15的紅石線(紅石磚紅石火把)放在比較端,然後將比較器設定為比較模式(前段火把熄滅),則比較器將會在中午之後立即啟動。

輕鬆設定日/夜[編輯 | 編輯原始碼]

指令方塊上放置陽光探測器,然後按下使用鍵,將其設定為夜光探測器。 將指令/time set day添加到指令方塊中。或者如果你希望永遠是夜晚,你可以添加一個陽光探測器,不要右鍵單擊它,然後將/time set night添加到指令方塊中。

無線紅石[編輯 | 編輯原始碼]

可以使用指令方塊記分板系統實現無線紅石。該過程涉及使用記分板變量,該變量由附加到時鐘電路輸出的指令方塊進行搜索。然後在無線輸出指令方塊上使用紅石比較器,該指令方塊在發現變量為正時觸發。

無線紅石也可以通過使用對象而不是變量來實現。如果輸出指令塊設定為嘗試刪除一個不存在的對象,則可以通過通過指令塊或聊天指令添加said objective來創建紅石信號。這種方法對於變量法的優點是它不依賴於參與者。

為此,在在輸入處放置一個指令方塊,並鍵入指令/scoreboard objectives add <對象名> dummy,在輸出位置放置一個指令塊,輸入/scoreboard objectives remove <對象名>(兩個對象名要一致),將其連接到時鐘電路上,然後在指令方塊外面放一個紅石比較器,然後放一個紅石中繼器。然後使用紅石中繼器作為輸出。

你還可以通過使用/setblock指令實現無線紅石,而不是通過計分板系統。你所要做的就是讓指令方塊將一個與任何不輸出信號的方塊相鄰的紅石磚的坐標設定為目標坐標,並且與一個連接到反向信號的指令方塊一起設定為相同的坐標。

無線按鈕[編輯 | 編輯原始碼]

參見:按鈕§數據值控制桿§數據值

從技術上講,這可以在任何方塊上完成,但是按鈕、控制桿和其他可以交互的方塊會增加有趣的效果。雖然在伺服器上非常神秘,但它其實很簡單。它使用了1.8的/testforblock指令。它使用了一個指令方塊、一個將指令轉換為紅石信號的紅石比較器、一個要測試的方塊和一個重複激活指令方塊的時鐘電路。這是一個無線按鈕的示例:/testforblock 123 12 123 stone_button 10(按鈕坐標是123,12,123)。輸入要測試的特定方塊的坐標和名稱,在本例中是位於123 12 123石製按鈕。這可以使用在任何可更改數據值的方塊上。坐標之後的數字10對應於我們希望指令方塊測試的按鈕的數據值。在本例中,當按下面向西部的按鈕時,要讓指令方塊激活,因此必須將該數據值值設定為10

注意:這個值根據方塊狀態變化,沒有按下的面向西部的按鈕的數據值是2。當一個按鈕被按下時,它會在初始狀態中增加8的值,所以當按下時,一個面向西部的按鈕的數據值是10。關於數據值的詳細內容,請見按鈕#數據值控制桿#數據值

入門套件[編輯 | 編輯原始碼]

通過使用參數 [gamemode=<模式名称>], 你可以在(伺服器)地圖上製作一個只能獲得一次的套件,首先, 在地上挖 3個方格, 然後放置一行指令方塊(工具包中的每個物品一個)。 在指令方塊的介面中, 輸入 /give @p[gamemode=<初始游戏模式>] <物品ID> <数量>。這樣他們會獲得你所希望給予他們的物品。 在一個額外的指令方塊裡面輸入 /gamemode <非初始遊戲模式> <對象>, 然後潛行後用紅石連接整個指令方塊串。 將洞填起來然後放上壓力板。 當玩家走過去,他們會得到他們應得的工具包,他們因為改變了他們的遊戲模式所以他們不會獲得更多的套件

(注意:此指令也可以透過記分板的方式完成,首先建立一個記分板並命名它,如/scoreboard objectives add <名称> dummy [<显示名称>],然後,給予記分板數值為0的玩家要給予的物品,如/give @p[scores={<记分板名称>=0}] <物品> [<数量>],最後將他的記分板數值設為非0的值,如下/scoreboard players add @p <记分板名称> <任意非0的数值>。同時,你也可以通過不同的記分板名稱重複以上步驟。)

作為壓力板的替代品[編輯 | 編輯原始碼]

是不是已經厭煩了壓力板只有四種材質可用了呢(石製,木質,鐵質和金質)?現在你可以不再為這個問題困擾了。你可以使用包含指令/execute,區域大小的帶有時鐘電路的指令方塊來代替壓力板了。指令/execute as @a at @s if block ~ ~-1 ~ #sand run tp ~ ~3 ~(僅可用於1.13及更新版本)會檢測任意沙上是否有玩家並將他向上傳送三格。同樣你也可以修改run後的指令來達到不同效果,也可以更改sand至其他方塊。

詳見:/execute

在單機非創造模式地圖中使用指令方塊[編輯 | 編輯原始碼]

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

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

探險家地圖繪製[編輯 | 編輯原始碼]

如果一個人希望創造一個單人玩家的探險家地圖,做/publish指令來讓其他的指令(見下方)被使用。

在多人中的應用 (SMP)[編輯 | 編輯原始碼]

這個章節詳細介紹了指令方塊多人遊戲中的應用。

  • 傳送/運輸

通過/tp指令,可以製作一個所有人都可以使用的傳送裝置。可以在每個地方都使用。 例如,在整個世界裡做一個龐大的傳送系統,所有的傳送點入口都匯集到傳送大廳中,而傳送大廳可以進入每個傳送點入口處進而達到出口。這樣就可以建造一個「快速交通中心」了。

  • "定格動畫"

通過使用/tp,或者Minecraft地圖編輯器,例如MC地圖編輯器可以複製一張圖片(利用方塊做出來的繪畫),然後粘貼到一處遙遠的地方,並變動繪畫的一些方塊,利用一些壓力板或者絆線鈎,在玩家短時間欣賞繪畫後,指令方塊做出/tp指令,將玩家傳送到下一張繪圖點. 如果大量的複製粘貼這樣的零件,讓玩家按順序的在這些之間傳送並稍稍弄出一點點的延遲,那麼玩家就會產生幻覺,認為這個繪畫是在運動的(甚至認為是某MOD做出來),這就是利用指令方塊來實現定格動畫技術。

1.7+里可以使用/setblock來直接放置和刪除方塊,利用/setblock還可以免除傳送時不必要的卡頓和一大堆的房間,而1.8+的/fill更是可以極其方便地放置大量的方塊,但這樣比較麻煩。 結構方塊(structure block) 在1.10版本中可用

  • 抽獎

/give @r指令,可以創造一個抽獎。但是記住, /give指令是直接把物品放進他們的背包,而不是放在他們面前。

  • 監獄

通過連接高頻紅石到一個指令方塊和用/tp指令,你可以強制玩家留在某個地方。如果你想讓這個方法成為可行的,在你的聊天窗內使用指令/gamerule commandBlockOutput false。使用"Range"(最大範圍)和"Minimum Range"(最小範圍)兩個參數,你可以在玩家離開一定距離後再將他們傳送回來。

  • 只針對管理員

如果使用參數[m=1],那麼只有創造模式的玩家才會受到這條指令的影響,當然輸入m=0既只對生存模式的玩家有效。

  • 公告

註:使用AutoMessage等服務端插件就可以達到自動公告的功能

通過在指令方塊中使用 /me,可以創造一個無人自動廣播(需要連接循環紅石等不斷發出激活信號的紅石元件),不需要OP,用1.7+的新指令/tellraw {text:"<信息>"}可以免除開頭的[@]並且可以做到懸浮事件和點擊事件等。

  • 安全掃描

註:大部分伺服器管理插件支持封禁危險物品。

使用 /clear指令, 你可以清除玩家背包中的某物品。具體步驟是這樣的,使用 /clear @a(或者某玩家ID) <清除的物品名>。如果想實現自動清理危險品需要連接循環紅石。

  • 比賽裁判

使用/say @p,指令方塊就能報告最近的玩家。如果指令方塊放在終點線後,他會很方便的說出贏家,但是/say會給所有玩家發送信息,為了防止刷屏,建議使用/tell/tellraw

  • 建立保護區域

註:Residence等伺服器領地插件的拓展插件可以實現領地內遊戲模式的變化。

你可以通過指令方塊創造一個「創造/生存模式區域」,但是很繁瑣。可以通過用指令方塊的範圍限制來製作一個「圍欄」,通過圍欄的玩家會變成生存或創造模式。在指令方塊中輸入指令 /gamemode adventure @a[x=<区域中心坐标> y=<区域中心坐标> z=<区域中心坐标> r=<最大的玩家搜索半径> rm=<最小的玩家搜索半径>] 這樣放置兩個搜索區域不重合的指令方塊,就可以將規定半徑內的玩家改變模式。

  • 無插件PVP

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

  • 新手工具包

你可以很簡單的使用指令方塊給予新手包且不需任何插件: /give @p[r=2] 274。 為防止玩家按下兩次按鈕獲得兩個新手包,您可以設定按鈕後的兩個指令方塊:1. /give @p[r=2,m=adventure] 274,2. /gamemode survival @p[r=2](玩家一開始是冒險模式,獲得工具包後調成生存模式,然後再限定工具包僅限冒險模式能拿即可)

  • 特殊的彩色文本

雖然你不能於指令方塊直接輸入彩色/粗體/斜體文本,但是通過McEdit編輯器可以編輯那些地圖或伺服器內儲存的文本。基岩版可以使用"§"來進行文字的變色、甚至是亂碼(§k)。 SethBling's McEdit Filter: ColourCommandBlockText

同時/tellraw可以直接利用"color"等參數來弄出彩色字體。

  • 警報系統

當玩家走上壓力板時,他能觸發指令方塊/say @p <警告內容>

  • 獎勵屋

如果某個玩家在伺服器有着特別的貢獻或者有元老資歷,但卻不足給他管理員權限,你可以獎勵他一組鑽石或者一些奇怪的東西。 創建一個只有通過傳送指令才能進入的房間,將有卓越貢獻的玩家傳送進去,玩家會激活房間中的指令方塊從而獲得獎勵,然後他又會被另一個指令方塊傳送回原地,如果伺服器允許/back的話,連續2次傳送到原點,這樣/back就無效了。(可以避免玩家重複領取獎勵)

  • 天氣機

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

  • 有獎競賽

可以使用/tp @p/give @p指令製作一個障礙賽跑或者有獎迷宮,遊戲結束後就將玩家傳送回出生點或其他地方。

  • 時間機器

在地圖上模擬兩個十分相似的環境,通過指令方塊將玩家從一個傳送到另一個,並且時間也會被設定為開始的時刻,這就好像是時間倒退。 (註:可以廣泛用於劇情RPG地圖。)

  • 地雷

使用指令/execute as @a at @s if block ~ ~-1 ~ #wood run summon tnt ~ ~ ~ 檢測到有玩家站在木塊上時就召喚TNT!砰!

  • 安全門

通過使用 /testfor @p[r=5,name=<房主>],指令方塊會在一定範圍內檢測房主並且為他開門,也只會為他開門。 (註:指令方塊的/testfor指令為一次性指令,指令方塊檢測到一次就會一直輸出信號。)

在自定義地圖中的應用[編輯 | 編輯原始碼]

這一節詳細介紹了指令方塊在自定義地圖的應用。

Minecraft中使用大量指令方塊的地圖有很多優勢。 比如:SethBling's TF2 Map

https://www.youtube.com/watch?v=_f2brU8hBWc&feature=plcp

另一個優秀的應用例子是 Hypixel's Gladiator Arena,這個地圖中的戰鬥職業系統完全依賴於指令方塊。

https://www.youtube.com/watch?v=jryJkWcqmzM

  • 「沉默的」指令方塊

在地圖中控制指令方塊不輸出提示信息很重要,這可以保持玩家對地圖的未知性和劇情的隱蔽性,如果玩家看到了各種指令的提示信息,地圖將會索然無味。 關閉指令方塊輸出信息(除非是/say這類的指令)使用/gamerule commandBlockOutput false就可以實現。

  • 庇護所/角斗場

使用壓力板或者絆線 (以安全城堡為例)設定進入城堡內的玩家為和平模式(對於不同區域視情況而定)。城堡大門可以有連接指令方塊的絆線,玩家一旦走過絆線(或壓力板),激活指令方塊,就會變為和平模式,這樣就可以創造一個「避難所」。反之,你可以用同樣的方法創造一個「困難模式區域」,當玩家進入會變為困難模式。

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

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

  • 「聯合」住宅

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

  • 出生地

使用 /spawnpoint 可以設定玩家出生地點。(應用十分廣泛,PVP地圖,RPG地圖等等)

  • 熔岩跑酷

之前的內容提到過,/gamerule keepInventory true可以在玩家死後保存背包物品。 在跑酷地圖的出發點設定一個這樣的指令方塊,就可以使掉落熔岩死亡的玩家不會丟失物品,同時記錄點可以用/spawnpoint來做。

  • 我要睡覺!

使用 /spawnpoint 可以直接設定出生點,但是要跳過白天就需要 /time set <時間> 指令,18000為夜晚(並非絕對,可以按喜好設定,不要少於12500),這樣就可以模擬出睡覺的效果了。(可用/time set 700 直接轉為白天,/spawnpoint指令和/time set 700配合不就能模擬睡覺了麼?)

  • 時間和天氣下的場景

比方說,你的地圖開始在一個寒冷的暴風雨之夜,你可以設定突然天晴了,外面有燦爛的陽光(光影mod麼?)!或者,如果你想開始一個光明的一天,想讓雨突然下起來又沒辦法?不要怕,有/weather指令。只需使用/weather,輸入就行了!你也可以使用/time set輸入:0是凌晨,6000是中午,12000是黃昏,18000是午夜。

  • 檢測世界是否切換到了和平模式

創建一個攻擊型生物,把它放在壓力板上。(請確保它會保持始終按下狀態,所以一定要確保它不能跳或走開)。做一個紅石電路,讓壓力板在沒有接收到紅石信號的時候激活指令方塊。指令方塊里設定一個消息,通知玩家的地圖由於難易度切換到了和平模式導致損壞,需要的怪物已經消失,請重新下載這個地圖。你甚至可以做一個隱形傳輸指令方塊,把那些故意切換到創造模式的玩家換成冒險模式後傳送到一間基岩屋內,並讓他不能使用/kill或/tp指令,並把他的重生點設在那個房子裡,讓他永生見不得光明!(單人的話,可以點「對局域網開放」,或用修改器編輯)

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

/say指令可以直接給玩家發送消息。用指令方塊將會更好,這樣你就不需要放很多的告示牌和編頁碼長到不行的書來告訴玩家遊戲規則. 你只需要把指令方塊放成一條線然後在中間鋪中繼器來弄各個語段之間的延遲(so the player isn't spammed)接着你就可以把那堆告示牌和放着書的儲物箱移走。

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

最後但並非最不重要,他可以更容易的建立一個任務系統。來讓我們的玩家開始進行廝殺。 他通過壓力板激活了RS NOR鎖存器 (所以他不能被再次激活) 然後一個有/say指令的指令方塊去滿足屠夫對玩家的要求。他需要去殺一隻 。 玩家到達站在石製壓力板上的豬,當豬死了時就會關閉. 所以,當玩家回到屠宰場時,他激活另一個電路,包含另一個RS或閂鎖和兩個帶有兩個指令的指令塊。首先,屠夫感謝玩家的「說」指令,另一個指令是「給」指令,玩家獲得獎勵。除此之外,別忘了使用@p指令,所以屠夫會說出玩家的名字。例如,如果指令塊設定為這樣做:/say 謝謝,@p.你幫了我很多殺了那頭豬。,頻道會說:「@」:謝謝,<name of the player>。你幫我殺了那頭豬。「這讓地圖變得更酷,看起來像是為玩家製作的,上面寫着他/她的名字!

建立商店[編輯 | 編輯原始碼]

通過使用 /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將經驗減去作為貨幣。在中括號內可以列出指令執行所需的最低經驗。

可以使用指令方塊創建出售任何物品的自定義村民。
例如: /summon villager ~-2 ~0 ~0 {Profession:3,CustomName:BLACKSMITH,CustomNameVisible:0,Offers:{Recipes:[ {maxUses:13,buy:{id:388,Count:5},sell:{id:283,Count:1,tag:{ench:[{id:16,lvl:9},{id:20,lvl:6}],display:{Name:Molten Gold Sword}}}},{maxUses:13,buy:{id:388,Count:1},sell:{id:280,Count:1,tag:{ench:[{id:16,lvl:5}],display:{Name:Whuppin Stick}}}},{maxUses:13,buy:{id:388,Count:2},sell:{id:369,Count:1,tag:{ench:[{id:16,lvl:5},{id:20,lvl:10}],display:{Name:Radioactive Whuppin Stick}}}},]}}

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

生怪磚[編輯 | 編輯原始碼]

Clock.png
此條目需要更新。
原因:以下部分內容在Java版1.13可能已經不受支持。

你可以通過 /setblock 指令放置生怪磚,例如: /setblock ~1 ~-1 ~0 mob_spawner{EntityId:Zombie,SpawnData:{Equipment:[{id:"minecraft:iron_sword",Count:1}]}} 會放置產生拿着鐵劍殭屍的生怪磚。幾乎所有除了玩家的實體都可以透過自定義生怪磚產生,包含了礦車、火球、箭、雪球、終界珍珠、飛濺藥水、煙火、點燃的TNT、掉落的沙、掉落的紅沙、掉落的礫石、畫、物品展示框、經驗球甚至是掉落物。

你可以把豬、牛或雞的生怪磚放置於村莊的屠夫家的後院,以便創造永恆的肉類來源,例如:/setblock ~1 ~-1 ~0 mob_spawner{EntityId:Chicken,MaxNearbyEntities:10,RequiredPlayerRange:16,SpawnCount:6,SpawnRange:2,MinSpawnDelay:50,MaxSpawnDelay:200,SpawnData:{Riding:{id:"Pig"}}} 此指令會放置生成"雞騎在豬上"的生怪磚,而且想要多少生物騎在另外一個生物上是沒有限制的,例如你可以放置一隻騎着雞的豬,那隻豬也騎着一隻牛,那隻牛也騎着一隻馬,那隻馬也騎着一隻蠹魚,同時那隻蠹魚也騎着一位村民,這就是"Farmer Brown"。 請注意,如果要使用 RequiredPlayerRange 標籤,那你必須同時使用 MaxNearbyEntities 標籤,同樣的事情也適用於MinSpawnDelayMaxSpawnDelay。最後,請注意,這兩個生怪磚範例指令中使用的y值是~-1,(假設玩家沒有飛行)意思是把生怪磚放在玩家下方一格處。

如果你沒有想要指定特別的玩家,可以使用 @a(所有玩家), @p(最近的玩家)或是 @r(隨機玩家)參數,而不是 <玩家名称>。請記住,你可以在玩家發出的指令中使用@p(最近的玩家)或 @s(自己)作為一個比輸入自己名字更好的替換,因為你對於自己來說最近的玩家將永遠是你。

一、基礎[編輯 | 編輯原始碼]

以下的指令會於X坐標加2的格子放置一個召喚殭屍生怪磚:

/setblock ~2 ~ ~ minecraft:mob_spawner{EntityId:Zombie}

下面的基礎指令包含了6種可設定參數:

/setblock ~ ~-1 ~-3 mob_spawner {EntityId:Skeleton,SpawnRange:4,RequiredPlayerRange:16,SpawnCount:4,MaxNearbyEntities:6,MinSpawnDelay:200,MaxSpawnDelay:800}

提醒:

  • 所有時間都是以「遊戲刻」計算的(1秒相當於20刻)200~800遊戲刻是10~40秒鐘。
  • 請記住,參數是一對的,如果參數沒有匹配,將無法正常工作。 SpawnRange需要RequiredPlayerRange工作,反之亦然,MinSpawnDelay需要MaxSpawnDelay工作,而SpawnCount需要MaxNearbyEntities工作。


  • 還有一種參數叫做Delay用於控制這次生怪到下次生怪時間的延遲,以遊戲刻為單位(1秒等於20遊戲刻),它會在參數MaxSpawnDelayMinSpawnDelay 設定的值中隨機選取一個數。
  • 若坐標設定為~ ~-1 ~-3會以指令方塊為基準向Y坐標向下1個方塊,向Z坐標減少三個方塊處放置生怪磚,它有可能會將生怪磚放置於地底。提醒你,生怪磚的SpawnRange參數僅對水平方向有效,而不是垂直方向。在垂直方向,它只會在相同的高度生成生物,或者低1或者高1,所以將之嵌入地面雖然會使生成面積縮減2/3,但對將它隱藏起來是有幫助的。自然地,其生成高度減少了1/3,因為它們的高度比地面高1而不是2。
  • 以上所使用的值均為預設值。

二、自定義生物[編輯 | 編輯原始碼]

下一步要做的是修改生成數據。生成數據告訴生怪磚你想要一個非標配的怪物,比如帶有鑽石劍鎖鏈頭盔殭屍:

/setblock ~ ~1 ~ mob_spawner{EntityId:Zombie,SpawnData:{Equipment:[{id:"diamond_sword",Count:1},{},{},{},{id:"minecraft:chain_helmet",Count:1}]}}

使用 ~ 代替坐標的值,由於使用了上一個示例中的這6個參數,因此它們都是預設值。
注意:那五個槽順序分別為Hand(手)、Boots(靴子)、Legs(護腿)、Chest(胸甲)和Helmet(頭盔) 注意你必須也指定空的槽,除非它以後都是空的槽,例如,若只要指定武器,後面四個槽可以省略;但如要指定頭盔,五個槽都必須打出來;若要指定靴子和護腿,第一、二和三的槽都必須顯示,四和五的槽可以省去。
請記住,儘管是損壞的頭盔,只要戴上它,那些會因陽光而燃燒的生物,就可以存活。
雖然大多數的代碼中允許你忽略count標籤,但是count標籤本身十分重要。一個沒有count標籤的物品是一個零棧(更通俗的叫法是「幽靈物品」)。幽靈物品會在玩家第一次使用時消失(which is a failure),但怪物可以不受影響地使用幽靈物品(hence why codes get away with leaving it out sometimes)。如果怪物掉落了這些物品,拾起它們的玩家也無法使用這些物品,因此強烈建議使用count標籤。

下一個自定義怪物是一個骷髏,它持有火焰附魔的,戴着保護II附魔的自定義生物頭顱蜘蛛,需要網絡連接,否則只會顯示Steve頭顱),並且騎在骷髏馬上。

/setblock ~2 ~1 ~2 spawner replace {EntityId:Skeleton,SpawnData:{Equipment:[{id:261,Count:1,tag:{ench:[{id:50,lvl:1}]}},{},{},{},{id:397,Count:1,Damage:3,tag:{ench:[{id:0,lvl:2}],SkullOwner:MHF_Spider}}],Riding:{id:"EntityHorse",Type:4,Tame:1,SaddleItem:{id:329,Count:1,Damage:0}}}}

嚴格來說,骷髏僅僅是坐在馬上,因為骷髏的移動取決於它騎着的馬,而馬並不會與你敵對。注意不要把殭屍放在馬背上,它們的攻擊範圍不夠,因此只能坐在馬上什麼也不干。所幸無論馬如何移動,骷髏都可以進行射擊。
至於馬本身,它的類型為4(骷髏馬),馴服被設定為1(是),並裝備有一個馬鞍(and the fact that they make us specify which saddle hints that they may eventually have more than one type)。從技術層面來說,你可以設定一個多級騎乘的生物,但你很快就會意識到這麼做並不明智。

三、SpawnPotentials標籤[編輯 | 編輯原始碼]

我們可以在生怪籠中使用SpawnPotentials標籤來生成多種實體。當計時器重置時(生成前一個生物的後一秒鐘),它會隨機選擇一個標籤進行生成。由於這些代碼包含多個生物,所以它們往往是相當長的代碼。多虧了一位YouTuber(Dragnoz),我們知道了代碼可以被「分解」的事實(指令方塊忽略換行符,因此,您可以開始一個新的行來使一個部分在哪裡結束、另一個部分在哪裡開始變得更清楚明白,而且這不會破壞您的代碼)。以下是一個SpawnPotentials代碼的例子,看起來更加「賞心悅目」:

這個指令包含了許多代碼,因為它實際上是6個獨立的生物。其中有:

  • SpawnPotentials標籤前:最前面的部分,出現一次之後就不會再出現了。如果希望它再次出現,你需要將之再次包含在SpawnPotentials的部分中。這一生物是一個隨機的穿着藍色染色皮革褲子、綠色染色皮革上衣,拿着一把木劍的殭屍。
  • 同樣是一隻殭屍,只是這隻殭屍的木劍耐久度只有3。
  • 接下來一隻看起來像個忍者。它是一隻骷髏,但拿着一把鐵劍。它所有的護甲都染上了忍者般的黑色。帶劍的骷髏能比殭屍更快地縮短與你的距離,所以要小心。
  • 一隻有石劍和鎖鏈護甲的殭屍。其盔甲上附有保護II。
  • 接下來是有一把金劍,一身金護甲,頭上套着一個南瓜,並且着了火的殭屍。南瓜上附有保護II和火焰保護X,不顧一切地試着站起來並威脅玩家超過5秒。雖然這是有效的,不過如果玩家選擇遠離,南瓜頭先生就會被燒死。噢,它的劍也像是着了火的樣子。
  • 有鐵劍和鐵護甲的殭屍。劍上附有鋒利II,盔甲上附有保護II。
  • 最後一隻生物,一隻Fake HB,擁有附魔等級很高的鑽石護甲(附有火焰保護IV和掉落保護IV的鑽石靴子,穿着附有爆炸保護IV的鑽石褲子,附有保護IV的鑽石胸甲,以及保護IV、火焰保護IV,爆炸保護IV和水下呼吸III的盔甲)以及一把附有鋒利IV,擊退IV,節肢剋星IV,掠奪III和耐久III的鑽石鎬。除此之外,它還獲得了CustomNameVisible(設定為1表示yes),CustomName,以及PersistenceRequired(設定為1表示yes)。最後一個屬性將阻止它消失,雖然它可以被正常手段所殺死(如果你能擊敗這一身鑽石套和IV級附魔的話)。幸運的是,它比較少見(見下文)。

除了那個忍者,這裡一共有5種不同的劍和護甲。注意Weight標籤,其需要在每個SpawnPotentials中的生物名稱後使用。這決定了該生物被選中並生成的機率。具體的數字沒有什麼意義,有意義的只是數字之間的比例。例如,如果你想讓所有預置生物等概率生成,則可以將每個Weight都設定為1,將它們全部改成8也沒有什麼不同(它們之間的比例仍然是相同的),但是將除了某一個之外的所有其他Weight更改為8則會使其中1/8的可能性與其餘的1/8相同。在這段代碼中,預設值是4,而忍者只有2(使它被選中的可能性減半),Fake HB只有1(使它被選中的可能性減半。感謝上帝!)。

四、可騎乘生物[編輯 | 編輯原始碼]

將生物的頭設定為礦車或船,則可以騎乘它們。指令相當簡單:

/setblock ~ ~1 ~ spawner {EntityId:MinecartRideable(or Boat), SpawnData:{Riding:{id:<Entity>}}}

提示:

  • 有些生物不能用生怪磚生成,比如boss們和鐵魔像。添加礦車也不會影響它們。
  • 具有射擊能力的敵對性怪物可以並且將使用它們來對付生存玩家。請注意。
  • 地獄幽靈不能騎乘。礦車將卡在它們的腦袋裡,這對任何人都毫無用處。
  • 終界使者不能四處走動,但可以通過投擲或射擊讓它們傳送(比如雪球)。
  • 山貓是速度最快的怪物之一,因為他們想要逃離你。它們也可以通過指向你想去的地方來控制。
  • 蜘蛛是唯一在騎乘時會減速的生物。
  • 史萊姆和它的近親岩漿立方怪不能改變大小。

在更少的指令方塊和遞歸中使用更多的指令[編輯 | 編輯原始碼]

有幾種方法可以將指令組組合為一個指令。
  • 使用以下指令集進行遞歸:

/scoreboard objectives add counter dummy
/scoreboard players set target_count counter <target count> /execute if score count counter < target_count counter <chained command>
/execute unless score count counter < target_count counter run scorebard objectives remove counter
/scoreboard players add count counter 1

  • 要運行多個指令,請在觸發鐵軌上生成一個指令方塊礦車,該指令方塊礦車騎在另一個指令方塊礦車車上,指令順序相反。還有一些指令稱為一個指令工具,使用這種策略。
參見:函數

使用地圖作為通關依據(scroll)[編輯 | 編輯原始碼]

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

優點

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

缺點

  • 滾動只能有一個目的,即如果不使用複雜的數據值,就不能進行傳送滾動和強度滾動。
  • 玩家在刪除地圖之前激活地圖時可能會看到地圖動畫。
  • 玩家在遊戲過程中不能使用地圖項目 (顯示短信、路徑、繪圖…)。

機制建設

玩家可以更改項目的顯示名稱,讓玩家更好地了解對象並使用工具提示顯示。使用以下指令為玩家提供自定義命名地圖: /give <player> map{display:{Name:"<displayName>",Lore:["<tooltip>"]}}

  • player:你想接觸的玩家 (@p, @a[arguments],...).
  • displayName: 在熱欄中滾動或用鼠標懸停項目時顯示的名稱。
  • tooltip: 懸停項目名稱下方的文本。

檢測地圖的激活

Minecraftscroll.jpg

  • 這兩個漏斗形成一個紅石時鐘。您可以使用顯示的其他時鐘here.
  • 指令方塊 1 包含 /give 上面一節中描述的指令。如果玩家不希望滾動在被激活後回來,它可以被取消。
  • 指令方塊 2 包含庫存檢查指令:

/clear <player> filled_map

  • 指令方塊 3 是成功時的輸出。你可以做任何想要做的事情:比如基於玩家某種效果,傳送玩家到某處,等等。你也可以將輸出連接到門,活塞,或是其他接收紅石信號的方塊。

進階

/clear 命令可以检验其他可交互的物品:
  • 在玩家剛喝過藥水時檢驗玻璃瓶
  • 在收起釣線時檢驗釣竿/clear指令的語法中,在物品名後包含另一個參數,是物品的耐久度:

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

更多資源[編輯 | 編輯原始碼]

Feare的指令方塊教程
Dragnoz的YouTube教程提供了很多使用數據標籤的可能性
數據標籤的文本教程

另見[編輯 | 編輯原始碼]