From cc9967f9c29837c9efa2c75d0f26e94700691ab7 Mon Sep 17 00:00:00 2001 From: Taah Date: Thu, 31 Aug 2023 02:18:11 -0700 Subject: [PATCH] make bans and kicks not take too long --- .../main/java/dev/plex/player/PlexPlayer.java | 4 +-- .../java/dev/plex/punishment/Punishment.java | 5 +-- .../plex/storage/player/SQLPlayerData.java | 32 +++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/server/src/main/java/dev/plex/player/PlexPlayer.java b/server/src/main/java/dev/plex/player/PlexPlayer.java index 68c684d..dc86045 100644 --- a/server/src/main/java/dev/plex/player/PlexPlayer.java +++ b/server/src/main/java/dev/plex/player/PlexPlayer.java @@ -65,7 +65,7 @@ public class PlexPlayer { } - public PlexPlayer(UUID playerUUID, boolean loadExtraData) + public PlexPlayer(UUID playerUUID, boolean loadPunishments) { this.uuid = playerUUID; this.name = ""; @@ -78,7 +78,7 @@ public class PlexPlayer this.coins = 0; - if (loadExtraData) + if (loadPunishments) { this.loadPunishments(); // this.permissions.addAll(Plex.get().getSqlPermissions().getPermissions(this.uuid)); diff --git a/server/src/main/java/dev/plex/punishment/Punishment.java b/server/src/main/java/dev/plex/punishment/Punishment.java index bd0d56d..2906aa1 100644 --- a/server/src/main/java/dev/plex/punishment/Punishment.java +++ b/server/src/main/java/dev/plex/punishment/Punishment.java @@ -3,6 +3,7 @@ package dev.plex.punishment; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import dev.plex.Plex; +import dev.plex.cache.DataUtils; import dev.plex.storage.annotation.SQLTable; import dev.plex.util.MojangUtils; import dev.plex.util.PlexUtils; @@ -48,12 +49,12 @@ public class Punishment public static Component generateBanMessage(Punishment punishment) { - return PlexUtils.messageComponent("banMessage", banUrl, punishment.getReason(), TimeUtils.useTimezone(punishment.getEndDate()), punishment.getPunisher() == null ? "CONSOLE" : MojangUtils.getInfo(punishment.getPunisher().toString()).getUsername()); + return PlexUtils.messageComponent("banMessage", banUrl, punishment.getReason(), TimeUtils.useTimezone(punishment.getEndDate()), punishment.getPunisher() == null ? "CONSOLE" : Plex.get().getSqlPlayerData().getNameByUUID(punishment.getPunisher())); } public static Component generateKickMessage(Punishment punishment) { - return PlexUtils.messageComponent("kickMessage", punishment.getReason(), punishment.getPunisher() == null ? "CONSOLE" : MojangUtils.getInfo(punishment.getPunisher().toString()).getUsername()); + return PlexUtils.messageComponent("kickMessage", punishment.getReason(), punishment.getPunisher() == null ? "CONSOLE" : Plex.get().getSqlPlayerData().getNameByUUID(punishment.getPunisher())); } public static Component generateIndefBanMessageWithReason(String type, String reason) diff --git a/server/src/main/java/dev/plex/storage/player/SQLPlayerData.java b/server/src/main/java/dev/plex/storage/player/SQLPlayerData.java index 8f4817a..e6c44a1 100644 --- a/server/src/main/java/dev/plex/storage/player/SQLPlayerData.java +++ b/server/src/main/java/dev/plex/storage/player/SQLPlayerData.java @@ -111,6 +111,38 @@ public class SQLPlayerData return null; } + + /** + * Gets the player from cache or from the SQL database + * + * @param uuid The unique ID of the player + * @return a PlexPlayer object + * @see PlexPlayer + */ + public String getNameByUUID(UUID uuid) + { + if (Plex.get().getPlayerCache().getPlexPlayerMap().containsKey(uuid)) + { + return Plex.get().getPlayerCache().getPlexPlayerMap().get(uuid).getName(); + } + + try (Connection con = Plex.get().getSqlConnection().getCon()) + { + PreparedStatement statement = con.prepareStatement("SELECT `name` FROM `players` WHERE uuid=?"); + statement.setString(1, uuid.toString()); + ResultSet set = statement.executeQuery(); + if (set.next()) + { + return set.getString("name"); + } + } + catch (SQLException throwables) + { + throwables.printStackTrace(); + } + return null; + } + public PlexPlayer getByUUID(UUID uuid) { return this.getByUUID(uuid, true);