From 2726696652179a5ead7dc07dd39edf7dfda687f7 Mon Sep 17 00:00:00 2001 From: mbax Date: Mon, 4 Nov 2013 07:07:38 -0600 Subject: Update CraftBukkit to Minecraft 1.7.2 --- .../net/minecraft/server/PacketStatusListener.java | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/main/java/net/minecraft/server/PacketStatusListener.java (limited to 'src/main/java/net/minecraft/server/PacketStatusListener.java') diff --git a/src/main/java/net/minecraft/server/PacketStatusListener.java b/src/main/java/net/minecraft/server/PacketStatusListener.java new file mode 100644 index 00000000..e4116e5e --- /dev/null +++ b/src/main/java/net/minecraft/server/PacketStatusListener.java @@ -0,0 +1,62 @@ +package net.minecraft.server; + +import java.net.InetSocketAddress; + +import org.bukkit.craftbukkit.util.CraftIconCache; // CraftBukkit + +import net.minecraft.util.io.netty.util.concurrent.GenericFutureListener; + +public class PacketStatusListener implements PacketStatusInListener { + + private final MinecraftServer minecraftServer; + private final NetworkManager networkManager; + + public PacketStatusListener(MinecraftServer minecraftserver, NetworkManager networkmanager) { + this.minecraftServer = minecraftserver; + this.networkManager = networkmanager; + } + + public void a(IChatBaseComponent ichatbasecomponent) {} + + public void a(EnumProtocol enumprotocol, EnumProtocol enumprotocol1) { + if (enumprotocol1 != EnumProtocol.STATUS) { + throw new UnsupportedOperationException("Unexpected change in protocol to " + enumprotocol1); + } + } + + public void a() {} + + public void a(PacketStatusInStart packetstatusinstart) { + // CraftBukkit start - fire ping event + class ServerListPingEvent extends org.bukkit.event.server.ServerListPingEvent { + CraftIconCache icon = minecraftServer.server.getServerIcon(); + + ServerListPingEvent() { + super(((InetSocketAddress) networkManager.getSocketAddress()).getAddress(), minecraftServer.getMotd(), minecraftServer.getPlayerList().getPlayerCount(), 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; + } + } + + ServerListPingEvent event = new ServerListPingEvent(); + this.minecraftServer.server.getPluginManager().callEvent(event); + ServerPing ping = new ServerPing(); + ping.setFavicon(event.icon.value); + ping.setMOTD(new ChatComponentText(event.getMotd())); + ping.setPlayerSample(new ServerPingPlayerSample(event.getMaxPlayers(), minecraftServer.getPlayerList().getPlayerCount())); + ping.setServerInfo(new ServerPingServerData(minecraftServer.server.getVersion(), 4)); // MAGICAL VALUE FROM MinecraftServer + + this.networkManager.handle(new PacketStatusOutServerInfo(ping), new GenericFutureListener[0]); + // CraftBukkit end + } + + public void a(PacketStatusInPing packetstatusinping) { + this.networkManager.handle(new PacketStatusOutPong(packetstatusinping.c()), new GenericFutureListener[0]); + } +} -- cgit v1.2.3