搜索

2026-08-29 全量宠物配置与 MCPets 兼容

全量原版宠物中文独立 YML、公共默认值与单宠差异、中文目录迁移及 MCPets 直接读取。

日期:2026-08-29
版本:0.27.3-SNAPSHOT

配置结构

插件现在采用“统一配置写一次,单宠只写不同项”的结构:

plugins/LiPet/
├─ pet-types.yml
└─ 宠物/
   ├─ 原版宠物/
   │  ├─ 狼.yml
   │  ├─ 猫.yml
   │  ├─ 蝙蝠.yml
   │  └─ ...默认允许捕捉的其他原版生物
   └─ 自定义宠物/
      └─ 正义工作室/
         └─ 龙骑/
            └─ 龙骑-普通.yml
  • pet-types.yml -> defaults:统一保存属性、跟随、骑乘、背包、成长、食物和 MythicMobs 等级技能默认值。
  • 宠物/**/*.yml:一只宠物一个文件,只写 entity-type、显示名、兼容 ID 和自己的差异。
  • 单宠同名节点覆盖公共值;inherit-defaults: false 可完全关闭继承;显式写 mythic-skills: {} 可清空公共技能。
  • 默认捕捉规则允许的全部原版生物都会生成中文文件名的独立 YML。已有类型、同名文件、自定义值和注释不会被覆盖。

中文目录升级

默认目录由 宠物类型 改为 宠物。旧服只存在 宠物类型 时会整目录安全改名并同步修改 pet-types.yml;如果新旧目录同时存在,插件不会擅自合并,会继续使用旧目录并输出中文警告。

MCPets 文件直接读取

MCPets 的单宠物 YML 可以不改结构,直接复制到 plugins/LiPet/宠物/ 的任意中文子目录。当前直接执行这些核心字段:

  • Id、Enabled、MythicMob、EntityType、Name / Icon.Name
  • Mountable、MountType
  • Distance、ComingBackRange

当填写 MythicMob 时,LiPet 通过运行中的 MythicMobs 生成对应 Mob,再接管宠物数据、属性、跟随和骑乘;MountType: flying 会强制使用飞行骑乘。SpawnRange 会读取保留,但本版仍在主人位置生成,不按该半径随机偏移。Permission、Signals、Skins、DismountOnDamaged、DespawnOnDismount 与 AutoRide 会保留在原文件中,但本版暂不执行这些 MCPets 专属扩展行为。

插件会生成一份中文路径的龙骑示例:

plugins/LiPet/宠物/自定义宠物/正义工作室/龙骑/龙骑-普通.yml

示例默认 Enabled: false,确认 MythicMobs 已加载 dragon-mounts-red 后再启用。修改完成执行 /lipet reload。

兼容策略

  • 原版旧 ID、minecraft:<实体名> 和 vanilla_<实体名> 继续解析到同一配置,不修改数据库。
  • 原 pet-types.yml -> types 单文件格式继续读取。
  • 所有继承与 MCPets 转换都只发生在内存中,不把公共配置展开写回单宠文件,也不改写复制进来的 MCPets 文件。

验证结果

  • 默认 API 与 Paper 26.2 Profile 各 160 项测试通过,失败、错误和跳过均为 0。
  • Paper 26.2 Build 111 + Java 25 + PlayerPoints 3.3.5 使用真实旧目录启动,宠物类型/ 成功迁移为 宠物/。
  • 旧服已有 10 个原版文件时只新增 77 个缺失文件;最终 87 种默认可捕捉原版生物均有独立 YML,另有一份 MCPets 龙骑文件。
  • 原始 MCPets 龙骑文件复制前后 SHA-256 完全一致,热重载和二次启动成功,二次启动没有重复生成。
  • 本环境没有真实 MythicMobs Jar 和在线客户端,龙骑 Mob 的实际生成、模型与最终骑乘画面未进行游戏内验证。
  • 成品:target/LiPet-0.27.3-SNAPSHOT.jar
  • 大小:787007 字节
  • SHA-256:C2D0C846440CC81906A3FB719551E69EDE02DCA913045B5B99542ACCB83C71DF