主题
NPC 配置 npcs.yml
npcs.yml 定义了副本中的 NPC 角色。NPC 可以与玩家对话、响应点击事件、执行脚本。
使用内置实体实现,无需安装任何外部 NPC 插件。
完整配置
yaml
npcs:
引导者:
name: "&6&l副本引导者" # 显示名称(支持颜色代码)
type: PLAYER # NPC 类型
location: "0,64,0" # 相对副本原点的坐标 x,y,z
skin: "Notch" # 皮肤玩家名(仅 PLAYER 类型有效)
look_at_player: true # 是否朝向附近玩家
dialogue: # 对话内容列表
- "&e[引导者] &7欢迎来到试炼副本!"
- "&e[引导者] &7前方有强大的敌人,请做好准备。"
dialogue_delay: 40 # 对话行间延迟(tick)
click_script: | # 点击时执行的脚本
action.sound('@trigger', 'ENTITY_VILLAGER_YES', 1.0, 1.0)
action.message('@trigger', '&e引导者向你点了点头。')
once: false # 是否只能交互一次NPC 类型
| 类型 | 说明 |
|---|---|
PLAYER | 玩家外形(支持皮肤设置) |
VILLAGER | 村民 |
ZOMBIE | 僵尸 |
SKELETON | 骷髅 |
WITCH | 女巫 |
CREEPER | 苦力怕 |
ENDERMAN | 末影人 |
BLAZE | 烈焰人 |
PILLAGER | 掠夺者 |
WANDERING_TRADER | 流浪商人 |
IRON_GOLEM | 铁傀儡 |
TIP
PLAYER 类型在内置实现中会使用村民实体代替(原生 Bukkit 无法创建假玩家实体)。如需真正的玩家外形 NPC,可考虑后续扩展。
字段说明
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
name | String | 是 | - | 头顶显示名称,支持 & 颜色代码 |
type | String | 否 | VILLAGER | NPC 实体类型 |
location | String | 是 | - | 坐标 x,y,z,相对副本世界原点 |
skin | String | 否 | - | 皮肤玩家名,仅 PLAYER 类型 |
look_at_player | Boolean | 否 | true | 是否自动朝向附近玩家 |
dialogue | List | 否 | [] | 对话文本列表 |
dialogue_delay | Long | 否 | 30 | 对话行间延迟(tick,20tick = 1秒) |
click_script | String | 否 | - | 点击时执行的 JavaScript 脚本 |
once | Boolean | 否 | false | 是否只能交互一次 |
脚本中的选择器
click_script 中可使用以下选择器:
| 选择器 | 说明 |
|---|---|
@trigger | 点击 NPC 的玩家 |
@all | 副本内所有玩家 |
@party | 队伍内所有玩家 |
示例:带路 NPC
yaml
npcs:
带路人:
name: "&a&l带路人"
type: VILLAGER
location: "0,64,0"
look_at_player: true
dialogue:
- "&e[带路人] &7跟我来,我带你去下一个区域。"
dialogue_delay: 30
click_script: |
action.npc_talk('@trigger', '带路人')
action.delay(80)
action.npc_walk('带路人', '20,64,30', 0.3)脚本动作
NPC 相关的脚本动作详见 NPC 脚本动作。
