summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2015-10-03 11:25:43 +1000
committermd_5 <git@md-5.net>2015-10-03 11:25:43 +1000
commit4a7472d0bfa1c326f68fff4484f2b0f883ab41cb (patch)
tree57bc2d0de0c259d9b0244a0b44da8cb58b3b9416
parentd4e32cef0caaa8a81f0fe60216554fd7e0b922cb (diff)
downloadcraftbukkit-4a7472d0bfa1c326f68fff4484f2b0f883ab41cb.tar
craftbukkit-4a7472d0bfa1c326f68fff4484f2b0f883ab41cb.tar.gz
craftbukkit-4a7472d0bfa1c326f68fff4484f2b0f883ab41cb.tar.lz
craftbukkit-4a7472d0bfa1c326f68fff4484f2b0f883ab41cb.tar.xz
craftbukkit-4a7472d0bfa1c326f68fff4484f2b0f883ab41cb.zip
SPIGOT-1219: Allow ping without status query.
Also minor refactor to use more of the Vanilla logic.
-rw-r--r--nms-patches/PacketStatusListener.patch37
1 files changed, 7 insertions, 30 deletions
diff --git a/nms-patches/PacketStatusListener.patch b/nms-patches/PacketStatusListener.patch
index 36d282ec..075488ff 100644
--- a/nms-patches/PacketStatusListener.patch
+++ b/nms-patches/PacketStatusListener.patch
@@ -17,29 +17,18 @@
public class PacketStatusListener implements PacketStatusInListener {
private static final IChatBaseComponent a = new ChatComponentText("Status request has been handled.");
-@@ -14,17 +25,116 @@
-
- public void a(IChatBaseComponent ichatbasecomponent) {}
-
-+ // CraftBukkit start
-+ private static final int WAITING = 0;
-+ private static final int PING = 1;
-+ private static final int DONE = 2;
-+ private int state = WAITING;
-+ // CraftBukkit end
-+
+@@ -17,10 +28,96 @@
public void a(PacketStatusInStart packetstatusinstart) {
-- if (this.d) {
-+ // this.networkManager.handle(new PacketStatusOutServerInfo(this.minecraftServer.aG()));
-+ // CraftBukkit start - fire ping event
-+ if (this.state != WAITING) {
+ if (this.d) {
this.networkManager.close(PacketStatusListener.a);
- } else {
- this.d = true;
- this.networkManager.handle(new PacketStatusOutServerInfo(this.minecraftServer.aG()));
++ // CraftBukkit start - fire ping event
+ return;
- }
-+ state = PING;
++ }
++ this.d = true;
++ // this.networkManager.handle(new PacketStatusOutServerInfo(this.minecraftServer.aG()));
+ final Object[] players = minecraftServer.getPlayerList().players.toArray();
+ class ServerListPingEvent extends org.bukkit.event.server.ServerListPingEvent {
+ CraftIconCache icon = minecraftServer.server.getServerIcon();
@@ -112,7 +101,7 @@
+ if (player != null) {
+ profiles.add(((EntityPlayer) player).getProfile());
+ }
-+ }
+ }
+
+ ServerPing.ServerPingPlayerSample playerSample = new ServerPing.ServerPingPlayerSample(event.getMaxPlayers(), profiles.size());
+ playerSample.a(profiles.toArray(new GameProfile[profiles.size()]));
@@ -128,15 +117,3 @@
}
public void a(PacketStatusInPing packetstatusinping) {
-- this.networkManager.handle(new PacketStatusOutPong(packetstatusinping.a()));
-- this.networkManager.close(PacketStatusListener.a);
-+ // CraftBukkit start
-+ if (state != PING) {
-+ this.networkManager.close(PacketStatusListener.a);
-+ return;
-+ }
-+ state = DONE;
-+ this.networkManager.a(new PacketStatusOutPong(packetstatusinping.a()), ChannelFutureListener.CLOSE); // Close on completion
-+ // CraftBukkit end
- }
- }