Ok, i've looked at your code. You linepick is the same distance as your entityradius. You should change the linepick to be just a little longer.
About the un-evenness of the landing. What you could do is this. You translate the gravity downwards. Check the linepick has hit something. If it has, set the player to the Y co-ord of the PickedY() + the length of the linepick.
About the un-evenness of the landing. What you could do is this. You translate the gravity downwards. Check the linepick has hit something. If it has, set the player to the Y co-ord of the PickedY() + the length of the linepick.