Slime Login

Troubleshooting#

Start here#

Turn on the one setting that explains most problems:

premium-bypass:
  debug: true

Then /slimeadmin reload, reconnect, and read the console. It prints why each player was treated as premium or cracked.


Nobody can log in#

[License] ... in red at startup

The plugin keeps running rather than switching itself off — an auth plugin that disables itself leaves the server wide open, which is worse. It just stops admitting players.

  • missing_key — no key in config.yml.
  • bad_signature — something is intercepting the connection to the license server. Check for a proxy or a hosts entry redirecting license.devlio.store.
  • no_connection — the server has no outbound HTTPS. After one successful check the plugin runs for 72 hours offline on the stored answer.
  • expired / invalid — renew at devlio.store.
Storage could not be initialized

The SQLite database could not be opened. Usually a permissions problem on the plugins/slimelogin/ folder, or a full disk. Players are refused rather than let in unauthenticated.


Premium players#

Premium players are asked to register
  • Is premium-bypass.enabled: true?
  • Is the server actually in offline mode? (online-mode=false / online-mode = false)
  • Can the server reach api.mojang.com? A blocked outbound connection means every name looks non-premium. The console warns when a lookup fails.
  • In mode: command, the player has to run /premium once first.
Premium players get 'Invalid session'

Online mode is on where it should not be. The plugin does the Mojang verification itself, per player, so the platform must be in offline mode:

  • Velocityonline-mode = false in velocity.toml
  • BungeeCordonline_mode: false in config.yml
  • Single serveronline-mode=false in server.properties
A cracked player sees 'Invalid session' instead of your message

Their name belongs to a real premium account, so the name is reserved for its owner — that part is correct. The screen they get depends on their client:

  • 1.20.2 and newer — they should see your kick-premium-name message. If they do not, check protect-premium-names: true and turn on premium-bypass.debug to see what UUID the client claimed.
  • Older than 1.20.2 — the client does not send a UUID, so nothing can be compared before Mojang is asked. The connection ends inside the encryption handshake and the client prints Failed to log in: Invalid session. No server can replace that screen.

A modern client that still sees it deliberately claimed the premium account's UUID; Mojang then refuses it, which is the correct outcome.


Networks#

Players are asked to log in twice

Two authentication systems are running. Check every backend server for:

  • another auth plugin (nLogin, AuthMe …) — remove it;
  • mode: standalone forced in a backend's config.yml — set it to auto.

A backend must be a bridge, not a second authenticator.

Server 'x' has no Slime Login on it

Exactly what it says: somebody joined that backend and it never announced itself, so nothing there is holding unauthenticated players. Put the same jar in that server's plugins/ folder and restart it — it detects the proxy and switches to bridge mode by itself.

The message appears once per server, the first time a player lands on it. If you use an auth-server instead, it is not printed at all.

A player can move before registering

That backend is not in bridge mode. Its console will say which mode it picked at startup. If it says nothing about bridge mode:

  • the jar is missing from that server, or
  • proxy forwarding is not enabled there, so it never detected the proxy. Set proxies.velocity.enabled: true in config/paper-global.yml (behind Velocity) or settings.bungeecord: true in spigot.yml (behind BungeeCord), or force mode: bridge.
Bedrock players are asked to register

They should join straight through. Check, in order:

  • premium-bypass.bedrock-autologin is true;
  • Geyser is using Floodgate for authentication, not a password-based mode — without Floodgate there is no Xbox identity to trust;
  • the console line when they join. A Bedrock player logs as Name (Bedrock via Floodgate) - auto logged in. If it says something else, turn on premium-bypass.debug and send the output.
[Bridge] warnings about forwarding

The backend accepts proxy logins without a shared secret, so anyone who can reach its port directly bypasses the login system entirely. Set up modern forwarding, or firewall the port to the proxy's IP. Details

Dropped a forged auth message from a client

Working as intended — a modified client tried to tell a backend it was authenticated and the proxy threw the message away. Worth noting the player's name.

Players stay frozen after logging in

The backend never got the unlock message.

  • Is the Slime Login jar on the proxy as well? A bridge alone keeps everyone locked, by design.
  • Look for [Bridge] errors on either side.
  • Try /slimeadmin forcelogin <player> — if that frees them, the messaging path works and the problem is in the login flow instead.

Passwords#

A player's password stopped working after importing
  • Was their account using PBKDF2 in nLogin? That is the one format that cannot be carried over — the import counts them and tells you how many. Those players must register again. BCrypt, MD5, SHA-256, SHA-512 and Argon2 all come across working.
  • Did the import run with overwrite over an account they had already made here? The newer password would have been replaced.
One account cannot log in, everyone else is fine

Its stored hash is in a format nothing recognises — a truncated row, or a hash from a plugin that was never imported. It reads as a wrong password rather than an error, so nothing in the console points at it. Reset it:

/slimeadmin changepass <player> <newpassword>
Login feels slow

BCrypt is deliberately slow — that is what makes it hard to crack. It runs off the main thread, so the server is not affected. If logins take too long on weak hardware, lower security.bcrypt-rounds to 10.


Everything else#

Can I use MySQL instead of SQLite?

Not yet for the plugin's own storage — SQLite handles a single server or one proxy comfortably. The import command can read from MySQL.

Can I move accounts from a single server to a proxy?

Yes. Copy plugins/slimelogin/players.db to the proxy's plugins/slimelogin/ folder. The schema is identical.

Does /reload work?

It does, but avoid it — /reload on a live server is risky for any plugin. Players already online when the plugin re-enables are re-protected and re-checked. Restart instead.

How do I reset everything?

Stop the server, delete plugins/slimelogin/players.db, start it again. Every player registers from scratch. There is no undo.


Getting help#

Have these ready:

  1. The console output from startup, including the banner and the mode line.
  2. Your config.yml (with the license key removed).
  3. Server type and version, and whether a proxy is involved.
  4. The output with premium-bypass.debug: true if it is a login problem.

Support on Discord