Step to Reproduce
1. Make a tall tower of blocks
2. Drop any mobs except the ones that don't take fall damage/flying mobs
---> ❌ They take fall damage before they even hit the ground.
Original Description
When dropping a turtle from a great height, the turtle will die long before reaching the ground
Related issues
is duplicated by
relates to
Attachments
Comments

This not only applies to turtles, but to other mobs as well. Players themselves aren't affected by this bug.

I built an 80-block tower and used a command block to drop a rabbit off the side every few seconds. I then placed a solid block as a floor on the side of the tower under the falling rabbits in order to measure (roughly) the rabbits' height above the floor at each of 3 points:
Damage height: the point where it turned red
Death height: the point where it started to rotate for the death animation
Stop height: the point where it stopped falling and despawned
Here's what I learned:
The damage height is not constant, even for the same floor level. Most of the mobs started taking damage at the same block, but a relative few turned red one block higher. Possible explanations might be that they weren't spawning at the exact same Y coordinate, or that the fall acceleration recalculation was desynchronized from the fall duration so the momentum varied from one instance to another.
The death height varied in proportion to the total fall distance (or equivalently, inverse proportion to the floor height). In other words, near the top they died only 4 blocks above the floor, while near the ground they died about 9 blocks above the floor.
The stop height seemed to be anywhere from 0.5 to 3.5 blocks above the floor. It's proportional to total fall distance, probably variable for similar reasons as damage height.
Interpretation: It could be argued that the game uses the mob's dynamic rate of fall and height above the floor to calculate how much longer it has until impact. When that reaches a certain threshold, it starts applying damage to the mob. Once the mob runs out of health, the game starts its death animation, but there's an unexplained random element to how long the animation will take or how far it will fall during that time. When the death animation ends, the mob dies and drops its drops, regardless of how far above the floor it happens to be at that moment. The bug seems to be that too much padding is included in these calculations to ensure the mob has finished dying by the time it impacts the floor. Improvement may be possible, but only if the random elements affecting the calculations can be reduced or removed.

Affects 1.19.10.20

This behavior has at least four causal factors. The first two are server-side, and the second two are client-side (purely visual). I will use Auldrick's terminology from the comment above in my account. Here is what I see going on:
When a mob dies from fall damage, the game does not update its position to the point of impact. Instead, the mob 's position at death is its position on the tick before impact. Impact is calculated based on its expected trajectory, but if the trajectory collides with a block that will cause enough fall damage to kill the mob then the mob's position does not get changed. (Projectiles hitting mobs behave similarly, see MCPE-109423). (I am not sure if the trajectory and fall damage is calculated in the tick just before impact or in the tick in which it would be expected to impact, but that does not matter for my analysis.) As a result of not updating the position to match the point of impact, the point of death can be a couple of blocks above the point of impact from a long fall, because the mob is moving > 1 block/tick. You can see that this is happening in
and
, which show 11 rabbits falling from heights of 70 through 80 blocks. In the first video the cobblestone makes the rabbits all fall exactly the same distance, and as a result they all have the same stop height above the point of impact. In the second video the rabbits' stop heights display a pattern that roughly corresponds with how far away they should be from impact on the last tick before death. The speed on impact from a fall from ~75 meters is ~1.9 m/s, and that corresponds to the roughly 2-block spread in their stop heights.
There is some server-side randomness in stop height (essentially Auldrick's point 1). This is evident in the fact that
does not show a perfect pattern. Some of the columns show varying stop heights even while the overall pattern is still evident. You can observe a similar randomness in fall damage if you give yourself the health_boost effect and repeatedly teleport yourself high in the air (for example, from a 53-block fall I tend to take either 49 or 47 damage). The range of server-side randomness in stop height seems to correspond to the distance the mob would be moving in one tick at the end of the fall (~1.9 blocks), and that suggests the cause could be something like fall distance not being incremented consistently in one of the ticks during the fall, or the calculation of impact from trajectory involving a random factor.
Client-side position during free-fall is distorted by distance.
and
show how the stop heights of the falling rabbits change as I move away from the place of impact. (I controlled for the distortion in the Fall compare 1 and 2 as much as I could by standing very close to the point of impact and not looking up at the entire fall--that is why I'm confident that I am describing server-side behavior in points (1) and (2) above). If you were to watch the entire fall you would see the mobs rubberband and stop at wildly varying heights because they are 70+ blocks from the player at the start. For this reason I think that Auldrick's point 2 about stop height being proportional to distance fallen is an artifact of him standing at the top of his tower to push rabbits off. They appear to stop higher only because they are falling farther from player, and the rendering/animation is distorted proportionally to distance from the player camera.
Client-side position during free-fall lags horrendously. This is evident partially in the distorted stop heights as you get farther away, but even more in the damage/death heights being higher than the stop heights in every case. As you get farther away the damage/death heights are proportionally farther from the stop heights. That implies that the client-side position of the mobs is proportionally farther behind the server-side position. In the last falls of
you can see that the damage/death heights are > 30 blocks above the stop heights, which is nearly half of the total fall distance!
Based on my observations, I am not persuaded by Auldrick's hypothesis that the difference between damage height and stop height is due to the game trying to synchronize stop height with the moment of despawn. If that were so, there would be no reason for the visual distances to vary based on distance to the player. Moreover, there can't be a difference between damage height and death height because fall damage occurs all at once. The mob turning red is just its death animation. It's death animation begins in the tick that the server declares it to be dead. Therefore it should begin upon impact, not before. It looks to me like the client is simply animating its correction of the mobs' position to the server-side position at death (the stop height).

I test it an it still happen in 1.19

Affects 1.20.1
Even though mobs may not take fall damage (falling in water), they can still be affected by this bug and die mid-air.

I have reported a relating issue at MCPE-173219

relates to MC-173789.

Confirmed in 1.21.44

Confirmed in 1.21.60.21