diff options
author | Kyle Wood <[email protected]> | 2021-04-24 17:01:33 -0500 |
---|---|---|
committer | Kyle Wood <[email protected]> | 2021-04-25 18:37:43 -0500 |
commit | 3093b81fee3064603c368ab934eddf66ce304433 (patch) | |
tree | cb99f05b5f31de92c41af4cc40b4bef5f3cbf573 /Spigot-Server-Patches-Unmapped/0172-Expose-client-protocol-version-and-virtual-host.patch | |
parent | 1af696a05d21cbdd7b5a7170f95598c013257588 (diff) | |
download | Paper-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.patch | 129 |
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) { |