The bug
When mobs or the player have jump boost and they fall as high as they jumped they won't take fall damage. This is not the case for horses which take fall damage.
How to reproduce
Summon a horse with a
generic.jump_strength
attribute of 1.0 (the maximum obtainable in survival). As with all horses, it will have ageneric.safe_fall_distance
attribute of 3.0 and aminecraft:generic.fall_damage_multiplier
attribute of 1.0./summon horse ~ ~ ~ {Tame:1b,SaddleItem:{id:"saddle",Count:1b},Attributes:[{Name:"minecraft:generic.jump_strength",Base:1.0d}]}
Give it Jump Boost 4 (the maximum supported under MC-10755)
/effect give @e[type=horse,limit=1,sort=nearest] jump_boost infinite 3
Mount the horse and perform a fully-charged jump (on a level surface)
❌ The horse takes damage
In other words, as of 24w06a, the core issue here is that the new generic.safe_fall_distance
attribute is always 3.0 for horses instead of scaling with their base jump height (preliminary testing using /summon horse
and /attribute @e[type=horse,limit=1,sort=nearest] minecraft:generic.safe_fall_distance get
confirms that it does not scale). It would be handy if the safe fall distance would "intelligently default" when a horse is summoned with only the jump strength specified (in line with my suggestion on MC-268106) but this is not strictly required to mitigate the survival impact of this bug.
Attachments
Comments 6
No. This does not happen with any supported amplifiers (the images above erroneously show the effect with amplifier 5).
I was able to reproduce this in 24w06a by performing a fully-charged jump on a horse with jump strength 1.0 (the maximum obtainable in survival) and Jump Boost 4. This issue should be reopened, and the "How to reproduce" section should be changed to the following:
Summon a horse with a
generic.jump_strength
attribute of 1.0 (the maximum obtainable in survival). As with all horses, it will have ageneric.safe_fall_distance
attribute of 3.0 and aminecraft:generic.fall_damage_multiplier
attribute of 1.0./summon horse ~ ~ ~ {Tame:1b,SaddleItem:{id:"saddle",Count:1b},Attributes:[{Name:"minecraft:generic.jump_strength",Base:1.0d}]}
Give it Jump Boost 4 (the maximum supported under MC-10755)
/effect give @e[type=horse,limit=1,sort=nearest] jump_boost infinite 3
Mount the horse and perform a fully-charged jump (on a level surface)
❌ The horse takes damage
In other words, as of 24w06a, the core issue here is that the new generic.safe_fall_distance
attribute is always 3.0 for horses instead of scaling with their base jump height (preliminary testing using /summon horse
and /attribute @e[type=horse,limit=1,sort=nearest] minecraft:generic.safe_fall_distance get
confirms that it does not scale). It would be handy if the safe fall distance would "intelligently default" when a horse is summoned with only the jump strength specified (in line with my suggestion on MC-268106) but this is not strictly required to mitigate the survival impact of this bug.
After thinking more about this it would be better to make horses simply not accumulate take fall damage when they are higher than the point they jumped from, similar to players using wind charges. This could be implemented in the base Mob class such that when a mob (which normally takes fall damage) is falling, if it is higher than a new NBT field called launch_origin_y
, fall damage accumulation is skipped. This field would be set to negative infinity when the entity is on the ground, and would not be updated if the entity is hit by a blast mid-air if the new value would be greater than the old one.
Not true for high enough levels of jump boost. I am not sure if is it a bug, but jump height grows exponentially with jump boost level unlike fall damage reduction, so if you give yourself or a mob very hight level of jump boost, not all fall damage will be prevented.