From bff1159e7e258f4d4d9ffa3a56e5eff852f05f20 Mon Sep 17 00:00:00 2001 From: Javavailable Date: Sat, 27 Jun 2026 20:41:45 +0300 Subject: [PATCH 1/3] Avoid blocking UUID lookups in pay commands --- .../fancyeconomy/commands/PayCMD.java | 53 ++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/PayCMD.java b/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/PayCMD.java index b40b407d9..9da3dbb27 100644 --- a/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/PayCMD.java +++ b/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/PayCMD.java @@ -6,7 +6,6 @@ import com.fancyinnovations.fancyeconomy.currencies.CurrencyPlayerManager; import com.fancyinnovations.fancyeconomy.currencies.CurrencyRegistry; import de.oliver.fancylib.MessageHelper; -import de.oliver.fancylib.UUIDFetcher; import dev.jorel.commandapi.annotations.Command; import dev.jorel.commandapi.annotations.Default; import dev.jorel.commandapi.annotations.Permission; @@ -16,8 +15,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.UUID; - @Command("pay") @Permission("fancyeconomy.pay") public class PayCMD { @@ -39,31 +36,39 @@ public static void pay( targetName = targetPlayer.getName(); } - UUID uuid = targetPlayer != null ? targetPlayer.getUniqueId() : UUIDFetcher.getUUID(targetName); - - if (uuid == null) { - FancyEconomy.getInstance().getTranslator() - .translate("player-not-found") - .replace("player", targetName) - .send(player); - return; - } - - if (player.getUniqueId().equals(uuid)) { - FancyEconomy.getInstance().getTranslator() - .translate("cannot-pay-yourself") - .send(player); - return; + CurrencyPlayer to; + if (targetPlayer != null) { + if (player.getUniqueId().equals(targetPlayer.getUniqueId())) { + FancyEconomy.getInstance().getTranslator() + .translate("cannot-pay-yourself") + .send(player); + return; + } + + to = CurrencyPlayerManager.getPlayer(targetPlayer.getUniqueId(), targetPlayer.getName()); + to.setUsername(targetPlayer.getName()); + } else { + to = CurrencyPlayerManager.getCachedPlayer(targetName); + if (to == null) { + FancyEconomy.getInstance().getTranslator() + .translate("player-not-found") + .replace("player", targetName) + .send(player); + return; + } + + if (player.getUniqueId().equals(to.getUuid())) { + FancyEconomy.getInstance().getTranslator() + .translate("cannot-pay-yourself") + .send(player); + return; + } } Currency currency = CurrencyRegistry.getDefaultCurrency(); - CurrencyPlayer from = CurrencyPlayerManager.getPlayer(player.getUniqueId()); - CurrencyPlayer to = CurrencyPlayerManager.getPlayer(uuid); - - if (targetPlayer != null) { - to.setUsername(targetPlayer.getName()); - } + CurrencyPlayer from = CurrencyPlayerManager.getPlayer(player.getUniqueId(), player.getName()); + from.setUsername(player.getName()); boolean allowNegativeBalance = FancyEconomy.getInstance().getFancyEconomyConfig().allowNegativeBalance(); if (!allowNegativeBalance && from.getBalance(currency) < amount) { From 51b5325c8b57acc5985a477e56c592529bf56f78 Mon Sep 17 00:00:00 2001 From: Javavailable Date: Sat, 27 Jun 2026 20:42:00 +0300 Subject: [PATCH 2/3] Avoid blocking UUID lookups in pay commands --- .../currencies/CurrencyPlayerManager.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/currencies/CurrencyPlayerManager.java b/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/currencies/CurrencyPlayerManager.java index 1b7831cac..665423cca 100644 --- a/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/currencies/CurrencyPlayerManager.java +++ b/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/currencies/CurrencyPlayerManager.java @@ -21,6 +21,13 @@ public static CurrencyPlayer getPlayer(UUID uuid) { } String username = UUIDFetcher.getName(uuid); + return getPlayer(uuid, username != null ? username : "N/A"); + } + + public static CurrencyPlayer getPlayer(UUID uuid, String username) { + if (cachedPlayers.containsKey(uuid)) { + return cachedPlayers.get(uuid); + } CurrencyPlayer player = new CurrencyPlayer(uuid, username != null ? username : "N/A"); cachedPlayers.put(uuid, player); @@ -28,13 +35,27 @@ public static CurrencyPlayer getPlayer(UUID uuid) { return player; } - public static CurrencyPlayer getPlayer(String username) { + public static CurrencyPlayer getCachedPlayer(String username) { + if (username == null) { + return null; + } + for (CurrencyPlayer player : cachedPlayers.values()) { - if (player.getUsername().equalsIgnoreCase(username)) { + String playerName = player.getUsername(); + if (playerName != null && playerName.equalsIgnoreCase(username)) { return player; } } + return null; + } + + public static CurrencyPlayer getPlayer(String username) { + CurrencyPlayer cachedPlayer = getCachedPlayer(username); + if (cachedPlayer != null) { + return cachedPlayer; + } + UUID uuid = UUIDFetcher.getUUID(username); if (uuid == null) { return null; From 8e85fd8665749ca28334778ba42edb1d2acb5465 Mon Sep 17 00:00:00 2001 From: Javavailable Date: Sat, 27 Jun 2026 20:42:30 +0300 Subject: [PATCH 3/3] Avoid blocking UUID lookups in pay commands --- .../commands/CurrencyBaseCMD.java | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/CurrencyBaseCMD.java b/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/CurrencyBaseCMD.java index 986c0e85c..4e109b659 100644 --- a/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/CurrencyBaseCMD.java +++ b/plugins/fancyeconomy/src/main/java/com/fancyinnovations/fancyeconomy/commands/CurrencyBaseCMD.java @@ -122,31 +122,38 @@ public void pay( targetName = targetPlayer.getName(); } - UUID uuid = targetPlayer != null ? targetPlayer.getUniqueId() : UUIDFetcher.getUUID(targetName); + CurrencyPlayer to; + if (targetPlayer != null) { + if (player.getUniqueId().equals(targetPlayer.getUniqueId())) { + FancyEconomy.getInstance().getTranslator() + .translate("cannot-pay-yourself") + .send(player); + return; + } - if (uuid == null) { - FancyEconomy.getInstance().getTranslator() - .translate("player-not-found") - .replace("player", targetName) - .send(player); - return; - } + to = CurrencyPlayerManager.getPlayer(targetPlayer.getUniqueId(), targetPlayer.getName()); + to.setUsername(targetPlayer.getName()); + } else { + to = CurrencyPlayerManager.getCachedPlayer(targetName); + if (to == null) { + FancyEconomy.getInstance().getTranslator() + .translate("player-not-found") + .replace("player", targetName) + .send(player); + return; + } - if (player.getUniqueId().equals(uuid)) { - FancyEconomy.getInstance().getTranslator() - .translate("cannot-pay-yourself") - .send(player); - return; + if (player.getUniqueId().equals(to.getUuid())) { + FancyEconomy.getInstance().getTranslator() + .translate("cannot-pay-yourself") + .send(player); + return; + } } - CurrencyPlayer from = CurrencyPlayerManager.getPlayer(player.getUniqueId()); - CurrencyPlayer to = CurrencyPlayerManager.getPlayer(uuid); + CurrencyPlayer from = CurrencyPlayerManager.getPlayer(player.getUniqueId(), player.getName()); from.setUsername(player.getName()); - if (targetPlayer != null) { - to.setUsername(targetPlayer.getName()); - } - boolean allowNegativeBalance = FancyEconomy.getInstance().getFancyEconomyConfig().allowNegativeBalance(); if (!allowNegativeBalance && from.getBalance(currency) < amount) { FancyEconomy.getInstance().getTranslator()