mirror of
https://github.com/proxiodev/RedisBungee.git
synced 2025-04-20 01:27:07 +00:00
Clean player list the slow and safe way.
This commit is contained in:
parent
5b0c4c2219
commit
e5bfb52c0a
@ -159,12 +159,8 @@ public final class RedisBungee extends Plugin implements Listener {
|
|||||||
try {
|
try {
|
||||||
tmpRsc.set("server:" + configuration.getServerId() + ":playerCount", "0"); // reset
|
tmpRsc.set("server:" + configuration.getServerId() + ":playerCount", "0"); // reset
|
||||||
if (tmpRsc.scard("server:" + configuration.getServerId() + ":usersOnline") > 0) {
|
if (tmpRsc.scard("server:" + configuration.getServerId() + ":usersOnline") > 0) {
|
||||||
Set<String> smembers = tmpRsc.smembers("server:" + configuration.getServerId() + ":usersOnline");
|
for (String member : tmpRsc.smembers("server:" + configuration.getServerId() + ":usersOnline"))
|
||||||
// Make sure more one time...
|
cleanUpPlayer(member, tmpRsc);
|
||||||
if (smembers.size() > 0)
|
|
||||||
try {
|
|
||||||
tmpRsc.srem("server:" + configuration.getServerId() + ":usersOnline", smembers.toArray(new String[smembers.size()]));
|
|
||||||
} catch (JedisDataException ignored) {}
|
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
pool.returnResource(tmpRsc);
|
pool.returnResource(tmpRsc);
|
||||||
@ -201,8 +197,8 @@ public final class RedisBungee extends Plugin implements Listener {
|
|||||||
try {
|
try {
|
||||||
tmpRsc.set("server:" + configuration.getServerId() + ":playerCount", "0"); // reset
|
tmpRsc.set("server:" + configuration.getServerId() + ":playerCount", "0"); // reset
|
||||||
if (tmpRsc.scard("server:" + configuration.getServerId() + ":usersOnline") > 0) {
|
if (tmpRsc.scard("server:" + configuration.getServerId() + ":usersOnline") > 0) {
|
||||||
Set<String> smembers = tmpRsc.smembers("server:" + configuration.getServerId() + ":usersOnline");
|
for (String member : tmpRsc.smembers("server:" + configuration.getServerId() + ":usersOnline"))
|
||||||
tmpRsc.srem("server:" + configuration.getServerId() + ":usersOnline", smembers.toArray(new String[smembers.size()]));
|
cleanUpPlayer(member, tmpRsc);
|
||||||
}
|
}
|
||||||
} catch (JedisException | ClassCastException ignored) {
|
} catch (JedisException | ClassCastException ignored) {
|
||||||
} finally {
|
} finally {
|
||||||
@ -341,10 +337,8 @@ public final class RedisBungee extends Plugin implements Listener {
|
|||||||
if (pool != null) {
|
if (pool != null) {
|
||||||
Jedis rsc = pool.getResource();
|
Jedis rsc = pool.getResource();
|
||||||
try {
|
try {
|
||||||
rsc.srem("server:" + configuration.getServerId() + ":usersOnline", event.getPlayer().getName());
|
|
||||||
rsc.hset("player:" + event.getPlayer().getName(), "online", String.valueOf(getUnixTimestamp()));
|
rsc.hset("player:" + event.getPlayer().getName(), "online", String.valueOf(getUnixTimestamp()));
|
||||||
rsc.hdel("player:" + event.getPlayer().getName(), "server");
|
cleanUpPlayer(event.getPlayer().getName(), rsc);
|
||||||
rsc.hdel("player:" + event.getPlayer().getName(), "ip");
|
|
||||||
} finally {
|
} finally {
|
||||||
pool.returnResource(rsc);
|
pool.returnResource(rsc);
|
||||||
}
|
}
|
||||||
@ -385,6 +379,12 @@ public final class RedisBungee extends Plugin implements Listener {
|
|||||||
event.setResponse(reply);
|
event.setResponse(reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void cleanUpPlayer(String player, Jedis rsc) {
|
||||||
|
rsc.srem("server:" + configuration.getServerId() + ":usersOnline", player);
|
||||||
|
rsc.hdel("player:" + player, "server");
|
||||||
|
rsc.hdel("player:" + player, "ip");
|
||||||
|
}
|
||||||
|
|
||||||
private class PubSubListener extends Thread {
|
private class PubSubListener extends Thread {
|
||||||
private Jedis rsc;
|
private Jedis rsc;
|
||||||
private JedisPubSubHandler jpsh;
|
private JedisPubSubHandler jpsh;
|
||||||
|
Loading…
Reference in New Issue
Block a user