diff --git a/ClaimLink/ClaimLinkChatCommand.cs b/ClaimLink/ClaimLinkChatCommand.cs index e9b0e1c..ffe634d 100644 --- a/ClaimLink/ClaimLinkChatCommand.cs +++ b/ClaimLink/ClaimLinkChatCommand.cs @@ -113,7 +113,23 @@ public static class ClaimLinkChatCommand admin.EndSubCommand(); } - public static TextCommandResult New(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlinknew"); + public static TextCommandResult New(TextCommandCallingArgs args) + { + string groupName = (string)args[0]; + + PlayerGroup? group = ClaimLinkModSystem.Groups.GetPlayerGroupByName(groupName); + if (group == null) + return TextCommandResult.Error($"No group named '{groupName}' exists."); + + if (group.OwnerUID != args.Caller.Player.PlayerUID) + return TextCommandResult.Error($"You do not own the group '{groupName}'."); + + if (ClaimLinkModSystem.Registry.Get(group.Uid) != null) + return TextCommandResult.Error($"'{groupName}' is already a claim link."); + + ClaimLinkModSystem.Registry.Add(new ClaimLink { GroupId = group.Uid }); + return TextCommandResult.Success($"'{groupName}' is now a claim link."); + } public static TextCommandResult Link(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink link"); public static TextCommandResult Confirm(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink confirm"); public static TextCommandResult Cancel(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink cancel"); diff --git a/ClaimLink/ClaimLinkModSystem.cs b/ClaimLink/ClaimLinkModSystem.cs index 5f47ea8..522f302 100644 --- a/ClaimLink/ClaimLinkModSystem.cs +++ b/ClaimLink/ClaimLinkModSystem.cs @@ -9,6 +9,7 @@ public class ClaimLinkModSystem : ModSystem internal static ILandClaimAPI LandClaimAPI = null!; internal static ILogger Logger = null!; internal static ClaimLinkRegistry Registry = null!; + internal static IGroupManager Groups = null!; internal ClaimLinkCommandListener? cmdListener; public override bool ShouldLoad(EnumAppSide forSide) => forSide == EnumAppSide.Server; @@ -18,6 +19,7 @@ public class ClaimLinkModSystem : ModSystem LandClaimAPI = api.World.Claims; Logger = api.Logger; Registry = new ClaimLinkRegistry(api.WorldManager.SaveGame); + Groups = api.Groups; cmdListener = new ClaimLinkCommandListener(); CommandHookModSystem.Register(cmdListener);