NPC是Minecraft基岩版可以自訂對話框的互動實體,必須用指令生怪蛋獲得。一般情況下,玩家可以自訂按鈕,而按鈕按下後可以自訂要執行的指令。
而隨著/dialogue
指令的加入,玩家可以操控、修改NPC顯示的對話框,因此能夠整合到Add-On中當作引導角色。如果修改資源包UI的json檔案的話,要做成
像伺服器的介面也是有可能的。
用途舉例:如果你的Add-On有很多武器,創造背包又顯得太雜亂,這時讓玩家透過某個物品打開對話框,按按鈕拿東西會比打指令直覺許多。
本文範例會新增一個物品,使用時會執行/dialogue
指令,讓隱形的NPC顯示對話框,玩家按下按鈕就能進行傳送,這些都能透過Add-On事先定義好。文章後面可以下載我製作的範本檔案。
1. /dailogue指令用法#
這個指令用於開啟附近NPC指定的對話框,sceneName
下一段落會說明。
/dialogue open npc: target> player: target [sceneName:string]
這個指令用於修改附近NPC指定的對話框,但要切換對話框的話用open就好了。
/dialogue change npc: target sceneName:string [player: target]
按下的指令可以使用特殊的選擇子@initiator
,這樣能夠確保執行指令的對象都是指向開啟對話框的玩家。
2. 建立NPC對話框#
NPC對話框的檔案儲存在行為包的dialogue
資料夾,這個範本檔案叫做teleport_dialog.json
。
{
"format_version": "1.17",
"minecraft:npc_dialogue": {
"scenes": [
//第一個對話框
{
"scene_tag": "menu1",
"npc_name": "傳送",
"text": "選擇傳送選項",
"on_open_commands": [
"/say 你好"
],
"on_close_commands": [
"/say 再見"
],
"buttons": [
{
"name": "世界原點",
"commands": [
"/tp @initiator 0 128 0"
]
},
{
"name": "往上或往下",
"commands": [
"/dialogue open @e[type=npc,c=1] @initiator menu2"
]
}
]
},
//第二個對話框
{
"scene_tag": "menu2",
"npc_name": "傳送到哪裡?",
"text": "選擇一個傳送點",
"on_open_commands": [
"/say 你好"
],
"on_close_commands": [
"/say 再見"
],
"buttons": [
{
"name": "返回上一個介面",
"commands": [
"/dialogue open @e[type=npc,c=1] @initiator menu1"
]
},
{
"name": "往上",
"commands": [
"/tp @initiator ~ ~+64 ~"
]
},
{
"name": "往下",
"commands": [
"/tp @initiator ~ ~-64 ~"
]
}
]
}
]
}
}
“screentag"就是指令會用到的screenname。上面的程式有二個screentag,代表是不同的對話框。
“texts"是顯示的文字。
“npc_name"是NPC的名字,可以改寫成:
"npc_name": {
"rawtext": [
{
"translate": "entity.endermite.name"
}
]
}
這樣就能透過texts/
的.lang
檔案來進行翻譯,這個範例會把名字變成終界蟎。
“on_open_command"是打開對話框會執行的指令。
“on_close_command"是關閉對話框會執行的指令。
3. 範例:生成隱形的NPC,並讓玩家透過自訂物品開啟介面#
召喚NPC的指令#
行為包的functions/setup.mcfunction
用於召喚NPC,會生成一個NPC在世界暗處,僅當作開啟面板的媒介。
如果tickingarea無效,那就只能把NPC改生成在玩家旁邊測試。
tickingarea add 0 1 0 0 2 0
summon npc "§r" 0 1 0
新增物品#
在行為包的/items
新增teleport_menu.json
:
{
"format_version": "1.16.100",
"minecraft:item": {
"description": {
"identifier": "dialog:teleport_menu",
"category": "items"
},
"components": {
"minecraft:on_use": {
"on_use": {
"event": "open_menu",
"target": "self"
}
},
"minecraft:foil": true,
"minecraft:icon": {
"texture": "ender_pearl"
},
"minecraft:display_name": {
"value": "傳送面板"
}
},
"events": {
"open_menu": {
"run_command": {
"command": [
"dialogue open @e[type=npc,c=1] @s menu1"
],
"target": "player"
}
}
}
}
}
進入Minecraft遊戲後先輸入/function setup
,接著當玩家在生存模式右鍵使用這個物品時,對話框就會打開
按 這裡下載本文所使用的範本檔案。
參考資料#
這篇文章參考自 Bedrock Wiki。