Fixes rabbit pathfinding efficiently.
As of 1.21.1 there are multiple problems with rabbit pathfinding:
- The calculation of the jump height/velocity is incorrect and poorly implemented.
This results in too small jumps for climbing over a block. - 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 byRabbitMoveControl
which only sets the (horizontal) speed correctly during movement but not while jumping. - 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 useLookAroundGoal
.
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
).
While doing this it also indirectly executesmoveControl#moveTo
thus the rabbit always tries to reach it's last target even when it shouldn't do that.
- The root cause is that
Note
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.
- 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's1
but should be0
). - Rabbits eat the crop instantly even while still jumping and being in the air.
- The goal/behavior is immediately aborted (after a few ticks - when a target crop block was selected) due to incorrect implementation of
shouldContinue
andisTargetPos
methods.
Detailed video comparisons are also available.
Installation guide for the latest release
Add the following to build.gradle
:
dependencies {
modImplementation 'net.litetex.mcm:rabbit-pathfinding-fix:<version>'
// Further documentation: https://wiki.fabricmc.net/documentation:fabric_loom
}
Note
The contents are hosted on Maven Central. You shouldn't have to change anything as this is the default maven repo.
If this somehow shouldn't work you can also try Modrinth Maven.
See the contributing guide for detailed instructions on how to get started with our project.