feat: gate claim link info detail by membership/admin, count members with no claims

This commit is contained in:
2026-07-20 23:36:03 +02:00
parent 2e4cc25b20
commit c8fc86069b
2 changed files with 14 additions and 3 deletions
+13 -2
View File
@@ -543,7 +543,11 @@ public static class ClaimLinkChatCommand
if (err != null) if (err != null)
return err; return err;
return TextCommandResult.Success(FormatInfo(groupName, group.Uid)); IPlayer player = args.Caller.Player;
bool showDetails =
player.HasPrivilege(Privilege.controlserver) || player.GetGroup(group.Uid) != null;
return TextCommandResult.Success(FormatInfo(groupName, group.Uid, showDetails));
} }
public static TextCommandResult List(TextCommandCallingArgs args) public static TextCommandResult List(TextCommandCallingArgs args)
@@ -585,7 +589,7 @@ public static class ClaimLinkChatCommand
return string.IsNullOrEmpty(claim.Description) ? $"claim {claimIndex}" : claim.Description; return string.IsNullOrEmpty(claim.Description) ? $"claim {claimIndex}" : claim.Description;
} }
private static string FormatInfo(string groupName, int groupId) private static string FormatInfo(string groupName, int groupId, bool showDetails)
{ {
int memberCount = ClaimLinkModSystem.Registry.MemberCountForGroup(groupId); int memberCount = ClaimLinkModSystem.Registry.MemberCountForGroup(groupId);
@@ -597,6 +601,13 @@ public static class ClaimLinkChatCommand
foreach (string uid in ClaimLinkModSystem.Registry.MemberUidsForGroup(groupId)) foreach (string uid in ClaimLinkModSystem.Registry.MemberUidsForGroup(groupId))
{ {
string name = ClaimLinkModSystem.World.PlayerByUid(uid)?.PlayerName ?? uid; string name = ClaimLinkModSystem.World.PlayerByUid(uid)?.PlayerName ?? uid;
if (!showDetails)
{
sb.AppendLine($" {name}");
continue;
}
IEnumerable<string> claims = ClaimLinkModSystem IEnumerable<string> claims = ClaimLinkModSystem
.Registry.ClaimsForPlayerInGroup(uid, groupId) .Registry.ClaimsForPlayerInGroup(uid, groupId)
.Select(i => DescribeClaim(uid, i)); .Select(i => DescribeClaim(uid, i));
+1 -1
View File
@@ -145,7 +145,7 @@ public class ClaimLinkRegistry
public IEnumerable<string> MemberUidsForGroup(int groupId) public IEnumerable<string> MemberUidsForGroup(int groupId)
{ {
foreach (var (uid, groups) in entries) foreach (var (uid, groups) in entries)
if (groups.TryGetValue(groupId, out var claims) && claims.Count > 0) if (groups.ContainsKey(groupId))
yield return uid; yield return uid;
} }