搜索

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>。

变量上下文与处理顺序

  1. 对配置里的原始标题模板执行一次 PAPI,玩家上下文是打开菜单的查看者。管理员查看其他玩家的宠物时,PAPI 也仍按管理员解析。
  2. 替换该菜单已有的 LiPet <变量>,再解析 MiniMessage。宠物详情使用当前选中宠物的信息,PAPI 的 %lipet_active_*% 则仍按查看者当前活动宠物的原有定义取值,两者不保证是同一只宠物。
  3. 不再次执行 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