快轉到主要內容

Add-On 自訂Minecraft NPC的對話框 & dialogue指令用法

分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On Minecraft World Minecraft Command
🗓️ 民國110年 辛丑年
✍ 切換正體/簡體字
目錄

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

相關文章

Minecraft基岩版每個世界的Add-on預設都是獨立的
分類   遊戲攻略 Minecraft
標籤   Minecraft World Minecraft Add-On
Minecraft Add-On 實體 Properties的用法
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On
【自製模組】少女終末旅行,Sd.Kfz 2半履帶摩托車(Minecraft基岩版軍事Add-On)
分類   遊戲攻略 Minecraft 繪圖創作
標籤   Minecraft Add-On Girls Last Tour Heer

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。