diff options
Diffstat (limited to 'src/main/java/moe/ymc/safelog/mixin/PlayerManagerMixin.java')
-rw-r--r-- | src/main/java/moe/ymc/safelog/mixin/PlayerManagerMixin.java | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/moe/ymc/safelog/mixin/PlayerManagerMixin.java b/src/main/java/moe/ymc/safelog/mixin/PlayerManagerMixin.java new file mode 100644 index 0000000..43458ac --- /dev/null +++ b/src/main/java/moe/ymc/safelog/mixin/PlayerManagerMixin.java @@ -0,0 +1,28 @@ +package moe.ymc.safelog.mixin; + +import moe.ymc.safelog.SanitizedInetSocketAddress; +import net.minecraft.network.ClientConnection; +import net.minecraft.server.PlayerManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.net.InetSocketAddress; +import java.net.SocketAddress; + +@Mixin(PlayerManager.class) +public class PlayerManagerMixin { + @Redirect( + method = "onPlayerConnect", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/network/ClientConnection;getAddress()Ljava/net/SocketAddress;") + ) + public SocketAddress modifyGetAddress(ClientConnection clientConnection) { + SocketAddress address = clientConnection.getAddress(); + if (!(address instanceof InetSocketAddress inetAddress)) { + return address; + } + return new SanitizedInetSocketAddress(inetAddress.getAddress(), inetAddress.getPort()); + } +} |