aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch
diff options
context:
space:
mode:
authorKyle Wood <[email protected]>2021-04-24 17:01:33 -0500
committerKyle Wood <[email protected]>2021-04-25 18:37:43 -0500
commit3093b81fee3064603c368ab934eddf66ce304433 (patch)
treecb99f05b5f31de92c41af4cc40b4bef5f3cbf573 /Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch
parent1af696a05d21cbdd7b5a7170f95598c013257588 (diff)
downloadPaper-3093b81fee3064603c368ab934eddf66ce304433.tar.gz
Paper-3093b81fee3064603c368ab934eddf66ce304433.zip
Move patches
Diffstat (limited to 'Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch')
-rw-r--r--Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch129
1 files changed, 129 insertions, 0 deletions
diff --git a/Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch b/Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch
new file mode 100644
index 0000000000..3f282910be
--- /dev/null
+++ b/Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch
@@ -0,0 +1,129 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Minecrell <[email protected]>
+Date: Tue, 10 Oct 2017 18:45:20 +0200
+Subject: [PATCH] Expose client protocol version and virtual host
+
+
+diff --git a/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..8a716c1647aa29906be26ac262e93ebd2c1adfaa
+--- /dev/null
++++ b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java
+@@ -0,0 +1,50 @@
++package com.destroystokyo.paper.network;
++
++import net.minecraft.network.NetworkManager;
++
++import java.net.InetSocketAddress;
++
++import javax.annotation.Nullable;
++
++public class PaperNetworkClient implements NetworkClient {
++
++ private final NetworkManager networkManager;
++
++ PaperNetworkClient(NetworkManager networkManager) {
++ this.networkManager = networkManager;
++ }
++
++ @Override
++ public InetSocketAddress getAddress() {
++ return (InetSocketAddress) this.networkManager.getSocketAddress();
++ }
++
++ @Override
++ public int getProtocolVersion() {
++ return this.networkManager.protocolVersion;
++ }
++
++ @Nullable
++ @Override
++ public InetSocketAddress getVirtualHost() {
++ return this.networkManager.virtualHost;
++ }
++
++ public static InetSocketAddress prepareVirtualHost(String host, int port) {
++ int len = host.length();
++
++ // FML appends a marker to the host to recognize FML clients (\0FML\0)
++ int pos = host.indexOf('\0');
++ if (pos >= 0) {
++ len = pos;
++ }
++
++ // When clients connect with a SRV record, their host contains a trailing '.'
++ if (len > 0 && host.charAt(len - 1) == '.') {
++ len--;
++ }
++
++ return InetSocketAddress.createUnresolved(host.substring(0, len), port);
++ }
++
++}
+diff --git a/src/main/java/net/minecraft/network/NetworkManager.java b/src/main/java/net/minecraft/network/NetworkManager.java
+index f093b465b868e6003bb2b5ee634a624b5b054493..60e4a4aa3854aaeb250d1318f2f25cf3591ea1d3 100644
+--- a/src/main/java/net/minecraft/network/NetworkManager.java
++++ b/src/main/java/net/minecraft/network/NetworkManager.java
+@@ -70,6 +70,10 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
+ private float s;
+ private int t;
+ private boolean u;
++ // Paper start - NetworkClient implementation
++ public int protocolVersion;
++ public java.net.InetSocketAddress virtualHost;
++ // Paper end
+
+ public NetworkManager(EnumProtocolDirection enumprotocoldirection) {
+ this.h = enumprotocoldirection;
+diff --git a/src/main/java/net/minecraft/network/protocol/handshake/PacketHandshakingInSetProtocol.java b/src/main/java/net/minecraft/network/protocol/handshake/PacketHandshakingInSetProtocol.java
+index b290ddfbc19aed3e44169281c3dae5429dac0062..14c002376540d2039fc2fe2ef746e53471a9cb08 100644
+--- a/src/main/java/net/minecraft/network/protocol/handshake/PacketHandshakingInSetProtocol.java
++++ b/src/main/java/net/minecraft/network/protocol/handshake/PacketHandshakingInSetProtocol.java
+@@ -39,6 +39,7 @@ public class PacketHandshakingInSetProtocol implements Packet<PacketHandshakingI
+ return this.d;
+ }
+
++ public int getProtocolVersion() { return c(); } // Paper - OBFHELPER
+ public int c() {
+ return this.a;
+ }
+diff --git a/src/main/java/net/minecraft/server/network/HandshakeListener.java b/src/main/java/net/minecraft/server/network/HandshakeListener.java
+index 31011ec34e5eeae29705f6ec167fb2e832284873..965dd2a4a446ca31597b9e91bd405e4f01ad8348 100644
+--- a/src/main/java/net/minecraft/server/network/HandshakeListener.java
++++ b/src/main/java/net/minecraft/server/network/HandshakeListener.java
+@@ -145,6 +145,10 @@ public class HandshakeListener implements PacketHandshakingInListener {
+ throw new UnsupportedOperationException("Invalid intention " + packethandshakinginsetprotocol.b());
+ }
+
++ // Paper start - NetworkClient implementation
++ this.getNetworkManager().protocolVersion = packethandshakinginsetprotocol.getProtocolVersion();
++ this.getNetworkManager().virtualHost = com.destroystokyo.paper.network.PaperNetworkClient.prepareVirtualHost(packethandshakinginsetprotocol.hostname, packethandshakinginsetprotocol.port);
++ // Paper end
+ }
+
+ @Override
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+index c3058d6fca2fd58aea5001e4310592aa8bd20640..cf9ae60db30ef09bb4c89935a42632e562b6d61e 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+@@ -188,6 +188,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
+ }
+ }
+
++ // Paper start - Implement NetworkClient
++ @Override
++ public int getProtocolVersion() {
++ if (getHandle().playerConnection == null) return -1;
++ return getHandle().playerConnection.networkManager.protocolVersion;
++ }
++
++ @Override
++ public InetSocketAddress getVirtualHost() {
++ if (getHandle().playerConnection == null) return null;
++ return getHandle().playerConnection.networkManager.virtualHost;
++ }
++ // Paper end
++
+ @Override
+ public double getEyeHeight(boolean ignorePose) {
+ if (ignorePose) {