Skip to content

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,可考虑后续扩展。

字段说明

字段类型必填默认值说明
nameString-头顶显示名称,支持 & 颜色代码
typeStringVILLAGERNPC 实体类型
locationString-坐标 x,y,z,相对副本世界原点
skinString-皮肤玩家名,仅 PLAYER 类型
look_at_playerBooleantrue是否自动朝向附近玩家
dialogueList[]对话文本列表
dialogue_delayLong30对话行间延迟(tick,20tick = 1秒)
click_scriptString-点击时执行的 JavaScript 脚本
onceBooleanfalse是否只能交互一次

脚本中的选择器

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 脚本动作

基于 MIT 许可发布