搜索

0.27.27 MM 模型与骑乘等级

模型回收、全息跟随、模型驾驶座和等级解锁配置。

本次调整

  • 收回宠物时按真实实体查询 ModelEngine 容器,销毁其中的模型、渲染器和座位,再清理实体。MM 的 onSpawn 自行挂载模型也纳入清理,不要求在 LiPet 重复填写模型 ID。
  • 模型宠物的头顶名牌改用独立 TextDisplay 跟随,不再依赖会被 ModelEngine 改写的乘客显示包。原版宠物继续使用原来的乘客名牌。
  • 有驾驶座的模型优先通过 ModelEngine 公共驾驶座 API 上马,骑乘期间不再关闭它需要的 AI 感知。没有驾驶座的模型仍使用原版载体骑乘。
  • 查询骑手时同时识别 ModelEngine 的虚拟座位,跟随、战斗和名牌逻辑不再把模型骑手误判为未骑乘。
  • 加入宠物等级门槛,空手右键、/lipet mount、信号棒和 MM mountmodel 事件均校验主人和解锁等级。

配置骑乘等级

全局默认写在 plugins/LiPet/pet-types.yml:

defaults:
  behavior:
    # 是否允许骑乘;false 时即使等级足够也不能骑乘。
    mountable: true
    # 解锁所需的宠物等级,范围 1 到该宠物的 growth.maximum-level。
    # 默认 1 保留旧版行为;下例设置为 10 级。
    riding-unlock-level: 10

只限制某一只宠物时,在对应的 plugins/LiPet/宠物/*.yml 中覆盖:

types:
  # 替换为现有宠物类型 ID,不要新建同名重复类型。
  wolf:
    behavior:
      # 狼达到 15 级才能骑乘,其他宠物仍使用公共默认值。
      riding-unlock-level: 15

修改后执行 /lipet reload。宠物死亡扣级或调级后低于门槛,会重新锁定骑乘;正在骑乘的玩家会在骑乘检查时下马。未达等级的中文提示位于 messages.yml 的 pet-ride-locked,支持 <level> 和 <required_level>。

MM / ModelEngine 使用说明

如果模型由 MM 自己挂载,LiPet 类型使用 spawn.provider: MYTHIC_MOBS 和真实 Mob ID,model.provider 可以保持 NATIVE,无需再次挂同一个模型。

模型有驾驶座时,LiPet 选择 ModelEngine 的 WALKING / FLYING 控制器;behavior.mount-type 决定地面或飞行,AUTO 依据载体实体类型。以 HUSK 等地面实体作为飞行模型载体时,应明确配置 mount-type: FLYING。模型驾驶座的运动细节由 ModelEngine 处理;LiPet 的原版速度控制仍用于没有模型驾驶座的载体骑乘。

模型必须包含合法驾驶座骨骼才能使用模型座位。战斗模型的外观本身不代表它含有驾驶座,不能只靠模型名称判断。名牌高度继续使用 pet-types.yml -> nameplate.vertical-offset。

更新方式与验证边界

正常停服后替换 Jar,再完整启动;不要用 PlugManX 热卸载或 /reload 替换程序。默认只补缺失配置,不覆盖既有价格、模型 ID、属性和中文消息。

本次增加了模型销毁、虚拟座位、等级边界与跨区域读取保护的回归测试。服务器端验证使用隔离 Folia 26.2、MythicMobs 5.13.0-SNAPSHOT 和 ModelEngine R4.1.0;具体结果见本次交付验证记录。自动探针的模拟玩家不能代替真实客户端对模型动画、座位偏移和全息显示的验收。