Skip to main content

The problem this solves

On a server running rLogin, PlayerJoinEvent fires while the player is still frozen. They cannot move, cannot open an inventory, and cannot use anything you hand them. Give a kit there and it lands on someone who is not really in the game yet. RLoginAuthenticateEvent fires at the moment they can.

Events

Fired once a player is authenticated and free to play, whatever got them there — a password, a premium handshake, a restored session, a recovery code, or an administrator.
On a proxy network this fires on every backend the player lands on. Check isFirstServerOfSession() before anything they should see once, or your welcome message greets them again on every hop.
Fired when a player creates an account with /register, once, on the server where they typed it.Premium players never fire it — they are let in without ever registering — so read it as “new password account”, not “new player”.
Neither is cancellable, deliberately. Both report something that has already happened; an event that looked cancellable but left the player authenticated would be worse than one that never offered. To refuse a player, use the permission system or kick them from the event. Both are always fired on the player’s own thread, so a listener may touch the world — on Folia as well as Paper.

Depending on rLogin

Through JitPack, which builds from the release tag.
Then declare rLogin in your plugin.yml so it loads first:
rlogin-api is published separately and carries the platform-neutral types (RLoginAccount, AuthReason, Storage). Depend on that one if you are writing something that has no business touching Bukkit — a custom storage backend, for instance.

Stability

rlogin-api is what the version number protects: changes there are treated as breaking someone else’s build. The events in rlogin-paper are equally part of the public surface — everything else in that module is internal and may be rearranged without warning.

Something missing?

If you need a hook that isn’t here, say so — the surface is deliberately small, not finished.