The safe_fall_distance attribute is supposed to decide the distance the player can fall before they start receiving fall damage, while fall_damage_multiplier should only decide how much is taken; but when fall_damage_multiplier is less than 1, it prevents damage at heights where the damage would be less than 1.
Here’s an easy way to reproduce:
Set Safe Fall Distance to 0 with
attribute @s minecraft:safe_fall_distance base set 0
Jump or fall 1 block, dealing a half heart of damage. Works as expected.
Set Fall Damage Multiplier to 0.5 with
attribute @s minecraft:fall_damage_multiplier base set 0.5
Jump or fall 1 block again. Instead of taking half a damage, it’s negated entirely.
Expected Result: Player takes partial damage, the same way Feather Falling works.
Produced Result: No damage is taken at all?
Main reason this is a problem is that one of the datapacks I use makes players smaller, so falling 2 blocks inflicts damage. I thought trying to make the damage more bearable by decreasing it would work, but it just effectively undoes the change to their safe fall distance.
Was this issue present in 1.21.4?