0.29.7 原生宠物体型缩放
原生 SCALE、碰撞箱与交互同步,公共和单宠等级倍率,默认关闭并保护外部模型。
内置功能
将 LiAnimalScale 使用的原生体型机制加入 LiPet,无需安装 LiAnimalScale。使用 Bukkit Attribute.SCALE,不生成额外伪装或碰撞实体,不添加 NMS 或第三方运行依赖。
- 仅处理 LiPet 宠物,支持公共默认值、独立宠物类型覆盖和等级倍率表;不扫描或修改野生动物、玩家。
- 召唤、重召、区块恢复、配置重载及属性刷新时应用;升级和死亡降级按已达到的最高等级重新选择倍率。
- 原生模型、碰撞箱与实体交互命中区域由 Minecraft 同步缩放。不会增加玩家触及距离,也不额外提高移速、攻击距离、伤害或跳跃。
- 默认关闭,保留现有体型。关闭并重载时只撤销 LiPet 仍持有的倍率,保留其他插件之后写入的值;不清除外部属性修饰器。
- 幼体继续按捕捉时的幼体外观显示,其原生年龄比例与 SCALE 同时生效。
本次移植宠物体型配置能力,不新增 /animalscale 命令,也不把独立插件面向全服野生动物的批量修改功能搬入 LiPet。
公共配置
plugins/LiPet/pet-types.yml 的 defaults.scale 会自动补齐,已有管理员配置不覆盖:
defaults:
scale:
# true 接管原生宠物体型,false 关闭;默认 false。
enabled: false
# 原生 SCALE 基础倍率,范围 0.0625-16.0;1.0 为原始大小。
value: 1.0
# 等级门槛为正整数,倍率范围同上;{} 不按等级改变。
# 取已达到的最高等级,未达到任何门槛时用 value。
levels: {}
单只宠物类型示例
在已有的狼配置 types.vanilla_wolf 内新增 scale,保留其余身份、食物与行为节点。下面展示需合并的片段,不要覆盖整个原文件:
types:
vanilla_wolf:
scale:
# 仅此类型启用;true/false,覆盖公共设置。
enabled: true
# 初始基础倍率,范围 0.0625-16.0。
value: 0.8
# 单宠等级表整表覆盖公共表;{} 可清空继承。
levels:
# 达到 10 级使用 1.2 倍;等级正整数、倍率范围同上。
'10': 1.2
# 达到 30 级使用 1.8 倍;降回 29 级恢复 1.2 倍。
'30': 1.8
只要固定 2 倍,可设置 enabled: true、value: 2.0、levels: {}。倍率跟随类型配置及宠物已保存等级计算,不会每次召唤随机重抽,也不修改数据库中的主人或成长数据。它不是“保存每只捕捉对象的原始倍率”的功能。
替换 Jar 并正常重启一次后,修改配置可执行 /lipet reload,已召唤的宠物会在自己的实体线程更新,不必逐只重新召唤。
外部模型与其他插件
- 配置为 ModelEngine / CraftEngine 模型的宠物跳过原生缩放;MM 自行挂载的 ModelEngine 模型也按实际运行状态识别并跳过。原生 SCALE 不代表外部模型骨骼或骑乘座位缩放,外部模型应使用对应模型插件的尺寸设置。
- 无外部模型的 MM 原版实体可按原生 SCALE 处理,但不要让 MM 技能和 LiPet 反复修改同一个基础倍率。
- 同时安装 LiAnimalScale 时,只选一个插件负责同一批宠物的倍率;关闭其对应动物类型自动处理或关闭 LiPet 的 scale。LiPet 不会擅自修改另一个插件配置。
- 范围虽然允许 0.0625-16.0,但建议先测试约 0.5-3.0;超大碰撞箱会影响过门、寻路与坐骑空间。它不保证巨大生物适合所有地形或现有 AI 距离配置。
- WG 的骑乘等保护仍然生效;放大不会绕过区域规则。
验证
- 默认 API 与 Paper 26.2 API 构建分别通过 473 项测试,无失败、错误或跳过。
- 隔离 Paper 26.2 和 Folia 26.2:2 倍牛宠物宽度约 1.8、高度约 2.8,射线能命中原生尺寸之外的上半身且解析回同一宠物;野生牛保持原始大小。
- 两端验证等级变化、重复重载、关闭恢复、保留外部后来写入的值、新服务实例读取恢复记录、重召、幼体比例及原版骑乘。真实 MM + ModelEngine Parro 识别为外部模型,不写入缩放。
- Paper 测试区域最初因 WG 禁止骑乘而拒绝上马,明确开放测试区域 ride 后通过;未绕过保护,也未更改正式服 WG。
- 使用服务端射线和模拟玩家探针,未完成真人客户端贴图、动作与客户特定组合验收;没有执行真实服务器重启后的体型存档专项测试。
安装
正常维护时停止 Minecraft 服务端,移走旧 LiPet Jar,仅放入新版 Jar,保留数据与自定义配置,启动后确认 Enabling LiPet v0.29.7-SNAPSHOT。不要用 PlugManX 热卸载,/lipet reload 不能替换运行中的 Java 代码,不需要关闭电脑。
保留 0.29.6 的 info 1-6 行布局修复及之前的监守者、WG 和 Parro 功能。
API 参考:Bukkit SCALE。