geforkt von Mirrors/Paper
fb25dc17c6
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 Bukkit Changes: da08d022 SPIGOT-4700: Add PlayerFishEvent.State.REEL_IN 0cef14e4 Remove draft API from selectEntities CraftBukkit Changes:a46fdbc6
Remove outdated build delay.3697519b
SPIGOT-4708: Fix ExactChoice recipes neglecting material9ead7009
SPIGOT-4677: Add minecraft.admin.command_feedback permissionc3749a23
Remove the Damage tag from items when it is 0.f74c7b95
SPIGOT-4706: Can't interact with active item494eef45
Mention requirement of JIRA ticket for bug fixes51d62dec
SPIGOT-4702: Exception when middle clicking certain slotsbe557e69
SPIGOT-4700: Add PlayerFishEvent.State.REEL_IN
141 Zeilen
5.4 KiB
Diff
141 Zeilen
5.4 KiB
Diff
From 6c0a39d7388e9bfbe78da5bf42868cb6bab7c588 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 0000000000..5caca6439d
|
|
--- /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 93ca93b640..e732d55f9f 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 e2fc41d6d1..2ff2549d0e 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 7acdac55e5..f1a3be69d0 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 d85e622525..dafc2948c0 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
|
|
|