- ◆ 游戏版本
- 1.21.1
- ◆ 服务端核心
- Arclight
- ◆ 前置/依赖
- Cobblemon
- ◆ 模组加载器
- Fabric
- NeoForge
介绍
LCCobbleNPC 是一款基于 Cobblemon 原生 NPC(NPCEntity)开发的 NPC 插件,支持自定义外观皮肤、多页分支对话、训练家对战、点击 / 对话动作、按任务标记控制 NPC 可见性(阶段性任务)、与 CobbleVirtualNPC 虚拟对战联动,并附带所见即所得的可视化编辑器。指令列表
动作说明
动作的写法是[类型]参数,用于点击动作(interaction.actions)、对话选项 / 点击(actions / click)以及胜负指令(playWinCommand / playLoseCommand):变量:
{p} 玩家名称、{trainer_name} 训练家名称、{uuid} 玩家 UUID、{npc_id} NPC id,以及 PlaceholderAPI 变量。文本支持 & 颜色代码。注意
如果点击对话选项后没有执行任何翻页类动作,对话会自动关闭,否则原版对话框会一直停在"等待服务端"的状态。
配置文件
YAML:
# 显示名称,支持 & 颜色代码
name: "&d乔伊小姐"
appearance:
# Cobblemon NPC 类型(/lcnpc set <id> class 可补全)
npcClass: cobblemon:standard
# 皮肤:正版玩家名,或 url:<png 地址>;留空不使用皮肤
skin: ""
# 皮肤模型:auto 自动 / default 经典 / slim 纤细
skinModel: auto
# 强制模型资源 id,留空跟随 NPC 类型
model: ""
# 外观标签(aspects)
aspects: []
# 缩放
scale: 1.0
# 隐藏头顶名字
hideName: false
behaviour:
# 看向附近玩家
lookAtPlayer: true
lookRange: 8.0
# 无敌
invulnerable: true
# true = 使用 NPC 类型自带的 AI(可能会走动);false = 原地站立
classAi: false
# 对话时转身面向正在对话的玩家(优先于看向最近的玩家)
faceWhileTalking: true
interaction:
# 右键打开的对话 id(对应 dialogues/<id>.yml),留空不打开
dialogue: example
# 交互所需权限,留空所有人可用
permission: ""
# 交互冷却(秒)
cooldown: 0
# 右键时先执行的动作(在打开对话之前),写法见上方「动作说明」
actions: []
# 可见性(虚拟实体):只有满足全部条件的玩家能看到此 NPC,其他玩家看不到也无法交互
# 三项都留空 = 所有人可见
visibility:
# 需要的权限,留空不限制
permission: ""
# 玩家必须拥有全部这些任务标记
showFlags: []
# 玩家拥有其中任一标记时隐藏
hideFlags: []
# 虚拟 NPC 对战结果(需安装 CobbleVirtualNPC)
# 本 NPC 的对话 / 点击动作里用 [vnpc]<配置名> 发起的虚拟对战结束后执行
# CobbleVirtualNPC 自身配置的奖励照常发放,这里一般用于任务标记、剧情推进
# 变量:
# '{p}' 玩家名称
# '{trainer_name}' 虚拟 NPC 的训练家名称
virtualBattle:
# 玩家赢得虚拟对战执行的指令
playWinCommand: []
# 玩家输掉虚拟对战执行的指令
playLoseCommand: []
battle:
# 是否可以对战(没有绑定对话时右键直接开战;有对话时用对话选项的 [battle] 开战)
enabled: false
# singles 单打 / doubles 双打 / triples 三打
format: singles
# AI 强度 0-5
skill: 3
# 挑战冷却(秒)
cooldown: 0
# 每名玩家只能击败一次
once: false
# 开战前治疗玩家队伍
healPlayer: false
# 队伍(Cobblemon 宝可梦属性格式,最多 6 只),每场对战都会重新生成满状态的队伍
party:
- "chansey level=50"
- "blissey level=55"
# 玩家赢得比赛执行的指令
# 变量:
# '{p}' 玩家名称
# '{trainer_name}' 训练家名称
playWinCommand:
- '[broadcast]&7玩家 &f{p} &7击败了训练家 &f{trainer_name}&7!'
- '[console]give {p} cobblemon:rare_candy 1'
# 玩家输掉比赛执行的指令
playLoseCommand:
- '[broadcast]&7玩家 &f{p} &7输掉了比赛!'
- '[broadcast]&7玩家 &f{p} &7无力击败了训练家 &f{trainer_name}'
虚拟实体 / 阶段性任务
NPC 可以设置为只对部分玩家可见:看不到的玩家客户端根本不会收到这个实体,也就无法交互;其他玩家不受影响。 条件写在 NPC 配置的 visibility 里,三项全部满足才可见。任务标记是按玩家保存的字符串(data/playerdata.yml),可以用动作 [flag]add/remove <标记> 或指令 /lcnpc flag 修改, 修改后立即刷新该玩家能看到的 NPC。对话选项同样支持 showFlags / hideFlags,用来做按任务阶段变化的对话分支。
同一个位置可以放多个不同阶段的 NPC(各自设置不同的标记条件),每个玩家看到的是自己当前阶段的那一个。 管理员用 /lcnpc seeall 可临时看到全部 NPC 以便编辑。
服务器安装了 CobbleVirtualNPC 时(软依赖,不装也不影响其他功能):
- 动作 [vnpc]<配置名>:关闭对话并为玩家发起该虚拟 NPC 对战,等价于控制台执行 cvnpc startbattle <配置名> <玩家>, 冷却、挑战次数、禁用规则、奖励全部沿用 CobbleVirtualNPC 自己的配置。
- 由本 NPC 发起的虚拟对战结束后,额外执行 NPC 配置里的 virtualBattle.playWinCommand / playLoseCommand ({trainer_name} 为虚拟 NPC 的训练家名称),适合配合任务标记推进剧情:
YAML:
virtualBattle:
playWinCommand:
- '[flag]add gym1_cleared'
- '[broadcast]&7玩家 &f{p} &7击败了 &f{trainer_name}&7!'
playLoseCommand: []
- 可视化编辑器中动作类型选「虚拟对战」即可从服务器的虚拟 NPC 列表中选择配置;「胜负动作」页新增虚拟对战获胜 / 失败两栏。
可视化编辑器
结语
感谢使用 LCCobbleNPC 插件,我们持续更新更多功能。如果你有任何问题或建议,请加入官方插件交流群:966720491。