搜索

0.27.7 骑乘名牌与视角转向

骑乘名牌对所有玩家隐藏、载体名称清理、下马恢复,以及原地与持续前进的实时视角控制。

更新日期:2026-09-01;对应插件版本:0.27.7-SNAPSHOT。

本版处理两个骑乘问题:隐藏名牌时旁观者仍能看到宠物名称,以及按住前进键后转动视角却仍沿旧方向移动。现有宠物名字、属性、速度配置和数据库记录无需重新创建。

骑乘时对所有玩家隐藏名牌

旧实现主要对当前骑手调用隐藏接口,旁观者仍能看到 TextDisplay;原版载体保留的 customName 也可能在玩家瞄准时出现。

开启 nameplate.hide-while-ridden 后,骑乘中的名牌对骑手和其他玩家统一隐藏,同时临时清空原版载体的名称,避免只隐藏双行显示却仍露出单行文字。这里调整的是运行时显示,不会修改宠物档案里保存的名字。

普通上下马继续复用同一个 TextDisplay,不通过反复删除、重新挂载来隐藏。下马后恢复文字;把隐藏开关设为 false 并重载时也恢复显示。双行名牌关闭或刷新失败后的单行回退,同样遵守骑乘隐藏开关。

配置与升级

配置位于服务器 plugins/LiPet/pet-types.yml 的顶层。把下面字段合并到已有节点,保留自己的名牌文字、颜色、偏移及其他设置:

# 双行宠物名牌配置;与 defaults、types 同级,不放到某只宠物的 model 节点。
nameplate:
  # 布尔值:true 使用双行名牌;false 使用原版单行名称。
  # 无论哪种显示方式,都继续遵守下方骑乘隐藏开关。
  enabled: true
  # 布尔值:true 骑乘时对所有玩家隐藏宠物名称,下马恢复;false 骑乘时保留显示。
  # 隐藏不会改变宠物档案中的名字,也不会因为普通上下马反复删除重建 TextDisplay。
  hide-while-ridden: true

# 骑乘的独立显示设置,不与 nameplate.hide-while-ridden 相互替代。
riding:
  # 布尔值:true 骑乘 Boss 宠物时隐藏血条,下马恢复;false 保留血条。
  hide-boss-bar-while-ridden: true
  1. 停服并备份 plugins/LiPet/ 与数据库。
  2. 换用 LiPet-0.27.7-SNAPSHOT.jar,确保插件目录只保留一个 LiPet Jar,然后启动服务器。
  3. 执行 /lipet status 确认实际加载版本,检查骑乘隐藏开关是否符合需要。
  4. 完成首次换 Jar 后,后续修改上述名牌开关可执行 /lipet reload;旧版本的重载命令不能代替换 Jar 后重启。

升级只补缺失配置或注释,不覆盖管理员已有的隐藏开关、名字、颜色、速度或注释。已有 hide-while-ridden: false 不会被强制改成 true;希望启用全员隐藏时,需自行调整这一值。

视角转向持续更新

旧逻辑依赖按键状态变化时记录视角:一直按住前进键时,转头不一定产生新的按键事件;无移动输入时也可能不更新旋转。骑在载体上的玩家移动事件又不能可靠覆盖全部视角变化。

现在上马后立即启动连续骑乘控制,每 tick 使用骑手的当前视角和按键状态:

  • 不按移动键,只转动视角时也更新宠物朝向。
  • 一直按住前进键转头时,移动方向跟随最新视角,无需先松开再按键。
  • 飞行骑乘继续结合当前俯仰与跳跃输入控制升降。
  • 下马、退出或骑乘对象失效后停止对应任务;切换骑乘关系时旧任务不会继续驱动上一只宠物。

原版生物的 LookControl / MoveControl 可能在下一 tick 把朝向拉回旧值,或把俯仰清零。本版在骑乘期间临时关闭 Mob 载体的 aware,暂停这部分原版感知与方向控制;不会关闭 hasAI,也不会切换坐下状态或取消实体物理、动作。

下马、退出、控制异常或切换骑乘后,在宠物实体所在区域恢复进入本次骑乘前的 aware 状态;恢复操作须匹配本次骑乘记录,避免旧骑乘的迟到任务覆盖新骑乘。若管理员在骑乘中主动调整 AI 或坐下状态,会保留这次新选择,不用旧快照强行覆盖。

/lipet reload 刷新已召唤宠物时也会检查真实骑乘关系:仍在骑乘时保留坐下状态,不重新开启会抢回朝向的原版感知;名牌样式和隐藏开关仍按新配置刷新。

跟随、战斗和延迟回传在实际执行前也会检查骑乘关系,包含玩家位于模型嵌套座位中的情况;仍被骑乘的宠物不会被这些后台动作重新转向或回传。

原有 behavior.riding-speed 与 behavior.jump-velocity 继续控制速度和跳跃。修复本身不要求新增速度配置,也不改变召唤、持有或骑乘权限。

验证结果

默认兼容构建(Paper 1.21.11 API、Java 21 字节码)与 -Ppaper-26.2 构建各 264 项测试通过,失败、错误和跳过均为 0。构建所用 API 版本与下方实际运行验证的服务端版本分别记录。

同一最终 Jar 在 Paper 26.1.2 Build 70 完成狼骑乘探针,在 Paper 26.2 Build 111 完成狼及蝙蝠骑乘探针,均通过。蝙蝠覆盖飞行宠物的相同控制、AI 恢复和多层座位流程:

  • 使用服务器原生 ServerPlayer / CraftPlayer 作为骑手与观察者,骑乘时已有和后来出现的观察者都不能看到名牌;载体原版名称同步清空。
  • 下马后恢复名牌文字与可见性,TextDisplay UUID 保持不变;原 aware 和 AI 状态恢复。
  • 不触发新的输入事件,只改变骑手视角,也能在原地更新到 yaw 90°、pitch 20°。
  • 持续前进时将 yaw 从 135° 改为 -90°,无需松开按键即可更新转向。
  • 取消上马或下马时以事件结束后的真实乘客关系为准,避免误隐藏、误恢复或停止仍有效的骑乘控制。
  • 执行真实 /lipet reload,将 hide-while-ridden 从 false 切换到 true,显示状态随配置更新。
  • 多层 ArmorStand 座位链下,yaw 从 45° 改为 -135° 仍可驱动正确宠物;MONITOR 阶段取消下马后,仍保持有效控制。
  • 骑乘期间原版 AI 保持开启,仅临时暂停 aware,不以关闭 hasAI 规避方向冲突。

最终 Jar 大小:833742 字节;SHA-256:F05F9C596457C614E363308961A63E81D21E37941A3A441E27F331BF13F5D3FB。

这些结果来自服务器内原生玩家对象与实体状态探针,不是真人网络客户端视觉测试。多层 ArmorStand 用于验证模型座位结构,不代表真实 ModelEngine / MEG 模型、动画或资源包画面已经验证。本轮未运行 Folia,不能将 Paper 结果表述为 Folia 实服验证。