diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java index 4396267..1a66223 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientAdminCommand.java @@ -41,7 +41,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { GradientMessages msg = module.getMessages(); if (!sender.hasPermission("gradient.admin")) { - sender.sendMessage(msg.get("no-permission")); + msg.send(sender, "no-permission"); return true; } @@ -55,7 +55,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { switch (subCommand) { case "reload" -> { module.reload(); - sender.sendMessage(msg.get("reload-success")); + msg.send(sender, "reload-success"); } case "info" -> { if (args.length < 2) { @@ -105,24 +105,24 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { private void handleInfo(CommandSender sender, String playerName, GradientMessages msg) { OfflinePlayer target = Bukkit.getOfflinePlayer(playerName); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } GradientPlayerData data = module.getDataManager().getPlayerData(target.getUniqueId()); - sender.sendMessage(msg.get("info-header", "player", playerName)); - sender.sendMessage(msg.get("info-prefix", "prefix", data.hasPrefix() ? data.getPrefix() : "нет")); - sender.sendMessage(msg.get("info-prefix-enabled", "enabled", data.isPrefixEnabled() ? "да" : "нет")); - sender.sendMessage(msg.get("info-colors", "colors", data.hasColors() ? String.join(", ", data.getColors()) : "нет")); - sender.sendMessage(msg.get("info-color-enabled", "enabled", data.isColorEnabled() ? "да" : "нет")); - sender.sendMessage(msg.get("info-prefix-purchased", "purchased", data.isPrefixPurchased() ? "да" : "нет")); + msg.send(sender, "info-header", "player", playerName); + msg.send(sender, "info-prefix", "prefix", data.hasPrefix() ? data.getPrefix() : "нет"); + msg.send(sender, "info-prefix-enabled", "enabled", data.isPrefixEnabled() ? "да" : "нет"); + msg.send(sender, "info-colors", "colors", data.hasColors() ? String.join(", ", data.getColors()) : "нет"); + msg.send(sender, "info-color-enabled", "enabled", data.isColorEnabled() ? "да" : "нет"); + msg.send(sender, "info-prefix-purchased", "purchased", data.isPrefixPurchased() ? "да" : "нет"); } private void handleSetColor(CommandSender sender, String[] args, GradientMessages msg) { OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } @@ -130,7 +130,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { for (int i = 2; i < args.length; i++) { String color = args[i].startsWith("#") ? args[i] : "#" + args[i]; if (!GradientUtil.isValidHex(color)) { - sender.sendMessage(msg.get("invalid-color", "color", args[i])); + msg.send(sender, "invalid-color", "color", args[i]); return; } colors.add(color.toUpperCase()); @@ -138,7 +138,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { GradientConfig cfg = module.getConfig(); if (colors.size() > cfg.getMaxColors()) { - sender.sendMessage(msg.get("too-many-colors", "max", String.valueOf(cfg.getMaxColors()))); + msg.send(sender, "too-many-colors", "max", String.valueOf(cfg.getMaxColors())); return; } @@ -161,7 +161,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { private void handleSetPrefix(CommandSender sender, String[] args, GradientMessages msg) { OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } @@ -174,7 +174,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { GradientConfig cfg = module.getConfig(); if (prefix.length() > cfg.getMaxPrefixLength()) { - sender.sendMessage(msg.get("prefix-too-long", "max", String.valueOf(cfg.getMaxPrefixLength()))); + msg.send(sender, "prefix-too-long", "max", String.valueOf(cfg.getMaxPrefixLength())); return; } @@ -205,7 +205,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } @@ -232,7 +232,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } @@ -265,7 +265,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } @@ -293,7 +293,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter { OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]); if (!target.hasPlayedBefore() && !target.isOnline()) { - sender.sendMessage(msg.get("player-not-found")); + msg.send(sender, "player-not-found"); return; } diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java index 98501f4..864e713 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java @@ -51,17 +51,17 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!(sender instanceof Player player)) { - sender.sendMessage(module.getMessages().get("only-player")); + module.getMessages().send(sender, "only-player"); return true; } if (!player.hasPermission("gradient.color")) { - player.sendMessage(module.getMessages().get("no-permission")); + module.getMessages().send(player, "no-permission"); return true; } if (args.length == 0) { - player.sendMessage(module.getMessages().get("color-help")); + module.getMessages().send(player, "color-help"); return true; } @@ -79,13 +79,13 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { GradientMessages msg = module.getMessages(); if (!data.hasColors()) { - player.sendMessage(msg.get("color-no-colors")); + msg.send(player, "color-no-colors"); return true; } data.setColorEnabled(true); saveAndUpdate(player, data); - player.sendMessage(msg.get("color-enabled")); + msg.send(player, "color-enabled"); return true; } @@ -93,7 +93,7 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { GradientPlayerData data = module.getDataManager().getPlayerData(player.getUniqueId()); data.setColorEnabled(false); saveAndUpdate(player, data); - player.sendMessage(module.getMessages().get("color-disabled")); + module.getMessages().send(player, "color-disabled"); return true; } @@ -102,14 +102,14 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { GradientMessages msg = module.getMessages(); if (!data.hasColors()) { - player.sendMessage(msg.get("color-no-colors")); + msg.send(player, "color-no-colors"); return true; } data.setColors(new ArrayList<>()); data.setColorEnabled(false); saveAndUpdate(player, data); - player.sendMessage(msg.get("color-reset")); + msg.send(player, "color-reset"); return true; } @@ -118,19 +118,19 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { GradientConfig cfg = module.getConfig(); if (args.length < 2) { - player.sendMessage(msg.get("color-copy-usage")); + msg.send(player, "color-copy-usage"); return true; } Player target = Bukkit.getPlayer(args[1]); if (target == null) { - player.sendMessage(msg.get("player-not-found")); + msg.send(player, "player-not-found"); return true; } GradientPlayerData targetData = module.getDataManager().getPlayerData(target.getUniqueId()); if (!targetData.hasColors()) { - player.sendMessage(msg.get("color-copy-no-colors", "player", target.getName())); + msg.send(player, "color-copy-no-colors", "player", target.getName()); return true; } @@ -159,12 +159,12 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { GradientConfig cfg = module.getConfig(); if (args.length > cfg.getMaxColors()) { - player.sendMessage(msg.get("too-many-colors", "max", String.valueOf(cfg.getMaxColors()))); + msg.send(player, "too-many-colors", "max", String.valueOf(cfg.getMaxColors())); return true; } if (args.length < cfg.getMinColors()) { - player.sendMessage(msg.get("not-enough-colors", "min", String.valueOf(cfg.getMinColors()))); + msg.send(player, "not-enough-colors", "min", String.valueOf(cfg.getMinColors())); return true; } @@ -179,7 +179,7 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { for (String arg : args) { String color = arg.startsWith("#") ? arg : "#" + arg; if (!GradientUtil.isValidHex(color)) { - player.sendMessage(msg.get("invalid-color", "color", arg)); + msg.send(player, "invalid-color", "color", arg); return true; } colors.add(color.toUpperCase()); @@ -202,7 +202,7 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { long timePassed = System.currentTimeMillis() - lastChange; if (timePassed < cooldownMs) { long remaining = (cooldownMs - timePassed) / GradientConstants.MILLIS_PER_SECOND; - player.sendMessage(module.getMessages().get("cooldown", "time", String.valueOf(remaining))); + module.getMessages().send(player, "cooldown", "time", String.valueOf(remaining)); return false; } return true; @@ -215,7 +215,7 @@ public class GradientColorCommand implements CommandExecutor, TabCompleter { } int balance = module.getPlayerPointsAPI().look(player.getUniqueId()); if (balance < price) { - player.sendMessage(module.getMessages().get("not-enough-points-color", "price", String.valueOf(price))); + module.getMessages().send(player, "not-enough-points-color", "price", String.valueOf(price)); return false; } return true; diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java index bd0ce34..d6310a1 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java @@ -48,17 +48,17 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (!(sender instanceof Player player)) { - sender.sendMessage(module.getMessages().get("only-player")); + module.getMessages().send(sender, "only-player"); return true; } if (!player.hasPermission("gradient.prefix")) { - player.sendMessage(module.getMessages().get("no-permission")); + module.getMessages().send(player, "no-permission"); return true; } if (args.length == 0) { - player.sendMessage(module.getMessages().get("prefix-help")); + module.getMessages().send(player, "prefix-help"); return true; } @@ -76,14 +76,14 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { GradientMessages msg = module.getMessages(); if (!data.hasPrefix()) { - player.sendMessage(msg.get("prefix-no-prefix")); + msg.send(player, "prefix-no-prefix"); return true; } data.setPrefixEnabled(true); module.getLuckPermsHook().setPrefix(player, DisplayNameUtil.buildColoredPrefix(module, data)); saveAndUpdate(player, data); - player.sendMessage(msg.get("prefix-enabled")); + msg.send(player, "prefix-enabled"); return true; } @@ -92,7 +92,7 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { data.setPrefixEnabled(false); module.getLuckPermsHook().removePrefix(player); saveAndUpdate(player, data); - player.sendMessage(module.getMessages().get("prefix-disabled")); + module.getMessages().send(player, "prefix-disabled"); return true; } @@ -101,7 +101,7 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { GradientMessages msg = module.getMessages(); if (!data.hasPrefix()) { - player.sendMessage(msg.get("prefix-no-prefix")); + msg.send(player, "prefix-no-prefix"); return true; } @@ -109,7 +109,7 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { data.setPrefixEnabled(false); module.getLuckPermsHook().removePrefix(player); saveAndUpdate(player, data); - player.sendMessage(msg.get("prefix-reset-success")); + msg.send(player, "prefix-reset-success"); return true; } @@ -119,27 +119,27 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { String prefix = String.join(" ", args); if (prefix.trim().isEmpty()) { - player.sendMessage(msg.get("prefix-help")); + msg.send(player, "prefix-help"); return true; } if (COLOR_CODE_PATTERN.matcher(prefix).find()) { - player.sendMessage(msg.get("prefix-no-colors")); + msg.send(player, "prefix-no-colors"); return true; } if (!ALLOWED_PREFIX_PATTERN.matcher(prefix).matches()) { - player.sendMessage(msg.get("prefix-invalid-chars")); + msg.send(player, "prefix-invalid-chars"); return true; } if (cfg.isPrefixBlacklisted(prefix)) { - player.sendMessage(msg.get("prefix-blacklisted")); + msg.send(player, "prefix-blacklisted"); return true; } if (prefix.length() > cfg.getMaxPrefixLength()) { - player.sendMessage(msg.get("prefix-too-long", "max", String.valueOf(cfg.getMaxPrefixLength()))); + msg.send(player, "prefix-too-long", "max", String.valueOf(cfg.getMaxPrefixLength())); return true; } @@ -172,7 +172,7 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { long timePassed = System.currentTimeMillis() - lastChange; if (timePassed < cooldownMs) { long remaining = (cooldownMs - timePassed) / GradientConstants.MILLIS_PER_SECOND; - player.sendMessage(module.getMessages().get("cooldown", "time", String.valueOf(remaining))); + module.getMessages().send(player, "cooldown", "time", String.valueOf(remaining)); return false; } return true; @@ -185,7 +185,7 @@ public class GradientPrefixCommand implements CommandExecutor, TabCompleter { } int balance = module.getPlayerPointsAPI().look(player.getUniqueId()); if (balance < price) { - player.sendMessage(module.getMessages().get("not-enough-points-prefix", "price", String.valueOf(price))); + module.getMessages().send(player, "not-enough-points-prefix", "price", String.valueOf(price)); return false; } return true; diff --git a/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java b/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java index 9e63e37..8c49f65 100644 --- a/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java +++ b/src/main/java/com/loki/lochat/gradient/config/GradientMessages.java @@ -1,6 +1,8 @@ package com.loki.lochat.gradient.config; import com.loki.lochat.utils.ChatFormatter; +import net.kyori.adventure.text.Component; +import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; @@ -43,11 +45,17 @@ public class GradientMessages { loadMessages(); } + /** + * Получает сообщение как строку с MiniMessage тегами + */ public String get(String key) { String message = messages.getString(key, "&#FF0000Сообщение не найдено: " + key); return ChatFormatter.convertAllColors(message); } + /** + * Получает сообщение как строку с заменами + */ public String get(String key, String... replacements) { String message = messages.getString(key, "&#FF0000Сообщение не найдено: " + key); for (int i = 0; i < replacements.length; i += 2) { @@ -57,4 +65,32 @@ public class GradientMessages { } return ChatFormatter.convertAllColors(message); } + + /** + * Получает сообщение как Component + */ + public Component getComponent(String key) { + return ChatFormatter.parse(get(key)); + } + + /** + * Получает сообщение как Component с заменами + */ + public Component getComponent(String key, String... replacements) { + return ChatFormatter.parse(get(key, replacements)); + } + + /** + * Отправляет сообщение игроку + */ + public void send(CommandSender sender, String key) { + sender.sendMessage(getComponent(key)); + } + + /** + * Отправляет сообщение игроку с заменами + */ + public void send(CommandSender sender, String key, String... replacements) { + sender.sendMessage(getComponent(key, replacements)); + } } diff --git a/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java b/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java index d57c1b5..1b83a3b 100644 --- a/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java +++ b/src/main/java/com/loki/lochat/gradient/listeners/GradientGUIListener.java @@ -57,7 +57,7 @@ public class GradientGUIListener implements Listener { } int balance = module.getPlayerPointsAPI().look(player.getUniqueId()); if (balance < price) { - player.sendMessage(msg.get(PRICE_MSG_KEYS.get(gui.getType()), "price", String.valueOf(price))); + msg.send(player, PRICE_MSG_KEYS.get(gui.getType()), "price", String.valueOf(price)); return; } module.getPlayerPointsAPI().take(player.getUniqueId(), price); @@ -70,7 +70,7 @@ public class GradientGUIListener implements Listener { data.setColors(gui.getColors()); data.setColorEnabled(true); data.setLastColorChange(System.currentTimeMillis()); - player.sendMessage(msg.get("color-success", "price", String.valueOf(price))); + msg.send(player, "color-success", "price", String.valueOf(price)); } case PREFIX -> { data.setPrefix(gui.getPrefix()); @@ -78,8 +78,8 @@ public class GradientGUIListener implements Listener { data.setPrefixPurchased(true); data.setLastPrefixChange(System.currentTimeMillis()); module.getLuckPermsHook().setPrefix(player, DisplayNameUtil.buildColoredPrefix(module, data)); - player.sendMessage(msg.get(price > 0 ? "prefix-success" : "prefix-success-free", - "price", String.valueOf(price))); + msg.send(player, price > 0 ? "prefix-success" : "prefix-success-free", + "price", String.valueOf(price)); } }