跳转到内容
我的世界XyeBBS论坛3群 进群吹水聊天!众多整合包作者、插件作者、玩家在内哦!不定时发福利,公布重要通知!
...

兔子寻路已修复

(Rabbit Pathfinding Fixed)
高效修复兔子寻路
仅客户端

修复了兔子寻路效率低下的问题。

截至 1.21.1 版本,兔子寻路存在多个问题:

基础寻路

  1. 跳跃高度/速度的计算不正确且实现糟糕。
    这导致兔子在试图越过方块时跳跃幅度太小。
  2. 兔子在跳跃过程中“停滞”(无水平移动)——因此当它们试图攀爬方块时,只会原地向上跳跃。
    这种行为是由 RabbitMoveControl 引起的,它仅在移动期间正确设置(水平)速度,而在跳跃期间则不会。
  3. 兔子卡住或试图永远四处游荡。
    • 根本原因是 EntityNavigation 根据移动速度设置其超时时间。
      如果移动速度为 0(当兔子/生物“卡住”时就是这种情况),超时时间也为 0……而如果超时时间为 0,它就会被忽略,从而导致该行为永远执行(直到被外部因素中断,例如另一个目标)。
    • 兔子在空闲时只有一个目标:WanderAround(Far)。大多数其他实体还会使用 LookAroundGoal。
      因此,上述无限的寻路行为永远不会停止以转而执行其他目标,这与大多数其他生物的情况不同。
    • RabbitMoveControl#tick 会不断更新兔子的速度(RabbitEntity#setSpeed)。
      在此过程中,它还会间接执行 moveControl#moveTo,因此即使兔子不应该这样做,它也总是试图到达其最后一个目标。

截至 1.21.4/24w46a,MC-150224 已得到修复,修正了跳跃高度 (1) 并解决了停滞问题 (2)。
然而,所有其他部分——包括上述修复中的优化和健全性检查——仍然缺失。

食用胡萝卜作物

  1. 兔子无法到达作物,总是在距离作物一个方块的地方停下。
    这是由于选择了错误的距离值(当前为 1,但应为 0)。
  2. 兔子即使在跳跃中或处于空中时也会瞬间吃掉作物。
  3. 由于 shouldContinue 和 isTargetPos 方法的实现不正确,该目标/行为会立即中止(在选择目标作物方块后的几个刻内)。

其他修复

  • 成年兔子头部的客户端旋转角度大多数时候略微向上——MC-306682 影响 26.1 或更高版本

详细的 视频对比 也可供查看。

资源外链

选择礼物

使用社区积分,为喜欢的作品送上一份支持

加载中...

打赏记录

感谢每一位送出礼物的社区成员

0 次支持0 积分
正在加载内容…