萌芽技能视图 LySkillView
MySQL 前置要求
本插件必须安装 LyMySQLCore,并且成功连接 MySQL。插件通过 LyMySQLCore 的安全加载与保存事件读取、保存玩家数据;数据库未连接成功时,玩家技能等级、技能冷却、技能绑定和当前蓝量等数据无法正常生效。
LySkillView 是一个基于 GermPlugin 界面的 Minecraft 技能系统插件,用于制作技能菜单、技能槽位和技能侧边栏。玩家可以查看技能、升级技能、选择主动技能并绑定到注册的萌芽按键,也可以通过被动触发或自动释放机制使用技能。
插件信息
| 项目 | 内容 |
|---|---|
| 插件名 | LySkillView |
| 插件版本 | 1.1.3 |
| 作者 | Liyuan |
| Java 版本 | Java 8 |
| 编译目标 | Paper API 1.16.5-R0.1-SNAPSHOT |
| 主命令 | /lsv |
项目文件只确认使用 Paper API 1.16.5-R0.1-SNAPSHOT 编译,未声明更高版本的 Minecraft 兼容信息。
依赖
plugin.yml 声明了以下软依赖。虽然配置文件使用软依赖声明,但对应功能需要相关插件正常运行。
| 插件 | 用途 |
|---|---|
LyMySQLCore | 提供 MySQL 连接以及玩家数据安全加载、保存事件;本插件必须安装并成功连接 |
GermPlugin | 提供技能菜单、技能栏、HUD、萌芽按键和界面点击事件 |
PlaceholderAPI | 提供技能显示条件、释放条件、属性计算和插件变量 |
MythicMobs | 执行技能等级中的 MythicMobs 技能 |
SkillAPI | 支持在技能等级中指定 SkillAPI#技能ID |
Planners | 支持在技能等级中指定 Planners#技能ID |
功能
| 功能 | 说明 |
|---|---|
| 技能菜单 | 根据 skill-menu 中的菜单 ID 打开独立技能菜单,并显示菜单内配置的技能 |
| 技能排序 | 技能按照 index 从小到大排序;未设置有效 index 时使用加载顺序生成排序值 |
| 技能显示条件 | 支持 PlaceholderAPI 条件、权限、物品名称和物品 Lore 条件 |
| 技能等级 | 每个技能可以配置 0 级及多个实际技能等级;0 级通常用于显示未激活技能描述 |
| 技能升级 | 检查升级条件和升级材料,成功后扣除材料、提升等级并执行升级命令 |
| 技能绑定 | 主动技能可以绑定到已注册的萌芽按键;同一个按键只能绑定一个技能 |
| 主动释放 | 玩家按下已注册的萌芽按键后,释放该按键绑定的主动技能 |
| 被动触发 | 支持定时、攻击、受击、左键和右键触发,并可配置触发概率 |
| 技能执行 | 技能等级可以配置 MythicMobs 技能 ID,也可以使用 SkillAPI#技能ID 或 Planners#技能ID 格式指定其他技能插件技能 |
| 释放命令 | 技能释放成功后执行 cast-command 中的控制台命令 |
| 蓝量系统 | 支持最大蓝量、自动回蓝、最大蓝量属性加成、回蓝属性加成和蓝耗缩减 |
| 冷却系统 | 支持技能冷却、冷却缩减、公共冷却时间和按键冷却显示 |
| 自动释放 | 为指定键位开启自动释放后,插件每秒尝试释放一次,并检查权限、冷却、释放条件和蓝量 |
| 技能侧边栏 | 使用 技能栏.yml 注册 HUD,显示按键技能图标、剩余冷却和冷却遮罩 |
| 定时保存 | loop-save-thread-time 可配置定时保存间隔;设置为 0 时不启动该定时任务,但定时保存仍要求数据库连接状态满足代码检查条件 |
| 旧数据转换 | 提供将旧版技能数据转换为新版数据格式的指令 |
技能触发方式
技能文件中的 trigger-mode 决定技能触发方式。
| 配置值 | 说明 |
|---|---|
主动 | 主动技能,可以绑定到技能槽位并通过萌芽按键释放 |
TIME#概率 | 定时尝试触发;插件每秒检查一次,并按照 概率 进行判定 |
DAMAGED#概率 | 玩家受到实体伤害时尝试触发 |
ATTACK#概率 | 玩家对实体造成伤害时尝试触发 |
LEFT#概率 | 玩家左键点击空气或方块时尝试触发 |
RIGHT#概率 | 玩家右键点击空气或方块时尝试触发 |
概率 使用 0-100 的数值。被动技能不能绑定到主动技能槽位。
技能触发时会检查技能等级、显示条件、冷却、释放条件和当前蓝量。释放成功后扣除经过缩减计算的蓝耗并设置冷却。
指令
插件指令在 ServerHelp 中统一处理。除玩家使用 /lsv open <技能菜单ID> 打开自己的菜单外,当前指令分支均要求执行者为 OP;需要指定玩家的指令还要求目标玩家在线。
| 指令 | 说明 |
|---|---|
/lsv | OP 执行时显示指令帮助 |
/lsv reload | 重载主配置、技能文件和萌芽界面配置,并重新注册技能按键、技能数据、技能 HUD、被动任务、自动释放任务和回蓝任务 |
/lsv open <技能菜单ID> | 玩家打开 skill-menu 中存在的指定技能菜单;菜单 ID 必须与配置键一致 |
/lsv mana <玩家> <蓝量> | 为在线玩家恢复蓝量;数值大于 1 时按固定数值恢复,0-1 时按最大蓝量比例恢复 |
/lsv autocast <玩家> <键位> | 开关指定键位的自动释放;键位不包含 KEY_ 前缀,目标玩家还必须拥有对应自动释放权限 |
/lsv try-levelup <玩家> <技能> | 尝试升级在线玩家的指定技能,并检查升级条件和升级材料 |
/lsv try-bind <玩家> <技能> <键位> | 尝试将主动技能绑定到指定键位;键位不包含 KEY_ 前缀 |
/lsv reset <玩家/all> <技能> | 将在线玩家的指定技能等级设置为 0;命令帮助中保留了 all 参数说明,但当前实现的玩家查找逻辑只处理在线玩家 |
/lsv takecd <玩家> <技能> <模式> <值> | 扣除在线玩家指定技能的剩余冷却时间;技能 ID 支持 PlaceholderAPI 解析 |
/lsv load-old-data | 将旧版数据表中的技能数据转换到新版数据格式 |
takecd 模式
| 模式 | 说明 |
|---|---|
second | 按秒扣除当前剩余冷却 |
allrate | 按技能完整冷却时间的百分比扣除 |
nowrate | 按当前剩余冷却时间的百分比扣除 |
<值> 的范围为 0-100。百分比模式中,数值越大,扣除的冷却比例越高。
权限
plugin.yml 未声明固定权限节点。自动释放权限根据 register-skill-slot 中注册的键位动态生成:
text
lsv.autocast.<键位>例如配置注册了 KEY_Z,对应权限为:
text
lsv.autocast.Z键位参数和权限节点中的键位都不包含 KEY_ 前缀。自动释放任务每秒检查该权限;没有权限时,即使开启了对应键位的自动释放,也不会尝试释放技能。
配置文件
| 文件 | 用途 |
|---|---|
config.yml | MySQL、蓝量、缩减属性、技能按键、技能菜单、公共冷却、定时保存和消息配置 |
skills/*.yml | 技能基础信息、显示条件、触发方式和各等级效果 |
技能界面.yml | 技能菜单背景、技能描述、升级按钮、技能槽位和技能滚动列表 |
技能栏.yml | 技能侧边栏、技能图标、冷却文本和冷却遮罩 |
详细说明:
- 配置说明:查看
config.yml及界面相关配置。 - 技能配置:查看
skills/*.yml的技能和等级配置。 - 插件变量:查看 PlaceholderAPI 变量和键位变量。
- 常见问题:查看数据库、技能显示、绑定和释放问题。
- 更新日志:查看文档更新记录。
数据保存与运行机制
玩家数据在 LyMySQLCore 的安全加载事件中读取,在安全保存事件中写入。当前保存内容包括:
- 技能等级。
- 技能冷却结束时间。
- 技能绑定的按键。
- 当前蓝量。
技能数据从 plugins/LySkillView/skills 目录中的 YAML 文件加载。每个技能需要包含 skill-level 配置:
0级用于提供默认技能描述,通常表示技能尚未激活。1级及以上可以配置实际释放效果、冷却、蓝耗、升级条件和释放命令。- 技能实际最大等级根据技能等级配置中的最大等级编号计算。
玩家打开技能菜单时,插件会根据菜单配置和技能显示条件生成技能列表。玩家点击技能后,插件记录当前选中的技能,并显示该等级的 lore;点击升级按钮后,会检查下一级配置中的条件和材料。
主动技能绑定到按键后,技能图标会同步到技能菜单槽位和技能侧边栏。技能侧边栏通过按键变量显示图标、剩余冷却时间、最大冷却时间和冷却遮罩。
蓝量与冷却
蓝量初始值由 player-max-mana-default 计算,可以通过 PlaceholderAPI 变量增加最大蓝量或回蓝属性。插件按照 player-mana-recovery-interval 的秒数定时恢复 player-mana-recovery-value 点蓝量。
技能释放时,蓝耗会根据 mana-reduction-placeholder 和 mana-reduction-max 计算缩减;冷却会根据 cooling-reduction-placeholder 和 cooling-reduction-max 计算缩减。技能等级中的 gcd 可以设置公共冷却,gcd-group 用于让同一分组中的技能共同进入公共冷却。
API
项目提供技能 API 服务实现,包含以下能力:
| API 方法 | 用途 |
|---|---|
tryBindSkillToKey(Player, String, String) | 尝试将主动技能绑定到指定萌芽键位 |
trySkillLevelUp(Player, String) | 尝试升级玩家指定技能 |
castKeySkill(Player, String) | 释放指定键位绑定的技能,并在冷却中向玩家发送提示 |
castKeySkill_noCDMessage(Player, String) | 尝试释放指定键位绑定的技能,不发送冷却中的提示,供自动释放使用 |
数据库要求
LySkillView 使用 LyMySQLCore 提供的数据库连接和玩家安全数据事件。玩家进入服务器时,插件在安全加载事件中读取技能数据和蓝量;玩家退出或插件关闭时,在安全保存事件中写入数据。
如果出现以下任一情况,数据库相关功能无法正常工作:
- 未安装
LyMySQLCore。 LyMySQLCore未成功连接 MySQL。- 玩家安全加载事件未正常触发。
- 玩家安全保存事件未正常触发。
请先确认 LyMySQLCore 已安装并成功连接数据库,再检查本插件的 mysql 配置和玩家数据加载日志。