跳到正文

Rabbit Pathfinding Fixed (Unofficial Forge Port)

作者:MikeStorm03

Fixes rabbit pathfinding / MC-150224. An unofficial Forge ecosystem port from the Fabric version

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

Disclaimer

This is a fork of the Rabbit Pathfinding Fixed. I do not claim ownership of the original code, assets nor changing any of the code logic. All credit goes to litetex. I just made a port for Forge ecosystem.

Rabbit Pathfinding Fixed

Fixes rabbit pathfinding efficiently.

As of 1.21.1 there are multiple problems with rabbit pathfinding:

Basic pathfinding

  1. The calculation of the jump height/velocity is incorrect and poorly implemented.
    This results in too small jumps for climbing over a block.
  2. Rabbits “stall” (no horizontal movement) during jumps – due to this they just jump upwards in the same place when trying to climb a block.
    This behavior is caused by `RabbitMoveControl` which only sets the (horizontal) speed correctly during movement but not while jumping.
  3. Rabbits are stuck / try to wander around forever.
  • The root cause is that `EntityNavigation` sets its timeouts based on movement speed.
    If the movement speed is 0 (this is the case when a rabbit/mob is “stuck”), the timeout is also 0… and if the timeout is 0 it’s ignored and therefore it’s executed forever (or until interrupted by something external like another goal).
  • Rabbits only have a single goal when idle: `WanderAround(Far). Most other entities also use LookAroundGoal`.
    Thus the above mentioned infinite navigation is never stopped in favor of executing another goal like in most other mobs.
  • `RabbitMoveControl#tick constantly updates the rabbits speed (RabbitEntity#setSpeed).<br/> While doing this it also indirectly executes moveControl#moveTo` thus the rabbit always tries to reach it’s last target even when it shouldn’t do that.

As of `1.21.4/24w46a` MC-150224 was fixed, correcting the jump height (1) and fixing the stall (2).

However all other parts – including optimizations and sanity checks in above mentioned fixes – are still missing.

Eating carrot crops

  1. Rabbits can’t reach the crops and always stop one block short of them.
    This is due to selecting the incorrect distance from the crop block (it’s `1 but should be 0`).
  2. Rabbits eat the crop instantly even while still jumping and being in the air.
  3. The goal/behavior is immediately aborted (after a few ticks – when a target crop block was selected) due to incorrect implementation of `shouldContinue and isTargetPos` methods.

Detailed video comparisons are also available.

常见问题

Rabbit Pathfinding Fixed (Unofficial Forge Port) 支持哪些 Minecraft 版本?

Rabbit Pathfinding Fixed (Unofficial Forge Port) 支持 Minecraft Java 版 1.20–26.3,共 22 个版本,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

Rabbit Pathfinding Fixed (Unofficial Forge Port) 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。

评论

登录后评论和评分

MikeStorm03 的其他作品

查看全部 →