NPC 对话

NPC 对话

在你的Hytale世界中创建互动式NPC对话。按F键打开自定义多页面对话框,支持导航、持久存储、命令执行、自定义按钮文本、强制剧情推进和实体状态控制。

游戏玩法

NPC Dialog(NPC对话系统)

支持服务器 - https://discord.gg/DRxwt8Qg2W

一个为Hytale服务器设计的强大且直观的NPC对话系统,让你能够与世界中的任何实体创建互动对话。

版本 [1.2.0] - 2026-01-17 现已发布!

描述

NPC Dialog 是一个全面的插件,使服务器管理员能够为其Hytale世界中的任何实体创建丰富的多页面对话系统。玩家可以通过按下 F 键与NPC互动,打开一个美观的自定义用户界面,显示对话内容,并支持在多页面之间导航。

非常适合任务系统、剧情驱动型服务器、互动教程,或者任何你希望实体与玩家进行有意义的对话的场景。

额外用途

NPC Dialog 不仅限于故事或任务NPC——它还可以用作服务器的通用信息展示系统:

  • 帮助与教程NPC——以互动、易读的界面展示 /help 类信息
  • 服务器规则NPC——让玩家逐页阅读服务器规则,而不是在聊天中刷屏
  • 指南与提示——解释服务器机制、等级或自定义功能
  • 新玩家引导——为新玩家创建分步介绍
  • 信息中心NPC——用于常见问题解答、指令或公告的集中NPC

功能

核心功能

  • 交互式NPC系统——将对话链接到世界中的任何实体
    • 冻结状态(实体无法移动)
    • 非敌对状态(实体无法攻击)
    • 无敌状态(实体无法受到伤害)
    • 待机动画选择,带有可滚动的动画列表,显示每个实体模型的所有可用动画
    • 自定义互动提示文本(例如:"按下 F 打开大酒馆宝箱")
  • 多页面对话——创建具有多个页面的分支对话
  • 自定义按钮——玩家对话界面中的两个完全可自定义按钮(自定义按钮 1 和自定义按钮 2),位于导航按钮上方
  • 对话文本格式化——在NPC名称、对话标题和对话内容中使用标记:{b}{i}{m}{#RRGGBB}{#RGB},以及 {/} 来结束格式化。示例:Hello {b}粗体{/} 和 {#ff0000}红色{/} 文本。
  • 玩家互动——玩家按下 F 键与链接实体互动
  • 持久化存储——所有NPC数据以JSON格式保存,并在服务器重启后保留
  • 自动恢复——服务器重启或实体加载时自动恢复互动
  • 权限支持——使用管理指令需要 npcdialog.admin 权限(与 LuckPerms 兼容)
  • 数据迁移——插件数据文件夹从 _NPC Dialog 更改为 Hyronix_NPC Dialog,首次启动时自动迁移

用户界面

管理面板 - 美观、直观的图形界面,用于创建和管理NPC及对话页面

  • 使用自定义名称和标题创建新的NPC
  • 编辑现有NPC及其属性
  • 为每个NPC添加多个对话页面
  • 通过在世界中选择实体来将NPC链接到实体
  • 删除NPC并自动移除其互动
  • 页面选择下拉菜单,便于编辑
  • 为每个页面自定义"下一页"按钮文本
  • 为每个页面自定义"上一页"按钮文本
  • 为每个页面自定义"关闭"按钮文本
  • 为"下一页"和"关闭"按钮设置指令执行
  • 切换"禁止关闭直至最后一页"选项
  • 为每个页面启用/禁用"上一页"按钮的可见性
  • 为每个页面启用/禁用自定义按钮 1 和自定义按钮 2
  • 配置自定义按钮 1 和自定义按钮 2 的文本和指令
  • 直接从管理界面切换实体状态(冻结、非敌对、无敌、待机动画)
  • 待机动画选择 - 可滚动动画列表,显示所选实体模型的所有可用动画,并高亮显示选中项
  • 为每个NPC设置自定义互动提示文本
  • 改进的布局和滚动行为,提升可用性

玩家对话界面 - 清晰、易读的界面

  • 居中的NPC名称和标题
  • 可滚动的多行对话内容
  • 两个可自定义按钮(自定义按钮 1 和自定义按钮 2),位于导航按钮上方
  • 导航按钮(上一页/下一页),用于多页面对话
  • 可自定义按钮文本(上一页、下一页、关闭、自定义按钮 1、自定义按钮 2)
  • 关闭按钮(可隐藏,直到最后一页才显示)

高级功能

  • 指令执行系统 - 当玩家与对话按钮互动时执行服务器指令
    • 下一页按钮指令:当玩家点击"下一页"按钮时运行指令(例如:/help)
    • 关闭按钮指令:当玩家关闭对话时运行指令(例如:/spawn、/warp spawn)
    • 自定义按钮 1 指令:当玩家点击自定义按钮 1 时执行指令
    • 自定义按钮 2 指令:当玩家点击自定义按钮 2 时执行指令
    • 指令选择器:支持指令中的 @p 和 @s 选择器
      • @p = 最近的玩家(距离指令执行点最近的玩家)- 自动替换为点击按钮的玩家
      • @s = 自身(执行指令的实体)- 自动替换为点击按钮的玩家
      • 两个选择器在此上下文中均被替换为玩家名称,因此功能相同
      • 示例:"give @p Plant_Fruit_Apple --quantity=1" 将物品给予点击按钮的玩家
    • 管理指令:如 /give、/tp、/effect、/summon 等指令自动以控制台身份执行,确保权限正确
    • 玩家指令:普通指令以点击按钮的玩家身份执行
  • 配置文件:
    • playerPermissionCommands.json - 将玩家执行的指令映射到权限节点。此处列出的指令在执行时会通过 LuckPerms 临时授予权限,使玩家能通过NPC互动使用受限指令
    • consoleCommands.json - 定义应以控制台身份执行的指令(绕过玩家权限)。此列表中的指令通过NPC按钮触发时,将以完整控制台权限运行,适用于 /give、/tp 等管理指令
  • 自定义按钮文本 - 将"上一页"、"下一页"、"关闭"、"自定义按钮 1"和"自定义按钮 2"的按钮文本更改为你想要的任何内容(例如:"继续"、"接受任务"、"前进")
  • 自定义互动提示 - 设置当玩家看向链接实体时显示的自定义互动提示文本(例如:"按下 F 打开大酒馆宝箱")
  • 禁止关闭直至最后一页 - 强制玩家阅读所有对话页面后才能关闭对话(非常适合剧情驱动型服务器和教程)
  • 启用/禁用上一页按钮 - 控制"上一页"按钮是否在每个页面显示(适用于线性剧情推进,防止玩家回退)
  • 启用/禁用自定义按钮 - 为每个页面切换自定义按钮 1 和自定义按钮 2 的可见性
  • 实体状态管理 - 直接从管理界面切换实体状态(冻结、非敌对、无敌、待机动画)
  • 待机动画选择 - 从可滚动列表中为每个实体模型选择特定的待机动画,显示所有可用动画
  • 多行内容 - 支持长对话文本并自动滚动
  • 实体链接 - 使用游戏内选择将对话链接到任何现有实体
  • 跨世界支持 - 在你的服务器所有世界中工作
  • 智能互动管理 - 自动添加/移除互动组件
  • 安全删除 - 删除NPC时正确清理互动
  • 错误预防 - 防止与已删除NPC互动时发生崩溃

指令

| /npcdialog | 打开管理NPC和对话的管理界面 | 需要 npcdialog.admin 权限 |

使用指南

创建NPC对话

  1. 打开管理面板:在游戏中运行 /npcdialog(需要 npcdialog.admin 权限)
  2. 创建NPC:
    • 在"NPC名称"字段中输入NPC名称
    • 在"NPC标题"字段中输入标题(可选)
    • 设置自定义互动提示文本(可选,例如:"按下 F 打开大酒馆宝箱")
    • 点击"创建NPC"
  3. 添加对话内容:
    • 在"对话内容"字段中输入对话文本(支持多行)
    • 可选:自定义"下一页按钮文本"(默认为"Next")
    • 可选:自定义"上一页按钮文本"(默认为"Previous")
    • 可选:自定义"关闭按钮文本"(默认为"Close")
    • 可选:添加"下一页按钮指令",当玩家点击"下一页"时执行
      • 可以在指令中使用 @p 或 @s 选择器(例如:"give @p Plant_Fruit_Apple --quantity=1")
      • @p 和 @s 会自动替换为点击按钮的玩家名称
    • 可选:添加"关闭按钮指令",当玩家关闭对话时执行
      • 可以在指令中使用 @p 或 @s 选择器(例如:"tp @p 100 64 200")
      • 管理指令(give、tp、effect 等)自动以控制台身份执行,确保权限正确
    • 启用/禁用自定义按钮 1 和自定义按钮 2
    • 配置自定义按钮 1 和自定义按钮 2 的文本和指令
    • 切换"禁止关闭直至最后一页",强制玩家阅读所有页面
    • 切换"在对话中显示上一页按钮",启用/禁用"上一页"按钮
    • 点击"保存NPC"保存第一页
  4. 配置实体状态(可选):
    • 切换"冻结"以防止实体移动
    • 切换"非敌对"以防止实体攻击
    • 切换"无敌"以防止实体受到伤害
    • 切换"待机动画"以启用待机动画
    • 从可滚动的动画列表中选择特定的待机动画(显示所选实体模型的所有可用动画)
  5. 链接到实体:
    • 在实体列表(左侧面板)中选择要链接的实体
    • 该实体将自动链接到所选NPC
  6. 添加更多页面(可选):
    • 从"选择页面"下拉菜单中选择要编辑的页面
    • 使用"添加页面"按钮添加新页面
    • 在玩家界面中使用"上一页/下一页"按钮在页面间导航

玩家互动

  • 玩家只需看向链接实体并按下 F 键即可互动
  • 自定义互动提示文本(如果设置)会在看向实体时显示
  • 对话界面打开,显示NPC的名称、标题和对话内容
  • 玩家可以使用位于导航按钮上方的自定义按钮 1 和自定义按钮 2(如果启用)
  • 玩家可以使用"上一页/下一页"按钮在页面间导航(按钮文本可自定义)
  • 如果启用了"禁止关闭直至最后一页",玩家必须到达最后一页才能关闭对话
  • 为"下一页/关闭/自定义"按钮配置的指令会在点击时自动执行

示例用例

任务发布NPC

  • 创建一个多页面的任务介绍
  • 使用"禁止关闭直至最后一页"确保玩家阅读完整任务
  • 在最后一页将"下一页按钮指令"设置为 "quest accept"(不要使用"/")
  • 或者使用 "give @p Quest_Item_1 --quantity=1" 在接受任务时给予任务物品
  • 将"下一页"按钮文本自定义为"接受任务"
  • 使用自定义按钮 1 作为"查看奖励",配置指令显示奖励信息
  • 设置自定义互动提示:"按下 F 接受任务"

教程NPC

  • 创建分步教程页面
  • 禁用"上一页"按钮以强制线性推进
  • 使用指令执行在特定步骤传送玩家或给予物品
    • 示例:"tp @p 100 64 200" 传送点击按钮的玩家
    • 示例:"give @p Tutorial_Book --quantity=1" 给予玩家物品
  • 使用自定义按钮 1 作为"跳过教程"选项
  • 禁止关闭直到教程完成
  • 启用冻结状态使教程NPC保持原地
  • 从动画列表中选择特定的待机动画

信息NPC

  • 创建常见问题解答或服务器规则页面
  • 允许玩家使用"上一页/下一页"按钮自由导航
  • 使用自定义按钮 1 作为"打开商店"或自定义按钮 2 作为"传送至出生点"
  • 使用"关闭按钮指令"在完成后将玩家传送回出生点
    • 示例:"tp @p 0 64 0" 传送关闭对话的玩家
  • 设置自定义互动提示:"按下 F 查看服务器规则"

配置文件

插件在插件数据文件夹中创建两个配置文件,用于高级指令管理:

playerPermissionCommands.json - 将玩家执行的指令映射到LuckPerms权限节点。当此处列出一个指令时,插件会在执行时通过LuckPerms临时授予玩家指定的权限。这使玩家可以通过NPC互动使用受限指令,而无需永久权限。

示例配置: { "playerPermissionCommands": { "warps": "warp.list", "spawn": "spawn.use" } }

consoleCommands.json - 定义应以控制台身份执行的指令(而不是以玩家身份)。此列表中的指令将以完整控制台权限运行,绕过玩家权限检查。这对于通过NPC按钮触发时应起作用的管理指令非常有用。

示例配置: { "consoleCommands": [ "give", "tp", "teleport", "kill", "gamemode" ] }

分发声明: 未经 明确且可见地标明 Hyronix Studios 和模组名称,不得重新分发此模组或将其与第三方设置捆绑。否则,不允许重新分发。