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()))));