From a3c2ec03148f9f38d4d27d045b1afee2fc6ff173 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 12 Dec 2018 11:19:31 +1100 Subject: [PATCH] Fix missing ServerListPingEvent call for legacy pings --- nms-patches/LegacyPingHandler.patch | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 nms-patches/LegacyPingHandler.patch diff --git a/nms-patches/LegacyPingHandler.patch b/nms-patches/LegacyPingHandler.patch new file mode 100644 index 0000000000..98526ece29 --- /dev/null +++ b/nms-patches/LegacyPingHandler.patch @@ -0,0 +1,34 @@ +--- a/net/minecraft/server/LegacyPingHandler.java ++++ b/net/minecraft/server/LegacyPingHandler.java +@@ -34,11 +34,12 @@ + MinecraftServer minecraftserver = this.b.d(); + int i = bytebuf.readableBytes(); + String s; ++ org.bukkit.event.server.ServerListPingEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callServerListPingEvent(minecraftserver.server, inetsocketaddress.getAddress(), minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()); // CraftBukkit + + switch (i) { + case 0: + LegacyPingHandler.a.debug("Ping: (<1.3.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); +- s = String.format("%s\u00a7%d\u00a7%d", new Object[] { minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()}); ++ s = String.format("%s\u00a7%d\u00a7%d", new Object[] { event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit + this.a(channelhandlercontext, this.a(s)); + break; + case 1: +@@ -47,7 +48,7 @@ + } + + LegacyPingHandler.a.debug("Ping: (1.4-1.5.x) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); +- s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()}); ++ s = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit + this.a(channelhandlercontext, this.a(s)); + break; + default: +@@ -66,7 +67,7 @@ + } + + LegacyPingHandler.a.debug("Ping: (1.6) from {}:{}", inetsocketaddress.getAddress(), inetsocketaddress.getPort()); +- String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), minecraftserver.getMotd(), minecraftserver.y(), minecraftserver.z()}); ++ String s1 = String.format("\u00a71\u0000%d\u0000%s\u0000%s\u0000%d\u0000%d", new Object[] { 127, minecraftserver.getVersion(), event.getMotd(), event.getNumPlayers(), event.getMaxPlayers()}); // CraftBukkit + ByteBuf bytebuf1 = this.a(s1); + + try {