aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2022-08-03 18:42:59 -0700
committerTrumeet <yuuta@yuuta.moe>2022-08-03 18:42:59 -0700
commitcbe6150992b32f34ecd9cd7e463186fe12e56420 (patch)
tree69cea4e859cce63985d1ce45a59b6ed89152020f
parent713747ad9f6862e9c2ca6982a53b9e726753bc3f (diff)
downloadacron-cbe6150992b32f34ecd9cd7e463186fe12e56420.tar
acron-cbe6150992b32f34ecd9cd7e463186fe12e56420.tar.gz
acron-cbe6150992b32f34ecd9cd7e463186fe12e56420.tar.bz2
acron-cbe6150992b32f34ecd9cd7e463186fe12e56420.zip
fix(mod): hook PlayerManager#onPlayerConnect instead of ServerLoginNetworkHandler#addToServer
Carpet mod fake players will call the former method directly.
-rw-r--r--mod/src/main/java/moe/ymc/acron/mixin/PlayerManagerMixin.java27
-rw-r--r--mod/src/main/java/moe/ymc/acron/mixin/ServerLoginNetworkHandlerMixin.java7
-rw-r--r--mod/src/main/resources/acron.mixins.json3
3 files changed, 29 insertions, 8 deletions
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": [
],