From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: nostalfinals Date: Mon, 8 Apr 2024 23:24:38 +0800 Subject: [PATCH] Added API to get player ha proxy address diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java index ea16dfa718b526d6520d7fcfc21d28f972f1f2bf..4b9da6e2140b14f1e56056f5e9e94b2169d85501 100644 --- a/src/main/java/net/minecraft/network/Connection.java +++ b/src/main/java/net/minecraft/network/Connection.java @@ -153,6 +153,7 @@ public class Connection extends SimpleChannelInboundHandler> { this.stopReadingPackets = true; } // Paper end - packet limiter + @Nullable public SocketAddress haProxyAddress; // Paper - Add API to get player's proxy address public Connection(PacketFlow side) { this.receiving = side; diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java index c62df32af11636ad408b584fcc590590ce4fb0d0..baed0bb80d44973f9323bbe536551182979caff2 100644 --- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java +++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java @@ -144,6 +144,13 @@ public class ServerConnectionListener { Connection connection = (Connection) channel.pipeline().get("packet_handler"); connection.address = socketaddr; + + // Paper start - Add API to get player's proxy address + final String proxyAddress = message.destinationAddress(); + final int proxyPort = message.destinationPort(); + + connection.haProxyAddress = new java.net.InetSocketAddress(proxyAddress, proxyPort); + // Paper end - Add API to get player's proxy address } } else { super.channelRead(ctx, msg); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index 58d12409447903f855baa6beb149aa658bf7b1bb..766c1e80997d1bed99f4ebf9499eec60bf70a536 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -270,7 +270,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public InetSocketAddress getAddress() { - if (this.getHandle().connection.protocol() == null) return null; + if (this.getHandle().connection == null) return null; SocketAddress addr = this.getHandle().connection.getRemoteAddress(); if (addr instanceof InetSocketAddress) { @@ -280,6 +280,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } } + // Paper start - Add API to get player's proxy address + @Override + public @Nullable InetSocketAddress getHAProxyAddress() { + if (this.getHandle().connection == null) return null; + + return this.getHandle().connection.connection.haProxyAddress instanceof final InetSocketAddress inetSocketAddress ? inetSocketAddress : null; + } + // Paper end - Add API to get player's proxy address + public interface TransferCookieConnection { boolean isTransferred();