搜索

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。