龙核技能视图 LyDragonSkillView
LyDragonSkillView 是面向 DragonCore 界面的技能系统插件,用于管理技能菜单、技能栏、主动技能、被动技能、读条、充能、蓝量、冷却、技能升级和职业数据。
插件负责保存玩家技能等级、技能点、职业、键位绑定和技能运行状态,并向 DragonCore 同步 HUD 变量。技能效果可通过技能配置中的事件脚本调用消息、音效、指令、MythicMobs 技能、蓝量和冷却操作。
MySQL 前置要求
启用 MySQL 存储时,必须安装 LyMySQLCore,并确认它已成功连接数据库。否则本插件的 MySQL 数据读取、保存、同步和相关记录不会生效。
基本信息
| 项目 | 内容 |
|---|---|
| 插件名 | LyDragonSkillView |
| 中文名 | 龙核技能视图 |
| 作者 | 离渊 |
| 当前项目版本 | 1.0.4 |
| 主指令 | /ldsv |
| Java 版本 | Java 8 |
| 构建 API | Paper 1.16.5 API |
| 技能配置目录 | plugins/LyDragonSkillView/skills/ |
| 主配置文件 | plugins/LyDragonSkillView/config.yml |
版本说明
项目使用 Paper 1.16.5 API 编译。现有项目文件没有提供更完整的跨版本兼容范围,因此不能据此确认其他 Minecraft 版本一定可用。
玩法组成
玩家可以在技能菜单中查看技能、升级技能,并把已学习的技能绑定到开放键位。主动技能由玩家按键释放,被动技能则根据攻击、受击、击杀、技能释放或周期检测自动触发。
技能运行时会处理以下数据:
- 技能原始等级、额外加成等级和最终有效等级。
- 技能冷却、充能层数、下次充能恢复时间和公共冷却。
- 当前蓝量、最大蓝量、每秒回蓝和技能蓝耗。
- 当前读条技能、读条时间、进度、段数和中断状态。
- 玩家技能点、职业、技能栏绑定和当前选中技能。
- 技能升级所需条件与资源消耗。
依赖与兼容插件
plugin.yml 将相关插件声明为软依赖,但不同功能仍需要对应插件实际存在并正常运行。
| 插件或系统 | 用途 | 使用条件 |
|---|---|---|
| DragonCore | 显示技能菜单、技能栏 HUD、读条 HUD,并处理界面发包和按键交互 | 使用龙核界面功能时需要 |
| PlaceholderAPI | 解析技能条件、属性数值、动态表达式和 %ldsv_...% 变量 | 使用 PAPI 条件或变量时需要 |
| Vault | 处理 eco 类型的技能升级金币消耗 | 使用金币升级条件时需要 |
| PlayerPoints | 处理 point 类型的技能升级点券消耗 | 使用点券升级条件时需要 |
| LyMySQLCore | 提供 MySQL 连接 | 开启 mysql.enable 时必须安装并成功连接 |
| AttributePlus | 应用职业属性 | attribute-plugin 选择该插件时需要 |
| SX-Attribute2 | 应用职业属性 | attribute-plugin 选择该插件时需要 |
| SX-Attribute3 | 应用职业属性 | attribute-plugin 选择该插件时需要 |
| AttributeSystem | 应用职业属性 | attribute-plugin 选择该插件时需要 |
| ItemLoreOrigin | 应用职业属性 | attribute-plugin 选择该插件时需要 |
| MythicMobs | 执行技能事件脚本中的 MM技能 动作 | 配置该动作时需要相应插件环境 |
主要功能
技能菜单
- 可以在
skill-class下建立多个技能菜单。 - 每个菜单可以配置独立的技能列表。
- 菜单打开条件支持职业、PAPI 表达式、拥有权限和没有权限。
- 技能自身也可以通过
show-condition控制是否显示。 - 技能列表支持默认顺序、等级从高到低和等级从低到高三种排序方式。
- 可以配置技能名称显示格式、满级升级条件文本和是否显示绑定键位。
- DragonCore 界面可以读取当前选中技能的名称、贴图、等级和升级条件。
主动技能
| 释放方式 | 配置值 | 行为 |
|---|---|---|
| 瞬发 | instant | 按键后直接完成释放,不进入读条状态。 |
| 点按读条 | tap_cast | 按一下开始读条,读条完成后释放。 |
| 按住读条 | hold_cast | 按住按键开始读条,读条完成后自动释放。 |
| 按住并松开释放 | hold_release_cast | 按住按键完成读条,完成后松开按键才释放。 |
主动技能还支持:
- 使用
cast-time-tick设置读条时间。 - 读条时间支持 PlaceholderAPI 变量和四则运算表达式。
- 使用
cast-trigger-count把一次读条分成多个触发段。 - 使用
interrupt-when设置移动、攻击或受伤时中断读条。 - 使用
cooldown-on-cast-start决定冷却从开始释放时计算,还是从读条完成或中断时计算。 - 使用
cast-condition在扣蓝和正式释放前拦截不满足条件的释放。 - 为每个等级分别设置冷却、蓝耗、公共冷却和最大充能层数。
被动技能
| 触发配置 | 说明 |
|---|---|
attack | 玩家造成伤害时检测。 |
damaged | 玩家受到伤害时检测。 |
kill | 玩家击杀目标时检测。 |
cast_skill | 玩家释放任意技能时检测。 |
cast_skill:all | 玩家释放任意技能时检测。 |
cast_skill:技能ID | 玩家释放指定技能时检测。 |
tick | 每个检测周期触发。 |
tick:间隔 | 按指定 tick 间隔检测。 |
被动技能支持 PAPI、权限和反向权限条件,并可通过 chance 设置 0 至 1 的触发概率。概率文本支持 PlaceholderAPI 和四则运算。
require-bind-slot 用于控制被动技能是否必须装备到技能栏才能生效:
false:技能学习后即可参与被动触发。true:技能必须绑定到任意开放键位后才会参与触发。
主动技能始终需要绑定技能栏才能通过玩家按键释放。
技能等级与升级
每个技能拥有独立的 max-level 和 skill-level 配置。0 级通常只用于显示未学习状态与下一级升级条件,实际效果配置放在后续等级中。
| 升级规则 | 格式 | 作用 |
|---|---|---|
| PAPI 条件 | papi:{表达式} | 只检查条件,不扣除资源。 |
| 物品 | item:{物品名#数量} | 按物品名称统计并扣除指定数量。 |
| 金币 | eco:{数量} | 通过 Vault 检查并扣除金币。 |
| 点券 | point:{数量} | 通过 PlayerPoints 检查并扣除点券。 |
| 技能点 | skill-point:{数量} | 扣除玩家持有的技能点。 |
升级规则可以在 | 后附加界面显示文本。显示文本支持 {item} 和 {amount}。一次升级需要当前目标等级的全部规则都满足。
技能等级由三部分组成:
| 等级 | 说明 |
|---|---|
| 原始等级 | 玩家存档中实际学习的等级。 |
| 额外等级 | 由技能的 extra-level-placeholder 计算,可以使用 PAPI 和四则运算。 |
| 最终等级 | 原始等级与额外等级相加后的运行时等级。 |
额外等级会参与技能效果、冷却、蓝耗和等级配置选择,但不会直接修改玩家保存的原始等级。技能降至 0 级后,插件会清理该技能已有的技能栏绑定。
技能栏与充能
- 开放键位由
bind-key配置,默认示例为Q、R、Z、X、C、V。 - 同一个技能只保留一个键位绑定。
- 可以分别限制主动技能和被动技能的最大装备数量,设置为
0时不限制。 max-stack大于1时,技能按充能层数运行。- 每次释放固定消耗一层充能。
- 充能未满时,根据技能冷却时间逐层恢复。
- 单层技能冷却完成时会触发冷却完成事件,多层技能回满时会触发充能完成事件。
- DragonCore HUD 可以显示键位贴图、技能 ID、技能名、当前层数、恢复倒计时和恢复比例。
蓝量、冷却与读条
| 系统 | 说明 |
|---|---|
| 最大蓝量 | 使用默认最大蓝量,并可叠加 PlaceholderAPI 百分比属性。 |
| 自动回蓝 | 根据配置的每秒回蓝数值恢复。 |
| 蓝耗缩减 | 按百分比降低技能蓝耗,结果向上取整。 |
| 冷却缩减 | 按百分比降低技能冷却时间。 |
| 吟唱加速 | 按百分比缩短读条时间,最高可缩短为瞬发。 |
| 公共冷却 | 主动技能可以设置独立 GCD,被动技能不参与 GCD 判定。 |
| 禁用世界 | disable-skill-world 中的世界禁止主动释放和被动触发。 |
蓝量、蓝耗缩减、冷却缩减和吟唱加速均可以配置属性变量与百分比上限。
读条与中断
读条 HUD 可以取得当前技能名、已用时间、总时间、进度比例和总段数。读条过程中可以按照时间线执行多段事件。
读条支持以下中断来源:
| 中断值 | 说明 |
|---|---|
move | 玩家移动时中断。 |
attack | 玩家造成伤害时中断。 |
damaged | 玩家受到伤害时中断。 |
| 提前松开 | 按压类读条尚未完成时松开按键。 |
| 指令中断 | 管理员使用中断指令。 |
| 世界限制 | 玩家位于禁用技能世界。 |
中断事件可以取得当前段数、总段数、已读条秒数和中断比例。
技能事件脚本
主动技能支持以下事件节点:
| 事件节点 | 触发时间 |
|---|---|
on-cast-start | 开始读条时。 |
on-cast-success | 瞬发完成或读条成功时。 |
on-cast-interrupt | 读条被中断时。 |
on-cast-trigger | 读条分段到达触发点时。 |
on-charge-recover | 每恢复一层充能时。 |
on-mana-consume | 技能成功扣除蓝量时。 |
被动技能支持 on-cast-success、on-charge-recover 和 on-mana-consume。
项目示例确认的脚本动作包括:
- 发送玩家消息、全服消息和范围消息。
- 播放音效。
- 调用 MythicMobs 技能并传递参数。
- 以控制台、OP 或玩家身份执行指令。
- 增加或减少指定技能的冷却。
- 增加或减少玩家蓝量。
- 使用条件判断组织多条动作。
职业系统
- 使用
class-setting注册职业 ID、职业称号和职业属性。 - 管理员可以设置或清除玩家职业。
- 技能菜单和单个技能都可以按职业限制显示或打开。
- 职业切换后会重新应用对应职业属性。
- 支持通过变量读取职业 ID 和职业称号。
数据存储
插件保存的玩家数据包括技能等级、技能点、职业和技能栏绑定等内容。
| 存储方式 | 说明 |
|---|---|
| YAML | 未启用 MySQL,或 MySQL 未成功连接时使用本地 YAML 保存。 |
| MySQL | mysql.enable 开启且 LyMySQLCore 已成功连接时使用。 |
| 循环保存 | 由 loop-save-thread-time 控制,设置为 0 可以关闭循环保存。 |
切换数据库开关需要重启服务器。
常用指令
plugin.yml 没有注册独立权限节点。原有管理指令按 OP 使用,普通玩家仅使用菜单打开指令。
| 指令 | 使用者 | 说明 |
|---|---|---|
/ldsv open [菜单ID] | 玩家 | 打开指定技能菜单。 |
/ldsv open [菜单ID1;菜单ID2;菜单ID3] | 玩家 | 按顺序尝试打开多个菜单,可作为不同职业菜单的统一入口。 |
/ldsv open [菜单ID] [玩家] | OP | 让指定玩家打开技能菜单。 |
/ldsv reload | OP | 重载插件配置与技能配置。 |
/ldsv uplevel [玩家] [技能ID] [数量] | OP | 无视升级条件提高技能原始等级,数量可以省略。 |
/ldsv downlevel [玩家] [技能ID] [数量] | OP | 无视降级条件降低技能原始等级,数量可以省略。 |
/ldsv addsp [玩家] [数量] | OP | 增加玩家技能点。 |
/ldsv takesp [玩家] [数量] | OP | 扣除玩家技能点。 |
/ldsv setsp [玩家] [数量] | OP | 设置玩家技能点。 |
/ldsv class [玩家] [职业ID] | OP | 设置玩家职业。 |
/ldsv class [玩家] clear | OP | 清除玩家职业。 |
/ldsv cast [玩家] [技能ID] [等级] | OP | 让玩家按指定运行时等级释放技能,不修改玩家保存的原始等级。 |
/ldsv interrupt [玩家] | OP | 中断玩家当前正在进行的读条。 |
/ldsv addmana [玩家] [数值] | OP | 增加固定数值蓝量。 |
/ldsv addmana [玩家] [百分比%] | OP | 按最大蓝量百分比增加蓝量。 |
/ldsv reducecd [玩家] [秒数] | OP | 按固定秒数缩短技能冷却。 |
/ldsv reducecd [玩家] [百分比%] | OP | 按百分比缩短技能冷却。 |
API 与事件
插件提供 LyDragonSkillViewAPI,可用于读取或修改技能等级、技能点、职业、充能层数、冷却、属性缩减,并调用技能释放逻辑。
已提供的 Bukkit 事件包括:
| 事件 | 触发时机 |
|---|---|
SkillCastEvent | 技能释放流程事件基类。 |
SkillCastStartEvent | 读条开始。 |
SkillCastSuccessEvent | 技能释放成功。 |
SkillCastFinishEvent | 技能释放流程结束。 |
SkillCastInterruptEvent | 技能读条中断。 |
SkillCastTriggerEvent | 读条分段触发。 |
SkillChargeCompleteEvent | 多层技能充能恢复至满层。 |
SkillCooldownCompleteEvent | 单层技能冷却完成。 |
文档索引
| 页面 | 内容 |
|---|---|
| 配置说明 | config.yml 的数据库、职业、蓝量、冷却、键位、存储和消息配置。 |
| 技能配置 | 主动技能、被动技能、等级、升级条件、事件节点和脚本动作。 |
| 插件变量 | PlaceholderAPI 变量与同步给 DragonCore 的 HUD 变量。 |
| 龙核资源 | DragonCore 界面文件、HUD、贴图、按键和发包交互。 |
| 常见问题 | 菜单、技能绑定、蓝量、冷却、读条、数据库和依赖排查。 |