4 parallel research agents output (2026-05-07):
- RESEARCH-2B2T-QUEUE.md — 2b2t queue tech deep-dive: architecture, drama
timeline, 5 patterns to copy + 5 to avoid
- RESEARCH-LIMBO-PLUGIN-SURVEY.md — open-source plugin survey: STEAL list
(Elytrium LimboAPI/LimboAuth + PistonQueue), PATTERN list, SKIP list
- V2-ARCHITECTURE.md — Paper-only stack with Velocity-ready seam, 7-state
login flow, snapshot-on-pre-login, transparent FIFO trust tiers
- V2-ROADMAP.md — M0-M5 milestones with acceptance criteria + dep graph
Stack decision: Paper-only for now (no proxy required), but architecture
split into Gatekeeper + Restore layers so future Velocity migration is
mechanical. Trip-wires codified for when to reconsider.
Anti-drama policy locked in code (not config): no paid priority, no
hidden veteran tier, transparent ban appeals.
Bootstrap repo at git.s8n.ru/s8n/auth-limbo-v2 ready for M0 work.
Closes the YOU500 inventory-loss path documented in AUDIT-2026-05-07.md.
Bumps to 1.1.0 per CHANGELOG.
F1 — void-damage guard: new EntityDamageEvent listener at HIGHEST,
ignoreCancelled=true. While a UUID sits in pendingTransit, DamageCause.VOID
is cancelled, the player is healed to 20.0, fall/fire reset, sync-TP back
to limbo spawn. Console gets a WARN with intended TP target. This single
guard would have saved YOU500's inventory.
F2 — recovery on teleportAsync false / exception: replaces the previous
log-only branch in doTeleport. On failure: sync-TP to limbo spawn, bump
per-UUID retry counter, schedule retry after 30 ticks. After MAX_RETRIES=3
failures: leave at limbo spawn in GameMode.SPECTATOR, log SEVERE with full
saved coords + reason, alert console for manual `/authlimbo tp` action.
Player stays in pendingTransit across retries so F1 keeps protecting them.
F4 — pre-empt AuthMe's broken teleport: new LoginEvent handler at
EventPriority.LOWEST that adds the UUID to pendingTransit and sync-TPs
the player to limbo spawn BEFORE AuthMe-ReReloaded's own internal
post-login teleport runs. AuthMe's teleport then operates against an
irrelevant location; the existing MONITOR handler still wins last with
the authoritative restore. Net effect: closes the void-death window even
when the saved chunk is far out and slow to load.
Internal: ConcurrentHashMap-backed pendingTransit set + retryCounts map,
both watchdog-timed-out after 5 s so we never leak entries on edge cases.
No new Maven dependencies.
Privacy invariant unchanged — F4 actually strengthens limbo-on-join by
guaranteeing the limbo position is reasserted at LOGIN-LOWEST.
Build: mvn -B clean package (in maven:3.9-eclipse-temurin-21 container) ->
BUILD SUCCESS, AuthLimbo-1.1.0.jar produced.
Player YOU500 lost full inventory at 17:13:39 due to AuthLimbo
teleportAsync rejection during AuthMe-driven post-login teleport.
Items void-dropped, no backup recoverable.
AUDIT-2026-05-07.md traces code path (LoginListener.java:128, 172-175)
and ranks fix candidates F1-F7. ROADMAP.md slots them across
v1.1.0/v1.2.0/v1.3.0 with priority and acceptance criteria.
P0 fixes pending source change:
- F1: VOID-damage guard (EntityDamageEvent listener at HIGHEST)
- F2: recovery on teleportAsync false (sync-TP back to limbo + retry)
- F4: pre-empt AuthMe internal teleport (LoginEvent at LOWEST)
Privacy posture preserved across all proposed changes.
Centered hero header with chunky black Download badge, small chip
badges below, em-dash tagline, single-line nav row. Sections trimmed,
license collapsed to <sub> footer line. Same visual language as
s8n-ru/minecraft-launcher README.
User chose AGPL-3.0 to match AuthMe's GPLv3 lineage but with §13
network-distribution clause. This forces server hosts running modified
forks to share source with players who connect.
Changes:
- LICENSE: full AGPL-3.0 text
- README.md: badge + license section explaining §13 implication
- pom.xml: <licenses> block
- src/main/java/ru/authlimbo/*.java: SPDX header on all 5 files
Plugin renamed for clarity. Same functionality. Old name was tied
to racked.ru brand; new name describes what it does.
- Java package ru.racked.limbo -> ru.loginlimbo
- Main class RackedLimbo -> LoginLimbo
- Jar LoginLimbo-1.0.0.jar
- Command /loginlimbo (alias /llimbo)
- Permission loginlimbo.admin
- Log prefix [LoginLimbo]
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.