2014-08-17 00:33:55 +00:00
|
|
|
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;
|
2014-08-17 01:53:09 +00:00
|
|
|
import org.bukkit.scheduler.BukkitTask;
|
2014-08-17 00:33:55 +00:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
|
2014-08-17 01:53:09 +00:00
|
|
|
private static BukkitTask updateTask = null;
|
|
|
|
|
2014-08-17 03:10:52 +00:00
|
|
|
public static void triggerPlayerListUpdates()
|
2014-08-17 00:33:55 +00:00
|
|
|
{
|
2014-08-17 01:53:09 +00:00
|
|
|
if (updateTask != null)
|
|
|
|
{
|
|
|
|
updateTask.cancel();
|
|
|
|
}
|
|
|
|
|
|
|
|
updateTask = new BukkitRunnable()
|
2014-08-17 00:33:55 +00:00
|
|
|
{
|
|
|
|
@Override
|
|
|
|
public void run()
|
|
|
|
{
|
|
|
|
final SocketListener socketListener = TelnetServer.getInstance().getSocketListener();
|
|
|
|
if (socketListener != null)
|
|
|
|
{
|
|
|
|
socketListener.triggerPlayerListUpdates(generatePlayerList());
|
|
|
|
}
|
|
|
|
}
|
2014-08-17 01:53:09 +00:00
|
|
|
}.runTaskLater(BukkitTelnet.plugin, 20L * 2L);
|
2014-08-17 00:33:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@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());
|
2014-08-17 03:10:52 +00:00
|
|
|
info.put("displayName", player.getDisplayName().trim());
|
2014-08-17 00:33:55 +00:00
|
|
|
|
|
|
|
players.add(info);
|
|
|
|
}
|
|
|
|
|
|
|
|
final JSONObject response = new JSONObject();
|
|
|
|
response.put("players", players);
|
|
|
|
|
|
|
|
return response.toJSONString();
|
|
|
|
}
|
|
|
|
}
|