搜索

2.3.5 低座位下马净空

低座位下马按方块碰撞寻找净空,避免脚部卡入地面,保留座位高度。

问题与修复

在 model-seat.y: 0.5 的复现中,地面上表面为 Y=65,而骑手脚部坐标为 Y=64.9。2.3.4 下马后只同步原坐标,脚部仍与地面重叠;本次落点修正为 Y=65.01,玩家身体不再与方块碰撞。

  • 保留原有座位高度与模型文件,只调整下马落点。读取方块真实碰撞形状,可区分完整方块、半砖、楼梯和栅栏。
  • 检查玩家宽度与站立高度,优先使用同一列的方块上表面;受阻时在附近有限范围寻找净空,不把天花板当作地面向上穿越。
  • 当前身体没有碰撞时保持原位置;飞行下马不会被强制送往地面。
  • 等待 ModelEngine 已排队的座位更新完成后再同步落点,避免 Folia 再次写回低座位坐标。
  • 首个移动事件提前到达或被取消时也处理落点;针对 Folia 的异步回退,只修正与刚取消首包匹配的旧目标。其他传送、取消下马和立即换乘保持原有行为。

搜索有明确边界:垂直最多上移 1.5 格,水平按两个距离检查邻近候选;只读取已加载且当前区域允许访问的区块。周围完全封闭或区块不可读取时,不强行穿墙或加载远处区块;这不是通用防跌落或危险方块保护。

更新方法

正常停服并备份,移出旧 LiPet Jar,仅放入 LiPet-2.3.5.jar,启动确认 Enabling LiPet v2.3.5。保留已有配置、数据库、CE 与模型资源;model-seat.y: 0.5 可以继续使用。本次无需覆盖配置或重新分发资源包。

客户提供的问题模型仅用于隔离测试,不加入交付包或公开附件。F 盘待更新目录为暂存,正式服尚未替换。

验证范围

892 项单元测试全部通过,新增完整方块、半砖、楼梯、栅栏、天花板、邻近净空、空中下马和不可读区域检查。Paper 26.2 / Folia 26.2 共 224 项运行检查通过;真实问题模型使用 y: 0.5,确认下马后身体净空,并回归取消移动、取消下马、外部传送与立即重新骑乘。

这是服务端与模拟连接验证,客户实际客户端和具体场景仍需复测。

Jar SHA-256:46f22949c20d0ec852cd636374ef47e1dc895e6d450541811e630ef5211836d7。