From 019d6f9def9580e7fe8ad223b443768ce5884deb Mon Sep 17 00:00:00 2001 From: okx-code Date: Thu, 16 Apr 2026 22:18:22 +0100 Subject: [PATCH] fix decay for groups with no owner + fix /nllg when viewing other players --- .../command/commands/ListGroups.java | 45 ++++++++++++------- .../vg/civcraft/mc/namelayer/group/Group.java | 3 ++ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java index f65303dbf..9ea82818d 100644 --- a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java +++ b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/command/commands/ListGroups.java @@ -6,8 +6,11 @@ import co.aikar.commands.annotation.Optional; import co.aikar.commands.annotation.Syntax; import java.util.List; import java.util.UUID; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import vg.civcraft.mc.namelayer.GroupManager; import vg.civcraft.mc.namelayer.NameLayerAPI; @@ -17,28 +20,36 @@ import vg.civcraft.mc.namelayer.group.Group; public class ListGroups extends BaseCommandMiddle { @CommandAlias("nllg|listgroups|groups") - @Syntax("[page]") + @Syntax("[player|page]") @Description("List groups.") - public void execute(CommandSender sender, @Optional String pageNumber) { - Player p = null; - UUID uuid = null; + public void execute(CommandSender sender, @Optional String targetOrPage) { + UUID uuid; boolean autopages = false; + Integer targetPage = null; + final boolean isAdmin = sender instanceof ConsoleCommandSender + || sender.isOp() || sender.hasPermission("namelayer.admin"); - if ((sender.isOp() || sender.hasPermission("namelayer.admin"))) { - if (pageNumber == null) { - uuid = NameLayerAPI.getUUID(sender.getName()); - } else if (pageNumber != null) { - uuid = NameLayerAPI.getUUID(sender.getName()); + if (isAdmin) { + uuid = NameLayerAPI.getUUID(sender.getName()); + if (targetOrPage != null) { + try { + targetPage = Integer.parseInt(targetOrPage); + } catch (NumberFormatException exception) { + uuid = NameLayerAPI.getUUID(targetOrPage); + } } if (uuid == null) { - sender.sendMessage(ChatColor.RED + "UUID is NULL, OP Usage is /nllg "); + sender.sendMessage(Component.text("Unknown player: " + targetOrPage, NamedTextColor.RED)); return; } autopages = true; } else { - p = (Player) sender; - uuid = NameLayerAPI.getUUID(p.getName()); + if (!(sender instanceof Player player)) { + sender.sendMessage(Component.text("Player only.", NamedTextColor.RED)); + return; + } + uuid = NameLayerAPI.getUUID(player.getName()); } List groups = gm.getAllGroupNames(uuid); @@ -53,13 +64,15 @@ public class ListGroups extends BaseCommandMiddle { int actualPages = pages; int target = 1; - if (pageNumber != null) { + if (!autopages && targetOrPage != null) { try { - target = Integer.parseInt(pageNumber); - } catch (NumberFormatException e) { - sender.sendMessage(ChatColor.RED + pageNumber + " is not a number"); + target = Integer.parseInt(targetOrPage); + } catch (NumberFormatException exception) { + sender.sendMessage(ChatColor.RED + targetOrPage + " is not a number"); return; } + } else if (targetPage != null) { + target = targetPage; } if (target >= pages) { diff --git a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/group/Group.java b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/group/Group.java index f1051369b..523dd1b28 100644 --- a/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/group/Group.java +++ b/plugins/namelayer-paper/src/main/java/vg/civcraft/mc/namelayer/group/Group.java @@ -578,6 +578,9 @@ public class Group { * @return true if the UUID belongs to the owner of the group, false otherwise. */ public boolean isOwner(UUID uuid) { + if (owner == null) { + return false; + } return owner.equals(uuid); }