f5265d6688
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: 6ff65c82 SPIGOT-5908: CompassMeta for new lodestone compass data CraftBukkit Changes: 3b9cf0f8 Improve code formatting 008f039f SPIGOT-5913: MOTD no longer supports new line character b8b65eb7 SPIGOT-5908: CompassMeta for new lodestone compass data Spigot Changes: 4d9262cf Rebuild patches d27f7952 SPIGOT-5912: Outdated client message shows outdated server message
55 lines
3.7 KiB
Diff
55 lines
3.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: kashike <kashike@vq.lc>
|
|
Date: Wed, 13 Apr 2016 20:21:38 -0700
|
|
Subject: [PATCH] Add handshake event to allow plugins to handle client
|
|
handshaking logic themselves
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/HandshakeListener.java b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
index ba4e3177180f79b865140f29b6cb25156f9e96b1..c0e3d18b0a528d6bca878f354bf8b4b417522c29 100644
|
|
--- a/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
+++ b/src/main/java/net/minecraft/server/HandshakeListener.java
|
|
@@ -14,7 +14,7 @@ public class HandshakeListener implements PacketHandshakingInListener {
|
|
// CraftBukkit end
|
|
private static final IChatBaseComponent a = new ChatComponentText("Ignoring status request");
|
|
private final MinecraftServer b;
|
|
- private final NetworkManager c;
|
|
+ private final NetworkManager c; final NetworkManager getNetworkManager() { return this.c; } // Paper - OBFHELPER
|
|
|
|
public HandshakeListener(MinecraftServer minecraftserver, NetworkManager networkmanager) {
|
|
this.b = minecraftserver;
|
|
@@ -73,8 +73,33 @@ public class HandshakeListener implements PacketHandshakingInListener {
|
|
this.c.close(chatmessage);
|
|
} else {
|
|
this.c.setPacketListener(new LoginListener(this.b, this.c));
|
|
+ // Paper start - handshake event
|
|
+ boolean proxyLogicEnabled = org.spigotmc.SpigotConfig.bungee;
|
|
+ boolean handledByEvent = false;
|
|
+ // Try and handle the handshake through the event
|
|
+ if (com.destroystokyo.paper.event.player.PlayerHandshakeEvent.getHandlerList().getRegisteredListeners().length != 0) { // Hello? Can you hear me?
|
|
+ com.destroystokyo.paper.event.player.PlayerHandshakeEvent event = new com.destroystokyo.paper.event.player.PlayerHandshakeEvent(packethandshakinginsetprotocol.hostname, !proxyLogicEnabled);
|
|
+ if (event.callEvent()) {
|
|
+ // If we've failed somehow, let the client know so and go no further.
|
|
+ if (event.isFailed()) {
|
|
+ chatmessage = new ChatMessage(event.getFailMessage());
|
|
+ this.getNetworkManager().sendPacket(new PacketLoginOutDisconnect(chatmessage));
|
|
+ this.getNetworkManager().close(chatmessage);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ packethandshakinginsetprotocol.hostname = event.getServerHostname();
|
|
+ this.getNetworkManager().socketAddress = new java.net.InetSocketAddress(event.getSocketAddressHostname(), ((java.net.InetSocketAddress) this.getNetworkManager().getSocketAddress()).getPort());
|
|
+ this.getNetworkManager().spoofedUUID = event.getUniqueId();
|
|
+ this.getNetworkManager().spoofedProfile = gson.fromJson(event.getPropertiesJson(), com.mojang.authlib.properties.Property[].class);
|
|
+ handledByEvent = true; // Hooray, we did it!
|
|
+ }
|
|
+ }
|
|
+ // Don't try and handle default logic if it's been handled by the event.
|
|
+ if (!handledByEvent && proxyLogicEnabled) {
|
|
+ // Paper end
|
|
// Spigot Start
|
|
- if (org.spigotmc.SpigotConfig.bungee) {
|
|
+ //if (org.spigotmc.SpigotConfig.bungee) { // Paper - comment out, we check above!
|
|
String[] split = packethandshakinginsetprotocol.hostname.split("\00");
|
|
if ( split.length == 3 || split.length == 4 ) {
|
|
packethandshakinginsetprotocol.hostname = split[0];
|