From 92bb0030de649b617a0986255a1017557075fad1 Mon Sep 17 00:00:00 2001 From: mohammed jasem alaajel Date: Wed, 2 Nov 2022 08:38:25 +0400 Subject: [PATCH] move PlayerUtils code from platforms to the api --- .../api/util/player/PlayerUtils.java | 23 +++++++++++++ .../redisbungee/BungeePlayerUtils.java | 32 ++++--------------- .../minecraft/redisbungee/RedisBungee.java | 2 +- .../RedisBungeeBungeeListener.java | 2 +- .../RedisBungeeVelocityListener.java | 2 +- .../RedisBungeeVelocityPlugin.java | 2 +- .../redisbungee/VelocityPlayerUtils.java | 27 ++++++---------- 7 files changed, 43 insertions(+), 47 deletions(-) diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/util/player/PlayerUtils.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/util/player/PlayerUtils.java index d053e00..8d1a8af 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/util/player/PlayerUtils.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/api/util/player/PlayerUtils.java @@ -3,6 +3,12 @@ package com.imaginarycode.minecraft.redisbungee.api.util.player; import com.imaginarycode.minecraft.redisbungee.AbstractRedisBungeeAPI; import redis.clients.jedis.UnifiedJedis; +import java.net.InetAddress; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import static com.imaginarycode.minecraft.redisbungee.api.util.payload.PayloadUtils.playerJoinPayload; import static com.imaginarycode.minecraft.redisbungee.api.util.payload.PayloadUtils.playerQuitPayload; public class PlayerUtils { @@ -17,5 +23,22 @@ public class PlayerUtils { } } + public static void createPlayer(UUID uuid, UnifiedJedis unifiedJedis, String currentServer, InetAddress hostname, boolean fireEvent) { + if (currentServer != null) { + unifiedJedis.hset("player:" + uuid, "server", currentServer); + } + Map playerData = new HashMap<>(4); + playerData.put("online", "0"); + playerData.put("ip", hostname.getHostName()); + playerData.put("proxy", AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId()); + + unifiedJedis.sadd("proxy:" + AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId() + ":usersOnline", uuid.toString()); + unifiedJedis.hmset("player:" + uuid, playerData); + + if (fireEvent) { + playerJoinPayload(uuid, unifiedJedis, hostname); + } + } + } diff --git a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/BungeePlayerUtils.java b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/BungeePlayerUtils.java index a8ac603..f1a46c6 100644 --- a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/BungeePlayerUtils.java +++ b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/BungeePlayerUtils.java @@ -10,37 +10,19 @@ package com.imaginarycode.minecraft.redisbungee; +import com.imaginarycode.minecraft.redisbungee.api.util.player.PlayerUtils; import net.md_5.bungee.api.connection.PendingConnection; import net.md_5.bungee.api.connection.ProxiedPlayer; import redis.clients.jedis.UnifiedJedis; - -import java.util.HashMap; -import java.util.Map; - -import static com.imaginarycode.minecraft.redisbungee.api.util.payload.PayloadUtils.playerJoinPayload; - public class BungeePlayerUtils { - public static void createPlayer(ProxiedPlayer player, UnifiedJedis unifiedJedis, boolean fireEvent) { - createPlayer(player.getPendingConnection(), unifiedJedis, fireEvent); - if (player.getServer() != null) - unifiedJedis.hset("player:" + player.getUniqueId().toString(), "server", player.getServer().getInfo().getName()); - } - - public static void createPlayer(PendingConnection connection, UnifiedJedis unifiedJedis, boolean fireEvent) { - Map playerData = new HashMap<>(4); - playerData.put("online", "0"); - playerData.put("ip", connection.getAddress().getAddress().getHostAddress()); - playerData.put("proxy", RedisBungeeAPI.getRedisBungeeApi().getProxyId()); - - unifiedJedis.sadd("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getProxyId() + ":usersOnline", connection.getUniqueId().toString()); - unifiedJedis.hmset("player:" + connection.getUniqueId().toString(), playerData); - - if (fireEvent) { - playerJoinPayload(connection.getUniqueId(), unifiedJedis, connection.getAddress().getAddress()); + public static void createBungeePlayer(ProxiedPlayer player, UnifiedJedis unifiedJedis, boolean fireEvent) { + String serverName = null; + if (player.getServer() != null) { + serverName = player.getServer().getInfo().getName(); } + PendingConnection pendingConnection = player.getPendingConnection(); + PlayerUtils.createPlayer(player.getUniqueId(), unifiedJedis, serverName, pendingConnection.getAddress().getAddress(), fireEvent); } - - } diff --git a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java index 5ac9e1b..256c200 100644 --- a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java +++ b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java @@ -243,7 +243,7 @@ public class RedisBungee extends Plugin implements RedisBungeePlugin, Con Player playerProxied = getProxy().getPlayer(UUID.fromString(player)).orElse(null); if (playerProxied == null) return; // We'll deal with it later. - VelocityPlayerUtils.createPlayer(playerProxied, unifiedJedis, false); + VelocityPlayerUtils.createVelocityPlayer(playerProxied, unifiedJedis, false); } }; integrityCheck = getProxy().getScheduler().buildTask(this, integrityCheckTask::execute).repeat(30, TimeUnit.SECONDS).schedule(); diff --git a/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/VelocityPlayerUtils.java b/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/VelocityPlayerUtils.java index 7e274a6..2f43fc8 100644 --- a/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/VelocityPlayerUtils.java +++ b/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/VelocityPlayerUtils.java @@ -10,31 +10,22 @@ package com.imaginarycode.minecraft.redisbungee; +import com.imaginarycode.minecraft.redisbungee.api.util.player.PlayerUtils; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ServerConnection; import redis.clients.jedis.UnifiedJedis; -import java.util.HashMap; -import java.util.Map; import java.util.Optional; -import static com.imaginarycode.minecraft.redisbungee.api.util.payload.PayloadUtils.playerJoinPayload; - public class VelocityPlayerUtils { - protected static void createPlayer(Player player, UnifiedJedis unifiedJedis, boolean fireEvent) { - Optional server = player.getCurrentServer(); - server.ifPresent(serverConnection -> unifiedJedis.hset("player:" + player.getUniqueId().toString(), "server", serverConnection.getServerInfo().getName())); - - Map playerData = new HashMap<>(4); - playerData.put("online", "0"); - playerData.put("ip", player.getRemoteAddress().getHostName()); - playerData.put("proxy", AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId()); - - unifiedJedis.sadd("proxy:" + AbstractRedisBungeeAPI.getAbstractRedisBungeeAPI().getProxyId() + ":usersOnline", player.getUniqueId().toString()); - unifiedJedis.hmset("player:" + player.getUniqueId().toString(), playerData); - - if (fireEvent) { - playerJoinPayload(player.getUniqueId(), unifiedJedis, player.getRemoteAddress().getAddress()); + protected static void createVelocityPlayer(Player player, UnifiedJedis unifiedJedis, boolean fireEvent) { + Optional optionalServerConnection = player.getCurrentServer(); + String serverName = null; + if (optionalServerConnection.isPresent()) { + serverName = optionalServerConnection.get().getServerInfo().getName(); } + PlayerUtils.createPlayer(player.getUniqueId(), unifiedJedis, serverName, player.getRemoteAddress().getAddress(), fireEvent); } + + }