diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/GenericPlayerUtils.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/GenericPlayerUtils.java index c44a2e9..0a1da72 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/GenericPlayerUtils.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/GenericPlayerUtils.java @@ -10,30 +10,35 @@ import static com.imaginarycode.minecraft.redisbungee.api.util.payload.PayloadUt public class GenericPlayerUtils { - public static void cleanUpPlayer(String uuid, Jedis rsc) { + public static void cleanUpPlayer(String uuid, Jedis rsc, boolean firePayload) { rsc.srem("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getProxyId() + ":usersOnline", uuid); rsc.hdel("player:" + uuid, "server", "ip", "proxy"); long timestamp = System.currentTimeMillis(); rsc.hset("player:" + uuid, "online", String.valueOf(timestamp)); - playerQuitPayload(uuid, rsc, timestamp); + if (firePayload) { + playerQuitPayload(uuid, rsc, timestamp); + } } - public static void cleanUpPlayer(String uuid, Pipeline rsc) { + public static void cleanUpPlayer(String uuid, Pipeline rsc, boolean firePayload) { rsc.srem("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getProxyId() + ":usersOnline", uuid); rsc.hdel("player:" + uuid, "server", "ip", "proxy"); long timestamp = System.currentTimeMillis(); rsc.hset("player:" + uuid, "online", String.valueOf(timestamp)); - playerQuitPayload(uuid, rsc, timestamp); + if (firePayload) { + playerQuitPayload(uuid, rsc, timestamp); + } } - public static void cleanUpPlayer(String uuid, JedisCluster rsc) { + public static void cleanUpPlayer(String uuid, JedisCluster rsc, boolean firePayload) { rsc.srem("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getProxyId() + ":usersOnline", uuid); rsc.hdel("player:" + uuid, "server", "ip", "proxy"); long timestamp = System.currentTimeMillis(); rsc.hset("player:" + uuid, "online", String.valueOf(timestamp)); - playerQuitPayload(uuid, rsc, timestamp); - + if (firePayload) { + playerQuitPayload(uuid, rsc, timestamp); + } } diff --git a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeeListener.java b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeeListener.java index 118f670..22a9c1f 100644 --- a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeeListener.java +++ b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeBungeeListener.java @@ -147,7 +147,7 @@ public class RedisBungeeBungeeListener extends AbstractRedisBungeeListener 0) { Set players = jedis.smembers("proxy:" + configuration.getProxyId() + ":usersOnline"); for (String member : players) - GenericPlayerUtils.cleanUpPlayer(member, jedis); + GenericPlayerUtils.cleanUpPlayer(member, jedis, true); } return null; } @@ -788,7 +788,7 @@ public class RedisBungeeBungeePlugin extends Plugin implements RedisBungeePlugin if (jedisCluster.scard("proxy:" + configuration.getProxyId() + ":usersOnline") > 0) { Set players = jedisCluster.smembers("proxy:" + configuration.getProxyId() + ":usersOnline"); for (String member : players) - GenericPlayerUtils.cleanUpPlayer(member, jedisCluster); + GenericPlayerUtils.cleanUpPlayer(member, jedisCluster, true); } return null; } diff --git a/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeVelocityListener.java b/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeVelocityListener.java index d71c2e0..21592f6 100644 --- a/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeVelocityListener.java +++ b/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeVelocityListener.java @@ -139,14 +139,14 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener { if (!laggedPlayers.isEmpty()) { getLogger().info("Cleaning up lagged proxy {} ({} players)...", s, laggedPlayers.size()); for (String laggedPlayer : laggedPlayers) { - GenericPlayerUtils.cleanUpPlayer(laggedPlayer, jedis); + GenericPlayerUtils.cleanUpPlayer(laggedPlayer, jedis, true); } } } @@ -673,7 +673,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin { } } if (!found) { - GenericPlayerUtils.cleanUpPlayer(member, jedis); + GenericPlayerUtils.cleanUpPlayer(member, jedis, false); getLogger().warn("Player found in set that was not found locally and globally: {}", member); } else { jedis.srem("proxy:" + configuration.getProxyId() + ":usersOnline", member); @@ -715,7 +715,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin { if (!laggedPlayers.isEmpty()) { getLogger().info("Cleaning up lagged proxy {} ({} players)...", s, laggedPlayers.size()); for (String laggedPlayer : laggedPlayers) { - GenericPlayerUtils.cleanUpPlayer(laggedPlayer, jedisCluster); + GenericPlayerUtils.cleanUpPlayer(laggedPlayer, jedisCluster, true); } } } @@ -736,7 +736,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin { } } if (!found) { - GenericPlayerUtils.cleanUpPlayer(member, jedisCluster); + GenericPlayerUtils.cleanUpPlayer(member, jedisCluster, false); getLogger().warn("Player found in set that was not found locally and globally: {}", member); } else { jedisCluster.srem("proxy:" + configuration.getProxyId() + ":usersOnline", member); @@ -799,7 +799,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin { if (jedis.scard("proxy:" + configuration.getProxyId() + ":usersOnline") > 0) { Set players = jedis.smembers("proxy:" + configuration.getProxyId() + ":usersOnline"); for (String member : players) - GenericPlayerUtils.cleanUpPlayer(member, jedis); + GenericPlayerUtils.cleanUpPlayer(member, jedis, true); } return null; } @@ -810,7 +810,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin { if (jedisCluster.scard("proxy:" + configuration.getProxyId() + ":usersOnline") > 0) { Set players = jedisCluster.smembers("proxy:" + configuration.getProxyId() + ":usersOnline"); for (String member : players) - GenericPlayerUtils.cleanUpPlayer(member, jedisCluster); + GenericPlayerUtils.cleanUpPlayer(member, jedisCluster, true); } return null; }