Minecraft Wiki

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

了解更多

Minecraft Wiki
Advertisement

Template:Translation:未知參數。 在製作地圖時需要一些觸發指令的裝置,讓玩家無需自己去輸入放置指令來觸發。本教學介紹幾種觸發指令的方式。

自訂指令類

gamerule+stats+scoreboard

使用gamerule作為自訂指令,玩家使用時輸入/gamerule 自定义规则名 检测时对应的数值

第一步:自訂遊戲規則
確定好自訂的規則名後,直接輸入/gamerule 自定义规则名 任意数字
第二步:計分板相關準備
首先輸入/scoreboard objectives add 自定义变量名 dummy,用來儲存等會傳過來的值
接下來有兩種辦法儲存變數的值。
用虛擬實體,輸入/scoreboard players set 虚拟实体名 自定义变量名 0。這個虛擬實體只提供名字,不會被kill影響。
用盔甲座,先在電路區域放置好盔甲座並把盔甲座命名,接著輸入/scoreboard players set @e[name=盔甲架名字] 自定义变量名 0
第三步:用stats將gamerule的值輸入計分板
放置一個指令方塊,輸入指令gamerule 自定义规则名。這個指令將查詢目前規則的值。
打開F3除錯介面,記下這個指令方塊的座標,輸入/stats block x坐标 y坐标 z坐标 set QueryResult 虚拟实体名或盔甲架名 自定义变量名。這條指令將把指令方塊gamerule查詢到的值返回到計分板上。
啟動重複指令方塊,使其不斷刷新查詢的值。此時stats建立的連接將把查詢到的值返回計分板。
第四步:電路檢測計分板值並觸發指令
提示玩家輸入gamerule 自定义规则名 数值,數值為你想檢測的數值。
檢測時:
如果用盔甲座,高頻接入execute,配合選擇器的計分板分數探測(@e[score_自訂變數名_min=數值])會方便一些,如果檢測的值成立則用fill/setblock紅石方塊等方法觸發電路。
如果用虛擬實體,高頻接入指令/execute at @s if score 虚拟实体名 自定义变量名 matches <范围> ...,數值為你想檢測的數值,後接setblock放置紅石方塊或加入比較器。在1.9後可以用條件制約的方塊而避免比較器延遲,詳見教學/條件結構電路
如果需要復位,就在指令電路中對自訂規則的值設成0。
示例
  1. /gamerule bomb 0,使用/gamerule bomb查詢可以看到bomb = 0的提示。
  2. /scoreboard objectives add vbomb dummy
  3. /scoreboard players set fakename vbomb 0
  4. 兩條指令先設定名為vbomb的變數,再給fakename這個虛擬實體設定vbomb變數的值為0。
  5. gamerule bomb放入位於<200,50,-100>的指令方塊中。用高頻電路連接。
  6. 輸入/stats block 200 50 -100 set QueryResult fakename vbomb
  7. 高頻連接/scoreboard players test fakename vbomb 1 1,用比較器連接好指令電路。
  8. 提示玩家輸入/gamerule bomb 1開始某樣操作。
  9. 在指令電路中放置/gamerule bomb 0的指令方塊。完成。

trigger+scoreboard

使用trigger需要將計分板變數交給玩家使用,所以需要先使用高頻或低頻電路給予玩家變更計分板變數的權力。

第一步:計分板相關準備
建立計分板變數scoreboard objectives add 自定义变量名 trigger。應當指出的是這裡的準則不是dummy而是trigger。
高頻接入scoreboard players enable @p或@a 自定义变量名選擇器可以按需選擇。這條指令讓指定玩家能修改某個變數的值。
第二步:使用與檢測
提示玩家輸入trigger 自定义变量名 set 数值
最後在指令方塊裡打上/execute at @s if entity @a[score={"自定义变量名"=...] ...

主動互動類

clear+空白地圖

這種方法的原理是讓玩家打開空白地圖,然後高頻連接clear地圖的指令方塊,比較器連接並觸發電路,同時在電路中安排返還空白地圖的指令。 但是存在局限性,所以一般用於一些小遊戲中。

相關指令:clear @p filled_mapgive @p map

雪球拋擲+scoreboard相關判據

輸入指令/scoreboard objectives add 变量名 stat.useItem.minecraft.snowball,即可統計雪球拋出的次數。

透過scoreboard的test項觸發電路,然後用scoreboard相關指令復原計分板值。

testforblock檢測方塊狀態

有些機關,透過檢測方塊狀態觸發指令。

檢測控制桿狀態:testforblock x y z lever 相关数据值,如檢測朝向z軸正向的控制桿,填入11,則當控制桿被拉下,在外觀上看沒有電路,也能觸發機關。

檢測展示框的旋轉狀態也可以。詳見物品展示框

告示牌點擊

這裡提供一份模板,使用到了JSON文字

指令中standing_sign是立著的告示牌,wall_sign是牆上的告示牌,隨需要選擇。也可以透過/data merge block修改告示牌內容。

/setblock x y z minecraft:standing_sign或minecraft:wall_sign replace
{Text1:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"''第一条命令''\"},text:\"''提示信息''\"}",
Text2:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"''第二条命令''\"}}",
Text3:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"''第三条命令''\"}}",
Text4:"{\"clickEvent\":{\"action:run_command\",\"value\":\"''第四条命令''\"}}"}

被動探測類

漏斗低頻+範圍檢測到實體

搭建一個朝向連通的漏斗組,並在裡面放入物品,用比較器連通其中一個漏斗,就製作好了漏斗低頻。

/execute if entity中比較器填入distance的項,檢測附近的玩家,即可實現一些被動觸發的機關。(部分指令無法在目前基岩版實現,如計分板中目前只能使用dummy虛擬類型,觸發可能因此受限)

善用紅石元件

陷阱儲物箱,絆線與絆線鉤都是用於機關設計的,善用他們可以省去很多搭建電路的麻煩。

Advertisement