Completely redesigned the way the API works to allow for maximum compatibility with other platforms like papermc and to allow for cross version compatibility without separate modules for every version.
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.