在製作地圖時需要一些觸發指令的裝置,讓玩家無需自己去輸入放置指令來觸發。本教學介紹幾種觸發指令的方式。
自訂指令類
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紅石方塊等方法觸發電路。
- 如果用虛擬實體,高頻接入指令
/scoreboard players test 虚拟实体名 自定义变量名 数值 数值,數值為你想檢測的數值,兩個數值需要一樣。最後用比較器輸出即可。在1.9中可以用條件制約的方塊而避免比較器延遲,詳見教學/條件結構電路。
- 如果用虛擬實體,高頻接入指令
- 如果需要復位,就在指令電路中對自訂規則的值設成0。
示例
/gamerule bomb 0,使用/gamerule bomb查詢可以看到bomb = 0的提示。/scoreboard objectives add vbomb dummy/scoreboard players set fakename vbomb 0。- 兩條指令先設定名為vbomb的變數,再給fakename這個虛擬實體設定vbomb變數的值為0。
- 將
gamerule bomb放入位於<200,50,-100>的指令方塊中。用高頻電路連接。 - 輸入
/stats block 200 50 -100 set QueryResult fakename vbomb。 - 高頻連接
/scoreboard players test fakename vbomb 1 1,用比較器連接好指令電路。 - 提示玩家輸入
/gamerule bomb 1開始某樣操作。 - 在指令電路中放置
/gamerule bomb 0的指令方塊。完成。
trigger+scoreboard
使用trigger需要將計分板變數交給玩家使用,所以需要先使用高頻或低頻電路給予玩家變更計分板變數的權力。
第一步:計分板相關準備
- 建立計分板變數
scoreboard objectives add 自定义变量名 trigger。應當指出的是這裏的準則不是dummy而是trigger。
- 高頻接入
scoreboard players enable @p或@a 自定义变量名,選擇器可以按需選擇。這條指令讓指定玩家能修改某個變數的值。
第二步:使用與檢測
- 提示玩家輸入
trigger 自定义变量名 set 数值。
- 最後在指令方塊裡打上
/scoreboard players test @a "自定义变量名" 1 1
主動互動類
clear+空白地圖
這種方法的原理是讓玩家打開空白地圖,然後高頻連接clear地圖的指令方塊,比較器連接並觸發電路,同時在電路中安排返還空白地圖的指令。
但是存在局限性,所以一般用於一些小遊戲中。
相關指令:clear @p filled_map
give @p map
雪球拋擲+scoreboard相關判據
輸入指令/scoreboard objectives add 变量名 stat.useItem.minecraft.snowball,即可統計雪球拋出的次數。
透過scoreboard的test項觸發電路,然後用scoreboard相關指令復原計分板值。
testforblock檢測方塊狀態
有些機關,透過檢測方塊狀態觸發指令。
檢測控制桿狀態:testforblock x y z lever 相关数据值,如檢測朝向z軸正向的控制桿,填入11,則當控制桿被拉下,在外觀上看沒有電路,也能觸發機關。
檢測展示框的旋轉狀態也可以。詳見物品展示框。
告示牌點擊
這裏提供一份模板,使用到了Json文字,關於clikeEvent的使用詳見教學/Json文字。
指令中standing_sign是立著的告示牌,wall_sign是牆上的告示牌,隨需要選擇。
/setblock x y z minecraft:standing_sign或minecraft:wall_sign 0 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:\"第四条命令\"}}"}
被動探測類
漏斗低頻+範圍testfor
搭建一個朝向連通的漏斗組,並在裏面放入物品,用比較器連通其中一個漏斗,就製作好了漏斗低頻。
testfor中比較器填入r=...的項,檢測附近的玩家,即可實現一些被動觸發的機關。
善用紅石元件
陷阱儲物箱,絆線與絆線鈎都是用於機關設計的,善用他們可以省去很多搭建電路的麻煩。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||