Rails are great when you have them, but, some entities in the game you may want to land on, but don't have rails dock with. This is especially true of landing on a planet where there is gravity. The effect of gravity can cause a ship to bounce around on the surface after exiting, like the server I was on a few days ago. I watched my little craft bounce around, and nearly fall off a cliff. All this bouncing around causes the server to perform many additional computations, which can increase lag. If collision damage is on, this bouncing would likely result in the loss of your ship.
To solve this, I propose a "soft dock"/landing mechanic. When the lowest portion of a ship approaches within 2 blocks of the surface of another entity, the landing mechanic kicks it. First it checks the lowest contact points of the ship, and then calculates which points would touch the surface. If 3 or more points would touch the surface and form a polygon covering more than half of the ship's mass, then the a notice would flash "Stop motion to land". When the player releases all thrust movements, the ship will land on the surface. After landing, it will behave as a docked entity in terms of physics, but there would be no resource transfers, and no entity switching. To 'undock', the player would hold down the "up" button, they would see a countdown notification, 3...2...1.., at which point the player ship would leave the surface with .5 seconds of 200% upward thrust.
This would make planet landing less of an issue on servers and also allow servers and players to experiment with collision damage without sacrificing the ability to land on planets.
To solve this, I propose a "soft dock"/landing mechanic. When the lowest portion of a ship approaches within 2 blocks of the surface of another entity, the landing mechanic kicks it. First it checks the lowest contact points of the ship, and then calculates which points would touch the surface. If 3 or more points would touch the surface and form a polygon covering more than half of the ship's mass, then the a notice would flash "Stop motion to land". When the player releases all thrust movements, the ship will land on the surface. After landing, it will behave as a docked entity in terms of physics, but there would be no resource transfers, and no entity switching. To 'undock', the player would hold down the "up" button, they would see a countdown notification, 3...2...1.., at which point the player ship would leave the surface with .5 seconds of 200% upward thrust.
This would make planet landing less of an issue on servers and also allow servers and players to experiment with collision damage without sacrificing the ability to land on planets.