Fix prefix display logic and add updateall admin command for display names

This commit is contained in:
loki5512344 2025-12-30 23:20:36 +01:00
parent cc8f4b0f92
commit 64c672c02e
2 changed files with 21 additions and 2 deletions

View file

@ -84,6 +84,9 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter {
case "prefixoff" -> handlePrefixToggle(sender, args, false, msg); case "prefixoff" -> handlePrefixToggle(sender, args, false, msg);
case "resetcolor" -> handleResetColor(sender, args, msg); case "resetcolor" -> handleResetColor(sender, args, msg);
case "resetprefix" -> handleResetPrefix(sender, args, msg); case "resetprefix" -> handleResetPrefix(sender, args, msg);
case "updateall" -> {
handleUpdateAll(sender, msg);
}
default -> sendHelp(sender); default -> sendHelp(sender);
} }
@ -100,6 +103,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter {
sender.sendMessage("§e/aprefix prefixon/prefixoff <игрок> §7— вкл/выкл префикс"); sender.sendMessage("§e/aprefix prefixon/prefixoff <игрок> §7— вкл/выкл префикс");
sender.sendMessage("§e/aprefix resetcolor <игрок> §7— сбросить цвет"); sender.sendMessage("§e/aprefix resetcolor <игрок> §7— сбросить цвет");
sender.sendMessage("§e/aprefix resetprefix <игрок> §7— сбросить префикс"); sender.sendMessage("§e/aprefix resetprefix <игрок> §7— сбросить префикс");
sender.sendMessage("§e/aprefix updateall §7— обновить display names всех игроков");
} }
private void handleInfo(CommandSender sender, String playerName, GradientMessages msg) { private void handleInfo(CommandSender sender, String playerName, GradientMessages msg) {
@ -315,6 +319,17 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter {
sender.sendMessage("§aПрефикс для игрока §f" + args[1] + " §aсброшен"); sender.sendMessage("§aПрефикс для игрока §f" + args[1] + " §aсброшен");
} }
private void handleUpdateAll(CommandSender sender, GradientMessages msg) {
int count = 0;
for (Player player : Bukkit.getOnlinePlayers()) {
GradientPlayerData data = module.getDataManager().getPlayerData(player.getUniqueId());
FoliaUtil.runEntityTask(module.getPlugin(), player,
() -> DisplayNameUtil.updateDisplayName(module, player, data));
count++;
}
sender.sendMessage("§aОбновлены display names для §f" + count + " §aигроков");
}
@Override @Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command,
@NotNull String alias, @NotNull String[] args) { @NotNull String alias, @NotNull String[] args) {
@ -322,7 +337,7 @@ public class GradientAdminCommand implements CommandExecutor, TabCompleter {
if (args.length == 1) { if (args.length == 1) {
return Arrays.asList("reload", "info", "setcolor", "setprefix", "coloron", "coloroff", return Arrays.asList("reload", "info", "setcolor", "setprefix", "coloron", "coloroff",
"prefixon", "prefixoff", "resetcolor", "resetprefix").stream() "prefixon", "prefixoff", "resetcolor", "resetprefix", "updateall").stream()
.filter(s -> s.startsWith(args[0].toLowerCase())) .filter(s -> s.startsWith(args[0].toLowerCase()))
.toList(); .toList();
} }

View file

@ -31,9 +31,12 @@ public final class DisplayNameUtil {
String prefix = null; String prefix = null;
String prefixFormat = cfg.getPrefixFormat(); String prefixFormat = cfg.getPrefixFormat();
// Определяем префикс: сначала кастомный, потом LuckPerms
if (data.isPrefixEnabled() && data.hasPrefix()) { if (data.isPrefixEnabled() && data.hasPrefix()) {
// Есть кастомный префикс
prefix = data.getPrefix(); prefix = data.getPrefix();
} else { } else if (module.getLuckPermsHook().isEnabled()) {
// Нет кастомного префикса, проверяем LuckPerms
String lpPrefix = module.getLuckPermsHook().getActivePrefix(player); String lpPrefix = module.getLuckPermsHook().getActivePrefix(player);
if (lpPrefix != null && !lpPrefix.isEmpty()) { if (lpPrefix != null && !lpPrefix.isEmpty()) {
String displayName = buildWithLuckPermsPrefix( String displayName = buildWithLuckPermsPrefix(
@ -52,6 +55,7 @@ public final class DisplayNameUtil {
} }
} }
// Строим display name с кастомным префиксом или без префикса
String displayName = GradientUtil.buildDisplayName( String displayName = GradientUtil.buildDisplayName(
prefix, prefix,
player.getName(), player.getName(),