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.NameMountable、MountTypeDistance、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