From a305d1806d16d1d3d36f7a944d51252975da7985 Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Mon, 17 Mar 2025 01:32:21 +0700 Subject: [PATCH] fix: fixed context loading sequence --- .../dragonestia/msb3/api/boot/ServerBootstrap.java | 13 ++++++------- .../ru/dragonestia/msb3/api/player/MsbPlayer.java | 4 ++-- .../msb3/api/player/PlayerContextManager.java | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java b/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java index 810ad58..c687246 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/boot/ServerBootstrap.java @@ -92,17 +92,16 @@ public final class ServerBootstrap { compileResourcePack(); initializer.onResourcePackCompiled(Resources.getResourcePack()); - - initPlayerContextManager(); - initDefaultSkins(); - initDefaultDialogActionsAndConditions(); - NPCClickEvent.init(); - DebugCommands.init(); } private void initDefaultModules() { ItemUtil.init(); PickableItem.registerEvent(); + initPlayerContextManager(); + initDefaultSkins(); + initDefaultDialogActionsAndConditions(); + NPCClickEvent.init(); + DebugCommands.init(); } private void compileResourcePack() { @@ -180,7 +179,7 @@ public final class ServerBootstrap { }).addListener(PlayerSpawnEvent.class, event -> { var player = (MsbPlayer) event.getPlayer(); - player.emitSpawnSignalForContexts(); + if (event.isFirstSpawn()) player.emitSpawnSignalForContexts(); }).addListener(PlayerDisconnectEvent.class, event -> { var player = (MsbPlayer) event.getPlayer(); diff --git a/api/src/main/java/ru/dragonestia/msb3/api/player/MsbPlayer.java b/api/src/main/java/ru/dragonestia/msb3/api/player/MsbPlayer.java index c556a44..50b6c62 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/player/MsbPlayer.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/player/MsbPlayer.java @@ -8,12 +8,12 @@ import org.jetbrains.annotations.NotNull; import ru.dragonestia.msb3.api.util.UncheckedRunnable; import java.time.Instant; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; public class MsbPlayer extends Player { - private final Map contexts = new HashMap<>(); + private final Map contexts = new LinkedHashMap<>(); @Getter private final Instant startSessionTime = Instant.now(); public MsbPlayer(@NotNull PlayerConnection playerConnection, @NotNull GameProfile gameProfile) { diff --git a/api/src/main/java/ru/dragonestia/msb3/api/player/PlayerContextManager.java b/api/src/main/java/ru/dragonestia/msb3/api/player/PlayerContextManager.java index d540deb..ba0a571 100644 --- a/api/src/main/java/ru/dragonestia/msb3/api/player/PlayerContextManager.java +++ b/api/src/main/java/ru/dragonestia/msb3/api/player/PlayerContextManager.java @@ -7,7 +7,7 @@ import net.minestom.server.network.player.GameProfile; import net.minestom.server.network.player.PlayerConnection; import org.jetbrains.annotations.NotNull; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Function; @@ -15,7 +15,7 @@ import java.util.function.Function; @UtilityClass public class PlayerContextManager { - private final Map> contexts = new HashMap<>(); + private final Map> contexts = new LinkedHashMap<>(); public MsbPlayer create(@NotNull PlayerConnection playerConnection, @NotNull GameProfile gameProfile) { var player = new MsbPlayer(playerConnection, gameProfile);