The event is now fired from the authenticator thread so that the AsyncPlayerPreLoginEvent and PlayerPreLoginEvent are fired with the changed UUID and name. Also, the player's IP (InetAddress), was added as a parameter to the event, but can't be edited.