diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java index bd715aa..575f353 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java @@ -34,8 +34,6 @@ public class RedisBungee extends Plugin implements Listener { private static JedisPool pool; private static String serverId; private static List servers = Lists.newArrayList(); - private UpdateCountTask uct; - private static int count = -1; private static RedisBungee plugin; private boolean canonicalGlist = true; @@ -57,11 +55,20 @@ public class RedisBungee extends Plugin implements Listener { * @return a count of all players found */ public static int getCount() { - return count; - } - - protected void setCount(int count) { - RedisBungee.count = count; + Jedis rsc = pool.getResource(); + int c = 0; + try { + c = plugin.getProxy().getOnlineCount(); + rsc.set("server:" + plugin.getServerId() + ":playerCount", String.valueOf(c)); + for (String i : plugin.getServers()) { + if (i.equals(plugin.getServerId())) continue; + if (rsc.exists("server:" + i + ":playerCount")) + c += Integer.valueOf(rsc.get("server:" + i + ":playerCount")); + } + } finally { + pool.returnResource(rsc); + } + return c; } /** @@ -160,15 +167,13 @@ public class RedisBungee extends Plugin implements Listener { } finally { pool.returnResource(tmpRsc); } - uct = new UpdateCountTask(this); - getProxy().getScheduler().schedule(this, uct, 1, 3, TimeUnit.SECONDS); getProxy().getPluginManager().registerCommand(this, new Command("glist", "bungeecord.command.glist", "redisbungee") { @Override public void execute(CommandSender sender, String[] args) { sender.sendMessage(ChatColor.YELLOW + String.valueOf(getCount()) + " player(s) are currently online."); if (args.length > 0 && args[0].equals("showall")) { if (canonicalGlist) { - Multimap serverToPlayers = HashMultimap.create(getProxy().getServers().size(), count); + Multimap serverToPlayers = HashMultimap.create(getProxy().getServers().size(), getCount()); for (String p : getPlayers()) { ServerInfo si = getServerFor(p); if (si != null) @@ -195,7 +200,6 @@ public class RedisBungee extends Plugin implements Listener { @Override public void onDisable() { - uct.kill(); if (pool != null) { Jedis tmpRsc = pool.getResource(); try { diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/UpdateCountTask.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/UpdateCountTask.java deleted file mode 100644 index 4960e33..0000000 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/UpdateCountTask.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright © 2013 tuxed - * This work is free. You can redistribute it and/or modify it under the - * terms of the Do What The Fuck You Want To Public License, Version 2, - * as published by Sam Hocevar. See http://www.wtfpl.net/ for more details. - */ -package com.imaginarycode.minecraft.redisbungee; - -import redis.clients.jedis.Jedis; - -public class UpdateCountTask implements Runnable { - - private RedisBungee plugin; - private boolean kill = false; - - public UpdateCountTask(RedisBungee plugin) { - this.plugin = plugin; - } - - @Override - public void run() { - if (kill) { - return; - } - Jedis rsc = plugin.getPool().getResource(); - try { - int c = plugin.getProxy().getOnlineCount(); - rsc.set("server:" + plugin.getServerId() + ":playerCount", String.valueOf(c)); - for (String i : plugin.getServers()) { - if (i.equals(plugin.getServerId())) continue; - if (rsc.exists("server:" + i + ":playerCount")) - c += Integer.valueOf(rsc.get("server:" + i + ":playerCount")); - } - plugin.setCount(c); - } finally { - plugin.getPool().returnResource(rsc); - } - } - - protected void kill() { - kill = true; - } -}