BukkitTelnet/src/me/StevenLawson/BukkitTelnet/PlayerEventListener.java

77 lines
2.1 KiB
Java

package me.StevenLawson.BukkitTelnet;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class PlayerEventListener implements Listener
{
public PlayerEventListener()
{
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerJoin(PlayerJoinEvent event)
{
triggerPlayerListUpdates();
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerKick(PlayerKickEvent event)
{
triggerPlayerListUpdates();
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event)
{
triggerPlayerListUpdates();
}
private static void triggerPlayerListUpdates()
{
new BukkitRunnable()
{
@Override
public void run()
{
final SocketListener socketListener = TelnetServer.getInstance().getSocketListener();
if (socketListener != null)
{
socketListener.triggerPlayerListUpdates(generatePlayerList());
}
}
}.runTaskLater(BukkitTelnet.plugin, 20L);
}
@SuppressWarnings("unchecked")
private static String generatePlayerList()
{
final JSONArray players = new JSONArray();
for (final Player player : Bukkit.getServer().getOnlinePlayers())
{
final HashMap<String, String> info = new HashMap<String, String>();
info.put("name", player.getName());
info.put("ip", player.getAddress().getAddress().getHostAddress());
players.add(info);
}
final JSONObject response = new JSONObject();
response.put("players", players);
return response.toJSONString();
}
}