geforkt von Mirrors/Paper
ea855e2b46
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 Developers!: You will need to clean up your work/Minecraft/1.13.2 folder for this Also, restore a patch that was dropped in the last upstream Bukkit Changes: 279eeab3 Fix command description not being set 96e2bb18 Remove debug print from SyntheticEventTest CraftBukkit Changes:d3ed1516
Fix dangerously threaded beacons217a293d
Don't relocate joptsimple to allow --help to work.1be05a21
Prepare for imminent Java 12 releasea49270b2
Mappings Update5259d80c
SPIGOT-4669: Fix PlayerTeleportEvent coordinates for relative teleports Spigot Changes: e6eb36f2 Rebuild patches
141 Zeilen
5.4 KiB
Diff
141 Zeilen
5.4 KiB
Diff
From 375da7221eb8bd8940c2f389e0b935bff3be8dc5 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 000000000..5caca6439
|
|
--- /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 93ca93b64..e732d55f9 100644
|
|
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
@@ -15,6 +15,7 @@ public class HandshakeListener implements PacketHandshakingInListener {
|
|
|
|
private final MinecraftServer a;
|
|
private final NetworkManager b;
|
|
+ private NetworkManager getNetworkManager() { return b; } // Paper - OBFHELPER
|
|
|
|
public HandshakeListener(MinecraftServer minecraftserver, NetworkManager networkmanager) {
|
|
this.a = minecraftserver;
|
|
@@ -128,6 +129,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
|
|
}
|
|
|
|
public void a(IChatBaseComponent ichatbasecomponent) {}
|
|
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
|
|
index e2fc41d6d..2ff2549d0 100644
|
|
--- a/src/main/java/net/minecraft/server/NetworkManager.java
|
|
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
|
|
@@ -62,6 +62,10 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
|
|
private float t;
|
|
private int u;
|
|
private boolean v;
|
|
+ // 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 7acdac55e..f1a3be69d 100644
|
|
--- a/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
|
+++ b/src/main/java/net/minecraft/server/PacketHandshakingInSetProtocol.java
|
|
@@ -33,6 +33,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 7a74ce26d..01547b31e 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
@@ -174,6 +174,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) {
|
|
--
|
|
2.21.0
|
|
|