According to Minecraft Wiki:
The position that the player or entity lands after teleporting is based on an systematic algorithm; the gateway searches for a non-transparent block starting from the north-west corner at the topmost height (Y=255) within a 5 block radius around the gateway portal block. If there is a block at that position, then the entity is teleported on that block. If there is no block, then the next position along the Z-axis is searched (shown as the lapis lazuli block on right). This continues along each column in an 11 × 11 area at the same Y-level with the exception of blocks above, below, or directly adjacent (including diagonals) to the portal block. If there are no blocks, it moves one Y-level down and repeats the sequence from the north-west corner again. It will continue doing this until every height is checked, and if there are no non-transparent blocks within any of these points it will always teleport the entity exactly two blocks above the gateway portal block.
This means player should not be teleport to air, But in Sponge server, it always teleport player into air and cause them die by hit ground or fall into void. It’s too many player comes to me to argue this, thus I really need a solution (I can’t always suggest them travel over 1000 blocks by place block and walk through). Seems Sponge change the behavior of end gateway portal and go wrong, can this be fixed?
When travel through end gateway portal, teleport location is this high:
and console show a warning:
[23:59:22 WARN]: Couldn't save exit portal at BlockPos{x=0, y=85, z=-1280}
This can be reproduce by start a new server without any change of configuration.
Version: SpongeVanilla version 1.11.2-6.0.0-BETA-252