鱼不会卡住

鱼不会卡住

一个小型模组,修复了鱼完全停止移动的问题(MC-182763)

FishNoStuck

一个小型模组,修复了鱼类完全停止移动的问题 MC-182763

支持 Minecraft 1.17.x-1.20.x,适用于 Fabric(Quilt 可能兼容?)/Forge

工作原理

鱼类有一个 AI 目标,用于扫描最近的鱼,并随机选择一个领队和跟随者。然后,它会引导跟随鱼跟随领队。

此模组通过检查最近的鱼是否为领队来应用对 FollowFlockLeaderGoal 的漏洞修复。如果不是领队,则会将其添加到跟随者列表中。

如果领队被添加到跟随者列表中,鱼领队将停止移动,并且不会与它们的跟随者一起去任何地方(永远!)——除非你攻击它们,或者切换到生存模式并游到它们附近。

有关 Minecraft 漏洞报告,请参阅:https://bugs.mojang.com/browse/MC-182763

此模组中的其他修复:

  • 在躲避实体目标中,使用 EntitySelector.NO_CREATIVE_OR_SPECTATOR 代替 EntitySelector.NO_SPECTATORS 来检查实体谓词。
  • 在 FishSwimGoal 中,将 checkNoActionTime 设置为 false,以修复鱼卡在当前位置的问题。
  • 如果跟随鱼被杀死,则减少领队鱼的 schoolSize。

性能影响

此模组不会提升任何游戏性能,或者影响非常小,尤其是对鱼类而言。详见 FishNoStuck#1。

安装方法

  • 安装 Fabric Loader/MinecraftForge
  • 将模组复制到 mods 文件夹中

背景故事

我在开发 Fish of Thieves 时,查看了 FollowFlockLeaderGoal 并弄清楚了它的运作方式,然后将其转换为使用 Brain 系统。

通过在实体上方显示调试数据。

调试数据

然后我意识到有些不对劲。一条具有 schoolSize=8 的鱼具有 isFollower=true 属性,并且有一个领队。这按理说是不可能的。所以,这就是这个模组的开端。

另一个调试数据