Du kannst die Player Velocity holen.
Errechnen ob er fällt oder in eine horizontale richtung fliegt/ gestoßen wird.
Entweder du bist lazy und schaust einfach ob er abrupt stoppt, solange seine velocity höher ist als normal. Hierbei müsstest du lediglich die x und z veränderung beobachten über ticks und kannst daraus erschließen, was er macht und wie er sich verhält. Fallschaden übernimmt ja mc
oder du berechnest im voraus, ob er etwas treffen würde in dem du seine flugbahn checkst. eine mischung aus beidem wäre vermutlich am besten.
Wenn du die Flugbahn vorberechnest, bedenke, dass er auf dem weg dahin ja evtl noch etwas an seiner Flugbahn ändern könnte.
Ich vermute, dass die lazy methode zumindest weniger fehler anfällig ist und auch nicht so gefährded wenn der server mal kurz hängt.
Da solltest du aber auf jeden Fall einen großzügigen Threshold benutzen, damit nicht stehen bleiben etc als solches erkannt wird.