Auth-limbo + login-restore fix for Paper 1.21+. Bypasses the AuthMe `teleportOnLogin` race (PaperMC/Paper#4085) by listening at MONITOR priority, reading the player's saved quit-location from AuthMe's SQLite DB, pinning the destination chunk via addPluginChunkTicket, then chaining getChunkAtAsyncUrgently and teleportAsync. Bundles a void auth_limbo world via custom ChunkGenerator so the plugin removes the need for Multiverse-Core for offline-mode auth flows.
3.1 KiB
Installation
Prerequisites
| Component | Minimum | Notes |
|---|---|---|
| Server software | Paper 1.21.11 (or Purpur on the same MC version) | Folia is untested. |
| Java | 21 | Required by Paper 1.21+. |
| AuthMe-ReReloaded | any 5.x or 6.x fork | Verified on the HaHaWTH fork build 49 (5.6.0-FORK-b49). Hard dependency. |
Bare-metal / VPS install
-
Download
RackedLimbo-X.Y.Z.jarfrom the Releases page. -
Drop the jar into your server's
plugins/directory. -
Restart the server. Do not use
/reload— the listener wiring does not survive a hot reload. -
On first start the plugin will create:
plugins/RackedLimbo/config.yml- The
auth_limbo/world directory at the server data root.
-
Tail the log and look for:
[RackedLimbo] Using AuthMe DB at: /path/to/plugins/AuthMe/authme.db [RackedLimbo] Limbo world 'auth_limbo' already loaded. [RackedLimbo] Enabled. Listening for AuthMe LoginEvent at MONITOR.If you see "No saved location for ..." on a successful
/login, that user has no row inauthme.dbyet — log out, log back in, and the row will be written by AuthMe on quit.
Docker (itzg/minecraft-server)
This is the recommended distribution. Add the plugin via the auto-loader.
services:
mc:
image: itzg/minecraft-server:java21
environment:
EULA: "TRUE"
TYPE: PAPER
VERSION: "1.21.11"
PLUGINS: |
https://github.com/s8n-ru/racked-limbo/releases/download/v1.0.0/RackedLimbo-1.0.0.jar
# Pin the version — itzg's auto-loader purges unrecognised jars on restart.
REMOVE_OLD_MODS: "TRUE"
REMOVE_OLD_MODS_INCLUDE: "*.jar"
REMOVE_OLD_MODS_EXCLUDE: "RackedLimbo*.jar,AuthMe*.jar,(other-plugins)*.jar"
volumes:
- ./data:/data
ports:
- "25565:25565"
Notes:
- Replace
v1.0.0and1.0.0with the version you want to pin. REMOVE_OLD_MODS_EXCLUDEmust list every jar you want kept; everything else gets wiped on restart.- AuthMe must also be in
PLUGINS(or otherwise present inplugins/) before this plugin loads — Paper enforces thedependordering fromplugin.yml.
Verifying the install
Run as an op:
/rackedlimbo
You should see:
RackedLimbo 1.0.0 - sub: reload | tp <player>
To confirm the DB read path is working, log out a test account, then run
/rackedlimbo tp <name> — the plugin should report the world and
coordinates it pulled from authme.db.
Updating
- Stop the server.
- Replace the old jar with the new one.
- Start the server.
config.yml is preserved across updates. Breaking config changes will
be flagged in CHANGELOG.md for the affected version.
Uninstalling
- Stop the server.
- Delete
plugins/RackedLimbo-*.jarand theplugins/RackedLimbo/folder. - Optionally delete the
auth_limbo/world directory if you no longer want the void world. AuthMe will fall back to whateverSettings.RestrictionsSettings.unrestrictedWorlds/ spawn it was using before.