
兔子寻路已修复
高效修复兔子的寻路问题
查看大图修复兔子寻路效率问题。
自1.21.1起,兔子寻路存在多个问题:
基础寻路
- 跳跃高度/速度的计算不正确且实现拙劣。
这导致攀爬方块时的跳跃过小。 - 兔子在跳跃时会“卡住”(无水平移动)——因此尝试攀爬方块时只会原地向上跳。
此行为由RabbitMoveControl引起,它只在移动期间正确设置(水平)速度,而在跳跃时没有这样做。 - 兔子会被困住/永远试图四处游荡。
- 根本原因是
EntityNavigation根据移动速度设置其超时时间。
如果移动速度为 0(当兔子/生物被“卡住”时),超时时间也为 0……而如果超时时间为 0,则会被忽略,因此该行为会永远执行(直到被其他外部因素如另一个目标打断)。 - 兔子空闲时只有一个目标:
WanderAround(Far)。大多数其他实体还会使用LookAroundGoal。
因此,上述无限的导航永远不会因执行其他目标而被停止,这一点与大多数其他生物不同。 RabbitMoveControl#tick会不断更新兔子的速度(RabbitEntity#setSpeed)。
在此过程中,它还会间接执行moveControl#moveTo,因此兔子总是试图到达其最后的目标,即使它本不该这样做。
- 根本原因是
自
1.21.4/24w46a起,MC-150224 已修复,纠正了跳跃高度(1)并修复了卡顿(2)。
然而,所有其他部分——包括上述修复中的优化和健全性检查——仍然缺失。
食用胡萝卜作物
- 兔子无法够到作物,总是在距作物一个方块处停下。
这是因为选择了与作物方块不正确的距离(应为0,实际为1)。 - 兔子即便还在跳跃并处于空中,也会瞬间吃掉作物。
- 由于
shouldContinue和isTargetPos方法实现不正确,该目标/行为(在选择目标作物方块后的几个刻内)会立即被中止。
其他修复
- 成年兔子的头部在客户端旋转时,大部分时间会略微向上——MC-306682 影响 26.1 或更高版本
详细的视频对比也可供查阅。
正在加载版本记录…



正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。