2
0
mirror of https://github.com/proxiodev/RedisBungee.git synced 2024-11-23 04:28:01 +00:00

Remove the update count task. It's not useful anymore since 1.7 requires a player list and it is easier simply to use that.

/glist still uses the counts.
This commit is contained in:
Tux 2013-10-29 19:10:16 -04:00
parent bb97d35076
commit 73af35aeee
2 changed files with 15 additions and 54 deletions

View File

@ -34,8 +34,6 @@ public class RedisBungee extends Plugin implements Listener {
private static JedisPool pool; private static JedisPool pool;
private static String serverId; private static String serverId;
private static List<String> servers = Lists.newArrayList(); private static List<String> servers = Lists.newArrayList();
private UpdateCountTask uct;
private static int count = -1;
private static RedisBungee plugin; private static RedisBungee plugin;
private boolean canonicalGlist = true; private boolean canonicalGlist = true;
@ -57,11 +55,20 @@ public class RedisBungee extends Plugin implements Listener {
* @return a count of all players found * @return a count of all players found
*/ */
public static int getCount() { public static int getCount() {
return 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 {
protected void setCount(int count) { pool.returnResource(rsc);
RedisBungee.count = count; }
return c;
} }
/** /**
@ -160,15 +167,13 @@ public class RedisBungee extends Plugin implements Listener {
} finally { } finally {
pool.returnResource(tmpRsc); 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") { getProxy().getPluginManager().registerCommand(this, new Command("glist", "bungeecord.command.glist", "redisbungee") {
@Override @Override
public void execute(CommandSender sender, String[] args) { public void execute(CommandSender sender, String[] args) {
sender.sendMessage(ChatColor.YELLOW + String.valueOf(getCount()) + " player(s) are currently online."); sender.sendMessage(ChatColor.YELLOW + String.valueOf(getCount()) + " player(s) are currently online.");
if (args.length > 0 && args[0].equals("showall")) { if (args.length > 0 && args[0].equals("showall")) {
if (canonicalGlist) { if (canonicalGlist) {
Multimap<String, String> serverToPlayers = HashMultimap.create(getProxy().getServers().size(), count); Multimap<String, String> serverToPlayers = HashMultimap.create(getProxy().getServers().size(), getCount());
for (String p : getPlayers()) { for (String p : getPlayers()) {
ServerInfo si = getServerFor(p); ServerInfo si = getServerFor(p);
if (si != null) if (si != null)
@ -195,7 +200,6 @@ public class RedisBungee extends Plugin implements Listener {
@Override @Override
public void onDisable() { public void onDisable() {
uct.kill();
if (pool != null) { if (pool != null) {
Jedis tmpRsc = pool.getResource(); Jedis tmpRsc = pool.getResource();
try { try {

View File

@ -1,43 +0,0 @@
/**
* Copyright © 2013 tuxed <write@imaginarycode.com>
* 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;
}
}