From aa008dff0f9bedbe88e1fe79831776b0a52eb90a Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 1 Mar 2016 08:32:46 +1100 Subject: Update to Minecraft 1.9 --- nms-patches/PacketStatusListener.patch | 147 ++++++++++++++++----------------- 1 file changed, 72 insertions(+), 75 deletions(-) (limited to 'nms-patches/PacketStatusListener.patch') diff --git a/nms-patches/PacketStatusListener.patch b/nms-patches/PacketStatusListener.patch index 075488ff..e660bf8b 100644 --- a/nms-patches/PacketStatusListener.patch +++ b/nms-patches/PacketStatusListener.patch @@ -17,102 +17,99 @@ public class PacketStatusListener implements PacketStatusInListener { private static final IChatBaseComponent a = new ChatComponentText("Status request has been handled."); -@@ -17,10 +28,96 @@ - public void a(PacketStatusInStart packetstatusinstart) { - if (this.d) { +@@ -19,8 +30,95 @@ this.networkManager.close(PacketStatusListener.a); -- } else { -- this.d = true; -- this.networkManager.handle(new PacketStatusOutServerInfo(this.minecraftServer.aG())); -+ // CraftBukkit start - fire ping event -+ return; -+ } -+ 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(); + } else { + this.d = true; +- this.networkManager.sendPacket(new PacketStatusOutServerInfo(this.minecraftServer.getServerPing())); ++ // CraftBukkit start ++ // this.networkManager.sendPacket(new PacketStatusOutServerInfo(this.minecraftServer.getServerPing())); ++ final Object[] players = minecraftServer.getPlayerList().players.toArray(); ++ class ServerListPingEvent extends org.bukkit.event.server.ServerListPingEvent { + -+ ServerListPingEvent() { -+ super(((InetSocketAddress) networkManager.getSocketAddress()).getAddress(), minecraftServer.getMotd(), minecraftServer.getPlayerList().getMaxPlayers()); -+ } ++ CraftIconCache icon = minecraftServer.server.getServerIcon(); + -+ @Override -+ public void setServerIcon(org.bukkit.util.CachedServerIcon icon) { -+ if (!(icon instanceof CraftIconCache)) { -+ throw new IllegalArgumentException(icon + " was not created by " + org.bukkit.craftbukkit.CraftServer.class); ++ ServerListPingEvent() { ++ super(((InetSocketAddress) networkManager.getSocketAddress()).getAddress(), minecraftServer.getMotd(), minecraftServer.getPlayerList().getMaxPlayers()); ++ } ++ ++ @Override ++ public void setServerIcon(org.bukkit.util.CachedServerIcon icon) { ++ if (!(icon instanceof CraftIconCache)) { ++ throw new IllegalArgumentException(icon + " was not created by " + org.bukkit.craftbukkit.CraftServer.class); ++ } ++ this.icon = (CraftIconCache) icon; + } -+ this.icon = (CraftIconCache) icon; -+ } + -+ @Override -+ public Iterator iterator() throws UnsupportedOperationException { -+ return new Iterator() { -+ int i; -+ int ret = Integer.MIN_VALUE; -+ EntityPlayer player; ++ @Override ++ public Iterator iterator() throws UnsupportedOperationException { ++ return new Iterator() { ++ int i; ++ int ret = Integer.MIN_VALUE; ++ EntityPlayer player; + -+ @Override -+ public boolean hasNext() { -+ if (player != null) { -+ return true; -+ } -+ final Object[] currentPlayers = players; -+ for (int length = currentPlayers.length, i = this.i; i < length; i++) { -+ final EntityPlayer player = (EntityPlayer) currentPlayers[i]; ++ @Override ++ public boolean hasNext() { + if (player != null) { -+ this.i = i + 1; -+ this.player = player; + return true; + } ++ final Object[] currentPlayers = players; ++ for (int length = currentPlayers.length, i = this.i; i < length; i++) { ++ final EntityPlayer player = (EntityPlayer) currentPlayers[i]; ++ if (player != null) { ++ this.i = i + 1; ++ this.player = player; ++ return true; ++ } ++ } ++ return false; + } -+ return false; -+ } + -+ @Override -+ public Player next() { -+ if (!hasNext()) { -+ throw new java.util.NoSuchElementException(); ++ @Override ++ public Player next() { ++ if (!hasNext()) { ++ throw new java.util.NoSuchElementException(); ++ } ++ final EntityPlayer player = this.player; ++ this.player = null; ++ this.ret = this.i - 1; ++ return player.getBukkitEntity(); + } -+ final EntityPlayer player = this.player; -+ this.player = null; -+ this.ret = this.i - 1; -+ return player.getBukkitEntity(); -+ } + -+ @Override -+ public void remove() { -+ final Object[] currentPlayers = players; -+ final int i = this.ret; -+ if (i < 0 || currentPlayers[i] == null) { -+ throw new IllegalStateException(); ++ @Override ++ public void remove() { ++ final Object[] currentPlayers = players; ++ final int i = this.ret; ++ if (i < 0 || currentPlayers[i] == null) { ++ throw new IllegalStateException(); ++ } ++ currentPlayers[i] = null; + } -+ currentPlayers[i] = null; -+ } -+ }; ++ }; ++ } + } -+ } + -+ ServerListPingEvent event = new ServerListPingEvent(); -+ this.minecraftServer.server.getPluginManager().callEvent(event); ++ ServerListPingEvent event = new ServerListPingEvent(); ++ this.minecraftServer.server.getPluginManager().callEvent(event); + -+ java.util.List profiles = new java.util.ArrayList(players.length); -+ for (Object player : players) { -+ if (player != null) { -+ profiles.add(((EntityPlayer) player).getProfile()); ++ java.util.List profiles = new java.util.ArrayList(players.length); ++ for (Object player : players) { ++ 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()])); ++ ServerPing.ServerPingPlayerSample playerSample = new ServerPing.ServerPingPlayerSample(event.getMaxPlayers(), profiles.size()); ++ playerSample.a(profiles.toArray(new GameProfile[profiles.size()])); + -+ ServerPing ping = new ServerPing(); -+ ping.setFavicon(event.icon.value); -+ ping.setMOTD(new ChatComponentText(event.getMotd())); -+ ping.setPlayerSample(playerSample); -+ ping.setServerInfo(new ServerPing.ServerData(minecraftServer.getServerModName() + " " + minecraftServer.getVersion(), 47)); // TODO: Update when protocol changes ++ ServerPing ping = new ServerPing(); ++ ping.setFavicon(event.icon.value); ++ ping.setMOTD(new ChatComponentText(event.getMotd())); ++ ping.setPlayerSample(playerSample); ++ ping.setServerInfo(new ServerPing.ServerData(minecraftServer.getServerModName() + " " + minecraftServer.getVersion(), minecraftServer.getServerPing().getServerData().getProtocolVersion())); + -+ this.networkManager.handle(new PacketStatusOutServerInfo(ping)); ++ this.networkManager.sendPacket(new PacketStatusOutServerInfo(ping)); + } + // CraftBukkit end } -- cgit v1.2.3