--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/web/StatusListener.java 2011/12/22 11:25:17 1668
+++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/web/StatusListener.java 2011/12/23 09:16:12 1672
@@ -5,6 +5,7 @@
import java.util.Date;
import java.util.Set;
import java.util.Map;
+import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@@ -21,10 +22,15 @@
Server server;
Configuration loginConfig;
+ Configuration homeConfig;
- public StatusListener(Server server, Configuration loginConfig) {
+ long cachedTime = 0;
+ String cachedXml = "";
+
+ public StatusListener(Server server, Configuration loginConfig, Configuration homeConfig) {
this.server = server;
this.loginConfig = loginConfig;
+ this.homeConfig = homeConfig;
}
String formatTime(String input) {
@@ -40,6 +46,24 @@
if(!event.path[0].equalsIgnoreCase("webstatus")) {
return;
}
+
+ String xml;
+ long now = System.currentTimeMillis();
+ if ( (now-cachedTime) > 5000) {
+ xml = buildXML();
+ cachedXml = xml;
+ cachedTime = now;
+ } else {
+ xml = cachedXml;
+ }
+
+
+ event.setResponse(xml);
+ event.setActionTaken(true);
+ }
+
+ private String buildXML() {
+
StringBuilder sb = new StringBuilder();
sb.append(" \n");
@@ -64,32 +88,62 @@
long first = player.getFirstPlayed();
long last = player.getLastPlayed();
- long login = loginConfig.getLong( player.getName() + ".logintime", -1);
- long elapsed = (login>-1 ? (now-login) / 1000 : -1);
sb.append("\n");
sb.append("" + player.getName() + "\n" );
- sb.append("" + (player.isOnline() ? 1 : 0 ) + "\n" );
- sb.append("" + elapsed + "\n" );
sb.append("" + formatTime(first) + "\n");
sb.append("" + formatTime(last) + "\n");
+
+ sb.append("" + (player.isOnline() ? 1 : 0 ) + "\n" );
+
+ if (player.isOnline() ) {
+ long login = loginConfig.getLong( player.getName() + ".logintime", -1);
+ long elapsed = (login>-1 ? (now-login) / 1000 : -1);
+
+ Player p2 = server.getPlayer( player.getName() );
+ Location loc = p2.getLocation();
+
+ sb.append("" + elapsed + "\n" );
+ sb.append("" + p2.getAddress().getAddress().toString().replace("/","") + "\n" );
+ sb.append("");
+ sb.append("" + loc.getBlockX() + "");
+ sb.append("" + loc.getBlockY() + "");
+ sb.append("" + loc.getBlockZ() + "");
+ sb.append("" + loc.getWorld().getName() + "");
+ sb.append("");
+ }
+
+ String homeWorld = homeConfig.getString( player.getName() + ".world");
+ if (homeWorld != null) {
+ sb.append("");
+ sb.append("" + homeWorld + "\n");
+ sb.append("" + (int)homeConfig.getDouble(player.getName() + ".x") + "\n");
+ sb.append("" + (int)homeConfig.getDouble(player.getName() + ".y") + "\n");
+ sb.append("" + (int)homeConfig.getDouble(player.getName() + ".z") + "\n");
+ sb.append("");
+
+ }
+
+
sb.append("\n");
}
sb.append("\n");
sb.append("\n");
for (Plugin plugin : server.getPluginManager().getPlugins()) {
+
sb.append("\n");
sb.append("" + plugin.getDescription().getName() + "\n");
sb.append("" + plugin.getDescription().getVersion() + "\n");
+ sb.append("" + (plugin.getDescription().getWebsite() != null ? plugin.getDescription().getWebsite() : "") + "\n");
sb.append("\n");
}
sb.append("\n");
sb.append("");
- event.setResponse(sb.toString());
- event.setActionTaken(true);
+
+ return sb.toString();
}