--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/web/StatusListener.java 2011/12/22 14:45:38 1670 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/web/StatusListener.java 2012/01/27 12:21:27 1684 @@ -22,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) { @@ -41,6 +46,27 @@ if(!event.path[0].equalsIgnoreCase("webstatus")) { return; } + + String xml; + + synchronized(this) { //is this necessary ? + 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"); @@ -88,8 +114,18 @@ sb.append("" + loc.getBlockY() + ""); sb.append("" + loc.getBlockZ() + ""); sb.append("" + loc.getWorld().getName() + ""); - sb.append(""); - + 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(""); + } @@ -109,8 +145,8 @@ sb.append("\n"); sb.append(""); - event.setResponse(sb.toString()); - event.setActionTaken(true); + + return sb.toString(); }