Skip to content

萌芽技能视图 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#技能IDPlanners#技能ID 格式指定其他技能插件技能
释放命令技能释放成功后执行 cast-command 中的控制台命令
蓝量系统支持最大蓝量、自动回蓝、最大蓝量属性加成、回蓝属性加成和蓝耗缩减
冷却系统支持技能冷却、冷却缩减、公共冷却时间和按键冷却显示
自动释放为指定键位开启自动释放后,插件每秒尝试释放一次,并检查权限、冷却、释放条件和蓝量
技能侧边栏使用 技能栏.yml 注册 HUD,显示按键技能图标、剩余冷却和冷却遮罩
定时保存loop-save-thread-time 可配置定时保存间隔;设置为 0 时不启动该定时任务,但定时保存仍要求数据库连接状态满足代码检查条件
旧数据转换提供将旧版技能数据转换为新版数据格式的指令

技能触发方式

技能文件中的 trigger-mode 决定技能触发方式。

配置值说明
主动主动技能,可以绑定到技能槽位并通过萌芽按键释放
TIME#概率定时尝试触发;插件每秒检查一次,并按照 概率 进行判定
DAMAGED#概率玩家受到实体伤害时尝试触发
ATTACK#概率玩家对实体造成伤害时尝试触发
LEFT#概率玩家左键点击空气或方块时尝试触发
RIGHT#概率玩家右键点击空气或方块时尝试触发

概率 使用 0-100 的数值。被动技能不能绑定到主动技能槽位。

技能触发时会检查技能等级、显示条件、冷却、释放条件和当前蓝量。释放成功后扣除经过缩减计算的蓝耗并设置冷却。

指令

插件指令在 ServerHelp 中统一处理。除玩家使用 /lsv open <技能菜单ID> 打开自己的菜单外,当前指令分支均要求执行者为 OP;需要指定玩家的指令还要求目标玩家在线。

指令说明
/lsvOP 执行时显示指令帮助
/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.ymlMySQL、蓝量、缩减属性、技能按键、技能菜单、公共冷却、定时保存和消息配置
skills/*.yml技能基础信息、显示条件、触发方式和各等级效果
技能界面.yml技能菜单背景、技能描述、升级按钮、技能槽位和技能滚动列表
技能栏.yml技能侧边栏、技能图标、冷却文本和冷却遮罩

详细说明:

数据保存与运行机制

玩家数据在 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-placeholdermana-reduction-max 计算缩减;冷却会根据 cooling-reduction-placeholdercooling-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 配置和玩家数据加载日志。