Arcadia Admin Pannel 1.2.8 (NeoForge 1.21.1)
Curse Maven Snippet
What's new
Fixed
- "Couldn't place player in world" after reloading a single-player world —
LoginTrackeris a static singleton whose coalescing IO executor was created once in its constructor and terminated byshutdown()onServerStopping. On an integrated (single-player) server the singleton outlives the world, so loading a second world in the same client session reused the dead executor: the firstrecordLogincalledio.schedule(...)on a terminated pool, threwRejectedExecutionException, and aborted the player-placement step — surfacing as the vanilla "Couldn't place player in world" disconnect. The IO executor is now (re)created on everyinit()(ServerStarted) and the reference is dropped aftershutdown(), so each world session gets a live pool.markDirty()additionally falls back to a synchronous write if the pool is ever absent or shutting down, so a login can never throw or lose its write.
Correctifs
- « Couldn't place player in world » après le rechargement d'un monde solo —
LoginTrackerest un singleton statique dont l'exécuteur d'écriture coalescé était créé une seule fois dans le constructeur puis arrêté parshutdown()auServerStopping. Sur un serveur intégré (solo), le singleton survit au monde : recharger un second monde dans la même session client réutilisait l'exécuteur mort — le premierrecordLoginappelaitio.schedule(...)sur un pool terminé, levaitRejectedExecutionExceptionet interrompait le placement du joueur, ce qui se manifestait par la déconnexion vanilla « Couldn't place player in world ». L'exécuteur d'écriture est désormais (re)créé à chaqueinit()(ServerStarted) et la référence est libérée aprèsshutdown(), de sorte que chaque session de monde dispose d'un pool actif.markDirty()bascule en plus sur une écriture synchrone si le pool est absent ou en cours d'arrêt, afin qu'une connexion ne puisse jamais lever d'exception ni perdre son écriture.
This mod has no additional files

