2.2.5 GUI 标题变量
所有菜单和背包标题支持 PAPI 自定义变量、内置变量、字体贴图与升级说明。
修复宠物菜单标题只替换 LiPet 内置变量、没有展开 PlaceholderAPI 自定义变量的问题。所有菜单标题改用同一处理流程,已安装对应 PAPI 扩展时,%变量% 可以和 <pet_name> 等内置变量、MiniMessage 样式一起使用。
支持的标题位置
配置文件均为 plugins/LiPet/gui.yml。只修改已有节点,不要把下面示例整份覆盖原配置。
| 标题节点 | 对应界面 |
|---|---|
main.title |
宠物主菜单 |
shop.title |
宠物商城 |
item-shop.title |
道具商城 |
warehouse.title |
宠物仓库 |
info.title |
宠物信息 |
manage.title |
宠物管理 / 设置 |
delete-confirm.title |
放生二次确认 |
inventory-title |
独立宠物背包普通标题 |
inventory-skin.titles.1 至 inventory-skin.titles.6 |
按实际背包行数选择的贴图标题;需要先启用贴图标题 |
manage:
# 宠物管理标题;pet_name 来自当前菜单,player_name 由已安装的 PAPI 扩展提供。
title: "<gold><pet_name></gold> <gray>· %player_name% 的宠物设置</gray>"
# 普通背包标题,保留已有背包的其他设置。
inventory-title: "<aqua><pet_name></aqua> <gray>Lv.<level> · %player_name%</gray>"
%player_name% 需要服务器已安装相应的 PlaceholderAPI 扩展;LiPet 不内置其他插件的扩展。也可以直接使用无需 PAPI 的 <player_name>。
变量上下文与处理顺序
- 对配置里的原始标题模板执行一次 PAPI,玩家上下文是打开菜单的查看者。管理员查看其他玩家的宠物时,PAPI 也仍按管理员解析。
- 替换该菜单已有的 LiPet
<变量>,再解析 MiniMessage。宠物详情使用当前选中宠物的信息,PAPI 的%lipet_active_*%则仍按查看者当前活动宠物的原有定义取值,两者不保证是同一只宠物。 - 不再次执行 PAPI。宠物名称等内置变量的内容即使含有
%变量%,也不会被当作第二段 PAPI 模板执行。
主菜单等通用界面提供 <player>、<player_name> 和 <player_uuid>;宠物相关菜单继续使用已有上下文变量。商城商品和属性按钮专属变量只在对应元素有数据时可用,不能将 <price> 等按钮变量直接视为所有标题的通用变量。
独立背包标题可用 <player>、<player_name>、<player_uuid>、<owner_id>、<pet_id>、<pet_name>、<pet_type_id>、<level>、<auto_attack_enabled>。其中查看者变量指正在打开背包的玩家;<auto_attack_enabled> 返回当前宠物保存的 true 或 false。
未安装或未启用 PAPI 时保留原始 %变量%;未知变量按 PAPI 返回的原文保留。PAPI 调用异常时回退到原标题模板,LiPet 内置变量和菜单仍可继续使用。
资源包标题与配置重载
现有 MiniMessage 颜色、渐变、字体标签和 Unicode 字形保持使用。标题还兼容 PAPI 常见的传统 RGB 返回格式 §x§R§R§G§G§B§B 和 &x&R&R&G&G&B&B,其中六个字母位置填写十六进制颜色位;转换仅作用于标题,不改变其他消息或玩家命名规则。例如 <font:my_pack:gui>字形</font> 需要客户端实际加载含有 my_pack:gui 字体的资源包。此更新没有增加 CE 专用的 <image:...>、<shift:...> 标签解析器;需要将相关图形转换成服务器已有字体和字符,或使用已安装扩展支持的变量。
本轮新增的是标题的 PAPI 展开,物品名称、Lore 与点击命令没有扩展到新的 PAPI 执行流程。所有已有标题、自定义注释和配置值保持,修改 gui.yml 后执行 /lipet reload,再关闭并重新打开菜单;已经打开的标题不会实时刷新。
升级方式
正常停服并备份配置、数据库与恢复台账,将旧 LiPet Jar 移出 plugins 扫描目录,只保留 LiPet-2.2.5.jar。正常启动后确认控制台为 Enabling LiPet v2.2.5,再重新打开菜单检查标题。/lipet reload 不能替换已加载 Java 代码。
同时修复可选依赖的关闭顺序:PlaceholderAPI 已先禁用或释放其单例时,LiPet 安全跳过扩展注销,继续自身停服清理,避免注销异常中断后续关闭。
本次不新增数据库字段,也不修改每宠自动攻击设置、技能、背包内容或 CE 物品资源。原有 112 项技能、11 份模型及 CE 物品贴图包 1.0.0 继续保留。
验证结果
最终 LiPet 2.2.5 Jar 的 812 项测试全部通过,失败、错误与跳过均为 0。同一最终 Jar 完成本轮以下检查:
| 对象 | 已完成检查 | 范围 |
|---|---|---|
| Paper 26.2 / Folia 26.2 + PlaceholderAPI 2.12.3 | 各 212 项通过,共 424 项 | 7 种菜单、宠物背包普通/皮肤/回退标题;真实 PAPI 扩展、查看者上下文、字体字形、两种 RGB、重载、未知/异常/禁用回退及正常停服 |
| Paper 26.2 无 PlaceholderAPI | 104 项通过 | 缺失软依赖仍可打开 7 种菜单和宠物背包;内置变量、字体字形、重载及出站 OpenScreen 包与菜单标题一致;完整启动和停服 |
隔离服务端的自动化菜单、组件和事件检查不等同真人客户端资源包视觉验收。已打开的标题是否对齐、玩家是否加载所需字体等,仍需在客户实际客户端检查;其他版本的 MySQL、战斗或资源包测试不累计为本轮重跑。
最终已验 2.2.5 Jar SHA-256:
3FDD03BDF4E57446817F0D8C5C08C2749C3B7B484C9832D0E781497EB7E7196C