mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
CraftBukkit Changes:
d5a72960
SPIGOT-6063: ConsoleSender sending extra lines in Java 13+
Spigot Changes:
2740d5ae Rebuild patches
130 lines
5.3 KiB
Diff
130 lines
5.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Minecrell <minecrell@minecrell.net>
|
|
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..5caca6439d2135e34880d501397fe2ea197d7249
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/network/PaperNetworkClient.java
|
|
@@ -0,0 +1,50 @@
|
|
+package com.destroystokyo.paper.network;
|
|
+
|
|
+import net.minecraft.server.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/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
index ad2861cde180403069c96f5fd7e4d26ee918bbea..07d5036ce3b04c78f332deed65b9177b70b4361a 100644
|
|
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
@@ -133,6 +133,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/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
|
|
index 5a0129d007459fbb868784f53585fd26f495358c..aeee6bfbc1c0113beef35bf33e8c6928a1db2844 100644
|
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
|
@@ -60,6 +60,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/server/PacketHandshakingInSetProtocol.java b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
|
index 4f008e4723d2cb0bcabb2d5621203d63c40c4923..8545146fb1f093f821e3b966d9337049575c6773 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
|
@@ -35,6 +35,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/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
index 6ca7a7a3267d3c8477c8333dea9ac2bbad230056..6eb02d0a69a0375ba099f776636de765612911e5 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) {
|