From 86ebc9c0d2d885c5d5720a1a5003d950742b47c3 Mon Sep 17 00:00:00 2001 From: mohammed jasem alaajel <34905970+ham1255@users.noreply.github.com> Date: Thu, 22 Jul 2021 02:06:36 +0400 Subject: [PATCH] Fix: Player being added into the Redis database if LoginEvent was cancelled..... (#16) --- .../redisbungee/RedisBungeeListener.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeListener.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeListener.java index 9e4548b..04f5ffc 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeListener.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeListener.java @@ -74,13 +74,6 @@ public class RedisBungeeListener implements Listener { return null; } } - - Pipeline pipeline = jedis.pipelined(); - plugin.getUuidTranslator().persistInfo(event.getConnection().getName(), event.getConnection().getUniqueId(), pipeline); - RedisUtil.createPlayer(event.getConnection(), pipeline, false); - // We're not publishing, the API says we only publish at PostLoginEvent time. - pipeline.sync(); - return null; } finally { event.completeIntent(plugin); @@ -94,6 +87,15 @@ public class RedisBungeeListener implements Listener { plugin.getProxy().getScheduler().runAsync(plugin, new RedisCallable(plugin) { @Override protected Void call(Jedis jedis) { + // this code was moved out from login event due being async.. + // and it can be cancelled but it will show as false in redis-bungee + // which will register the player into the redis database. + Pipeline pipeline = jedis.pipelined(); + plugin.getUuidTranslator().persistInfo(event.getPlayer().getName(), event.getPlayer().getUniqueId(), pipeline); + RedisUtil.createPlayer(event.getPlayer(), pipeline, false); + pipeline.sync(); + // the end of moved code. + jedis.publish("redisbungee-data", RedisBungee.getGson().toJson(new DataManager.DataManagerMessage<>( event.getPlayer().getUniqueId(), DataManager.DataManagerMessage.Action.JOIN, new DataManager.LoginPayload(event.getPlayer().getAddress().getAddress()))));