From cbe6150992b32f34ecd9cd7e463186fe12e56420 Mon Sep 17 00:00:00 2001 From: Trumeet Date: Wed, 3 Aug 2022 18:42:59 -0700 Subject: fix(mod): hook PlayerManager#onPlayerConnect instead of ServerLoginNetworkHandler#addToServer Carpet mod fake players will call the former method directly. --- .../moe/ymc/acron/mixin/PlayerManagerMixin.java | 27 ++++++++++++++++++++++ .../mixin/ServerLoginNetworkHandlerMixin.java | 7 ------ mod/src/main/resources/acron.mixins.json | 3 ++- 3 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 mod/src/main/java/moe/ymc/acron/mixin/PlayerManagerMixin.java diff --git a/mod/src/main/java/moe/ymc/acron/mixin/PlayerManagerMixin.java b/mod/src/main/java/moe/ymc/acron/mixin/PlayerManagerMixin.java new file mode 100644 index 0000000..2137a52 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/mixin/PlayerManagerMixin.java @@ -0,0 +1,27 @@ +package moe.ymc.acron.mixin; + +import moe.ymc.acron.s2c.Entity; +import moe.ymc.acron.s2c.EventQueue; +import moe.ymc.acron.s2c.event.EventPlayerJoined; +import net.minecraft.network.ClientConnection; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ServerPlayerEntity; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(PlayerManager.class) +public class PlayerManagerMixin { + private static final Logger AC_LOGGER = LogManager.getLogger(); + + @Inject(at = @At("RETURN"), + method = "onPlayerConnect") + public void onPlayerConnect(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) { + AC_LOGGER.debug("onPlayerConnect: {}", + player.getUuid()); + EventQueue.enqueue(new EventPlayerJoined(new Entity(player))); + } +} diff --git a/mod/src/main/java/moe/ymc/acron/mixin/ServerLoginNetworkHandlerMixin.java b/mod/src/main/java/moe/ymc/acron/mixin/ServerLoginNetworkHandlerMixin.java index 94a48b5..6dcad44 100644 --- a/mod/src/main/java/moe/ymc/acron/mixin/ServerLoginNetworkHandlerMixin.java +++ b/mod/src/main/java/moe/ymc/acron/mixin/ServerLoginNetworkHandlerMixin.java @@ -37,11 +37,4 @@ public class ServerLoginNetworkHandlerMixin { new Entity(profile), reason.getString())); } - - @Inject(at = @At("RETURN"), method = "addToServer") - private void addToServer(ServerPlayerEntity entity, CallbackInfo ci) { - AC_LOGGER.debug("addToServer: {}", - entity.getUuid()); - EventQueue.enqueue(new EventPlayerJoined(new Entity(entity))); - } } diff --git a/mod/src/main/resources/acron.mixins.json b/mod/src/main/resources/acron.mixins.json index 5d0911f..924d09c 100644 --- a/mod/src/main/resources/acron.mixins.json +++ b/mod/src/main/resources/acron.mixins.json @@ -11,7 +11,8 @@ "ServerLoginNetworkHandlerMixin", "ServerNetworkIoMixin", "ServerPlayerEntityMixin", - "ServerPlayNetworkHandlerMixin" + "ServerPlayNetworkHandlerMixin", + "PlayerManagerMixin" ], "client": [ ], -- cgit v1.2.3