From dd5be5a46d86fb8676c380b87ad246e5ebe8ae5a Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Sat, 5 Dec 2020 21:21:04 +0800 Subject: [PATCH] Fix kick during PlayerJoinEvent (#92) --- .../common/mixin/core/server/management/PlayerListMixin.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java index 94e49d59..f5984731 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/server/management/PlayerListMixin.java @@ -154,11 +154,14 @@ public abstract class PlayerListMixin implements PlayerListBridge { @Eject(method = "initializeConnectionToPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/management/PlayerList;func_232641_a_(Lnet/minecraft/util/text/ITextComponent;Lnet/minecraft/util/text/ChatType;Ljava/util/UUID;)V")) private void arclight$playerJoin(PlayerList playerList, ITextComponent component, ChatType chatType, UUID uuid, CallbackInfo ci, NetworkManager netManager, ServerPlayerEntity playerIn) { PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(this.cserver.getPlayer(playerIn), CraftChatMessage.fromComponent(component)); + this.players.add(playerIn); + this.uuidToPlayerMap.put(playerIn.getUniqueID(), playerIn); this.cserver.getPluginManager().callEvent(playerJoinEvent); if (!playerIn.connection.netManager.isChannelOpen()) { ci.cancel(); return; } + this.players.remove(playerIn); String joinMessage = playerJoinEvent.getJoinMessage(); if (joinMessage != null && joinMessage.length() > 0) { for (ITextComponent line : CraftChatMessage.fromString(joinMessage)) {