auth-limbo/docs/compatibility.md
s8n-ru cb746147f0 Rename: LoginLimbo -> AuthLimbo
User wants name to literally be 'auth-limbo' to match the auth_limbo
world the plugin manages. Same functionality, same code, just renamed.
2026-04-30 19:19:26 +01:00

51 lines
3.7 KiB
Markdown

# Compatibility
## Tested matrix
| Component | Version | Status | Notes |
|-----------|---------|--------|-------|
| Paper | 1.21.11 | Verified | Primary target. Builds against `1.21.11-R0.1-SNAPSHOT`. |
| Purpur | 1.21.11 | Expected to work | Purpur is a Paper fork with a superset of the Paper API used here. Untested in CI but the relevant API surface (`teleportAsync`, `setChunkForceLoaded`, modern `ChunkGenerator`) is identical. |
| Folia | any | Untested | Folia's regionised threading model changes how `LoginEvent` is dispatched. The current `Bukkit.getScheduler().runTaskLater` calls would need to be reworked to use Folia's region scheduler. Do not run this plugin on Folia until it has been audited. |
| Java | 21 | Required | `pom.xml` targets Java 21. |
| Java | 22 / 23 / 24 | Expected to work | Source compatibility level is 21. No reflection or unsafe APIs are used. |
## Auth plugins
| Plugin | Version | Status | Notes |
|--------|---------|--------|-------|
| AuthMe-ReReloaded (HaHaWTH fork) | b49 | Verified | Hard dependency. The fork's SQLite schema is the one we read. |
| AuthMe-ReReloaded (other 5.x forks) | any | Expected to work | Other forks track the same upstream schema (`authme` table with `username, x, y, z, world, yaw, pitch`). The plugin will compile and load against any 5.x AuthMe binary because we depend on `fr.xephi.authme.events.LoginEvent` which has been stable since 5.0. |
| AuthMe-ReReloaded (6.x) | any | Untested | API likely the same; no reason to expect a break. |
| Original AuthMe (`fr.xephi:authme` 5.x) | any | Expected to work | Same Java package, same event class. |
| nLogin / FastLogin / SimpleAuth / others | n/a | Not supported | This plugin is hard-coupled to AuthMe events. It will refuse to load without `AuthMe` in `plugin.yml`. |
| MySQL-backed AuthMe | n/a | Not supported (yet) | The plugin reads `authme.db` directly via SQLite JDBC. If your AuthMe stores data in MySQL, the LoginEvent restore is a no-op. |
## Other plugins
| Plugin | Status | Notes |
|--------|--------|-------|
| Multiverse-Core | Untested | Multiverse intercepts teleports for portals and respawn. The two plugins should coexist because AuthLimbo runs at `MONITOR` priority and overrides whatever Multiverse does to the post-login location. If you only run Multiverse for the limbo world, you do not need it any more — AuthLimbo's `LimboWorldManager` covers that case. |
| EssentialsX | Untested | Essentials' spawn-on-join (`spawn-on-join` in `essentials.yml`) is the most common conflicting feature. With Essentials' default ordering, AuthLimbo's `MONITOR` listener still runs last and wins. If you see the spawn-on-join location winning, set `spawn-on-join: false`. |
| WorldGuard | Should not interfere | WorldGuard does not teleport on login. |
| BetterReload / PlugManX | Avoid | Hot-reloading any of (AuthLimbo, AuthMe, Paper itself) will leave dangling listeners. Always restart. |
## Database compatibility
The plugin opens `plugins/AuthMe/authme.db` with a fresh JDBC connection
per query. AuthMe also keeps a connection open to the same file. SQLite
supports multiple readers under WAL mode, which is AuthMe's default; we
never `PRAGMA journal_mode` ourselves, never write, and never wrap the
read in a transaction. There is no risk of corruption from this access
pattern.
If AuthMe is configured to use MySQL or PostgreSQL instead of SQLite,
this plugin will log a warning on first lookup and the LoginEvent
restore will be skipped. A MySQL backend is on the wishlist but not
implemented.
## Reporting compatibility results
If you run this plugin on a configuration not covered above, please
[open an issue](https://github.com/s8n-ru/auth-limbo/issues/new?template=bug_report.md)
or PR an update to this table.