Compatibility
Minecraft: Java Edition
1.21.1–1.21.4
Platforms
Fabric
Supported environments
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+Links
Creators
Details
Licensed Apache-2.0
Published 2 months ago
Updated 3 weeks ago
Fixes rabbit pathfinding efficiently.
As of 1.21.1 there are multiple problems with rabbit pathfinding:
Basic 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
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
- 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.