
AuthCore
Standalone login and registration, fully configurable in game.

AuthCore locks an offline mode server behind a password without dragging in a login plugin from a decade ago. Players register once, log in on join, and every screen they see is editable in game.
It knows the difference between a paid account and a name somebody typed. The premium resolver asks Mojang who owns a name, so a real account can keep its own id and skin instead of being handed a stranger's inventory.
The password is asked for on the loading screen, in the configuration phase, before the player entity exists. There is no lobby world to build and nothing to hide the player from.
What it does
Installation
- Drop AuthCore.jar into your server's plugins folder.
- Restart the server. The plugin writes its own configuration on first start.
- Run /auth admin hub in game to set everything up. There is no file editing step.
Optional integrations
All of these are soft dependencies. AuthCore loads and runs with none of them installed.
| Plugin | What it adds |
|---|---|
| PlaceholderAPI | Registers the placeholder expansion listed below. |
Commands
Generated from the plugin's own command registry at version 1.0.0, so this list cannot drift out of date.
Requires authcore.login
| Usage | Permission | Description |
|---|---|---|
| /login <password> | none | Log in |
Requires authcore.register
| Usage | Permission | Description |
|---|---|---|
| /register <password> <password again> | none | Register this name |
Requires authcore.changepassword
| Usage | Permission | Description |
|---|---|---|
| /changepassword <current> <new> | none | Change your password |
Requires authcore.admin
| Usage | Permission | Description |
|---|---|---|
| /auth | authcore.admin | AuthCore administration |
| Usage | Permission | Player only | Description |
|---|---|---|---|
| /auth admin <action> [player] | authcore.admin | no | Administration |
| Usage | Permission | Description |
|---|---|---|
| /auth admin hub | authcore.admin | Open the admin hub |
| /auth admin accounts | authcore.admin | Open the account list |
| /auth admin status | authcore.admin | Show what the plugin is doing |
| /auth admin reset <player> | authcore.admin.reset | Clear somebody's password |
| /auth admin alts <player> | authcore.admin.alts | Accounts sharing an address |
| /auth admin premium <player> | authcore.admin.premium | Ask whether a name is a paid account |
| /auth admin menus | authcore.admin.menus | Edit any menu in game |
| /auth admin settings | authcore.admin.settings | Edit the settings in game |
| /auth admin messages | authcore.admin.settings | Edit any player facing message |
| /auth admin reload | authcore.admin.reload | Reload the configuration |
Permissions
everyone is granted to all players, operator only to ops, and nobody must be granted explicitly by a permissions plugin.
| Node | Default | Description |
|---|---|---|
| authcore.* | operator | Grants every authcore permission |
| authcore.admin | operator | Administration |
| authcore.admin.alts | operator | See which accounts share an address |
| authcore.admin.menus | operator | Edit the menus in game |
| authcore.admin.premium | operator | Ask whether a name is a paid account |
| authcore.admin.reload | operator | Reload the configuration |
| authcore.admin.reset | operator | Clear somebody's password |
| authcore.admin.settings | operator | Edit the settings in game |
| authcore.changepassword | everyone | Change your own password |
| authcore.login | everyone | Log in |
| authcore.register | everyone | Register a name |
Placeholders
Requires PlaceholderAPI. AuthCore registers the identifier authcore on start and says so in the log. Without PlaceholderAPI installed nothing here resolves and the plugin still works.
No placeholder ever returns an address. A placeholder ends up in scoreboards, tab lists and chat formats that everybody can read, and who else plays from this house is not something a server should print to the room.
Per player
Each of these needs a player and resolves to nothing when asked without one.
| Placeholder | Notes |
|---|---|
| %authcore_registered% | true when this name has a password set |
| %authcore_logged_in% | true when they are past the lock and playing |
| %authcore_session% | true when a remembered session is open for the name |
| %authcore_addresses% | how many addresses this account has connected from |
| %authcore_alts% | how many other accounts share an address with this one |
| %authcore_last_seen% | when they last logged in, as a millisecond timestamp |
Server wide
These answer with or without a player, which is what makes them usable on a lobby board.
| Placeholder | Notes |
|---|---|
| %authcore_accounts% | how many accounts exist |
| %authcore_registered_count% | how many of them have a password |
| %authcore_pending% | how many players are sitting at the lock right now |
| %authcore_required% | true when the lock is active, false on an online mode server |
| %authcore_hashing% | argon2id or pbkdf2, whichever this server ended up with |
Worth knowing
The last seen key is raw so you can feed it to whatever date formatter your other plugins already use. The account screens format it themselves.
The hashing key is worth putting on an admin board once. If it ever reads pbkdf2 on a server that should have Argon2, the library did not download and the log will say so.
There is deliberately no address, ip or ip hash placeholder. The addresses themselves live in the admin screens behind authcore.admin.alts, and even there they are only ever the truncated hash.