From d3237f7b81360d0172d3f7e5a3f132c4a982a5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Thu, 25 Dec 2025 20:37:04 +0100 Subject: [PATCH] Refactor spawn handling into dedicated event listener - Moved player spawn logic from join event to a new `PlayerSpawnEvent`. - Improved separation of concerns by restructuring `VoidWorld` spawning logic. - Added join logging for better debugging. --- .../eu/mhsl/craftattack/worldmuseum/Main.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java index bd26e74..20949c8 100755 --- a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java +++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java @@ -76,18 +76,22 @@ public class Main { final VoidWorld voidWorld = new VoidWorld(); event.setSpawningInstance(voidWorld); - MinecraftServer.getSchedulerManager().scheduleNextTick(() -> { - player.setPermissionLevel(4); - player.setRespawnPoint(voidWorld.getSpawn()); - player.setGameMode(GameMode.SPECTATOR); - player.setAllowFlying(true); - SkinCache.setSkin(player); - voidWorld.movePlayer(player); - }); - System.out.println("[Join] Player " + player.getUsername() +" joined the server."); }); + globalEventHandler.addListener(PlayerSpawnEvent.class, event -> { + if(!event.isFirstSpawn()) return; + MuseumPlayer player = (MuseumPlayer) event.getPlayer(); + final VoidWorld voidWorld = new VoidWorld(); + + player.setPermissionLevel(4); + player.setRespawnPoint(voidWorld.getSpawn()); + player.setGameMode(GameMode.SPECTATOR); + player.setAllowFlying(true); + SkinCache.setSkin(player); + voidWorld.movePlayer(player); + }); + try { PORT = Integer.parseInt(args[0]); } catch (Exception e) {