feat: implement claimlink info, bump to 0.0.4

This commit is contained in:
2026-07-12 19:27:31 +02:00
parent e7118e259b
commit 565f91408b
3 changed files with 33 additions and 2 deletions
+30 -1
View File
@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
using Vintagestory.API.Common; using Vintagestory.API.Common;
using Vintagestory.API.Server; using Vintagestory.API.Server;
@@ -294,7 +295,35 @@ public static class ClaimLinkChatCommand
} }
public static TextCommandResult Delete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink delete"); public static TextCommandResult Delete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink delete");
public static TextCommandResult TransferOwnership(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink transferownership"); public static TextCommandResult TransferOwnership(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink transferownership");
public static TextCommandResult Info(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink info"); public static TextCommandResult Info(TextCommandCallingArgs args)
{
string groupName = (string)args[0];
TextCommandResult? err = TryResolveGroup(groupName, out PlayerGroup group);
if (err != null) return err;
err = TryResolveClaimLink(group, out ClaimLink link);
if (err != null) return err;
err = RequireOpOrOwner(args.Caller.Player, group);
if (err != null) return err;
return TextCommandResult.Success(FormatInfo(groupName, link));
}
private static string FormatInfo(string groupName, ClaimLink link)
{
StringBuilder sb = new();
sb.AppendLine($"Claim link '{groupName}' ({link.Members.Count} member(s)):");
foreach (ClaimLinkMember member in link.Members)
{
string name = ClaimLinkModSystem.World.PlayerByUid(member.OwnerPlayerUid)?.PlayerName ?? member.OwnerPlayerUid;
sb.AppendLine($" {name}: claims [{string.Join(", ", member.LocalClaimIndices)}]");
}
return sb.ToString();
}
public static TextCommandResult AdminDelete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink admin delete"); public static TextCommandResult AdminDelete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink admin delete");
public static TextCommandResult AdminUnlink(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink admin unlink"); public static TextCommandResult AdminUnlink(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink admin unlink");
+2
View File
@@ -11,6 +11,7 @@ public class ClaimLinkModSystem : ModSystem
internal static ILogger Logger = null!; internal static ILogger Logger = null!;
internal static ClaimLinkRegistry Registry = null!; internal static ClaimLinkRegistry Registry = null!;
internal static IGroupManager Groups = null!; internal static IGroupManager Groups = null!;
internal static IWorldAccessor World = null!;
internal ClaimLinkCommandListener? cmdListener; internal ClaimLinkCommandListener? cmdListener;
public override bool ShouldLoad(EnumAppSide forSide) => forSide == EnumAppSide.Server; public override bool ShouldLoad(EnumAppSide forSide) => forSide == EnumAppSide.Server;
@@ -21,6 +22,7 @@ public class ClaimLinkModSystem : ModSystem
Logger = api.Logger; Logger = api.Logger;
Registry = new ClaimLinkRegistry(api.WorldManager.SaveGame); Registry = new ClaimLinkRegistry(api.WorldManager.SaveGame);
Groups = api.Groups; Groups = api.Groups;
World = api.World;
cmdListener = new ClaimLinkCommandListener(); cmdListener = new ClaimLinkCommandListener();
CommandHookModSystem.Register(cmdListener); CommandHookModSystem.Register(cmdListener);
+1 -1
View File
@@ -8,7 +8,7 @@
"anth64" "anth64"
], ],
"description": "Link claims together with groups.", "description": "Link claims together with groups.",
"version": "0.0.3", "version": "0.0.4",
"dependencies": { "dependencies": {
"game": "1.22.3", "game": "1.22.3",
"commandhook": "2.1.0" "commandhook": "2.1.0"