In vanilla, you take 1/2 heart of damage for every block fallen above 3 blocks. In PocketMine-MP, this appears to be 5. I don't understand why this is a problem, since the logic for fall damage appears correct, but it appears that the fall calculation is always less than the actual distance by 2 blocks.
This is partly due to a hacky checkGroundState() override for Players which checks a whole block beneath the player to see if they are on the ground.
Maybe use PlayerFallPacket?
Using PlayerFallPacket would allow hacked clients to cheat their way out of taking fall damage. I don't know why Mojang added it, but it's not a sensible solution. This is a core bug which hasn't yet been isolated.