fix: split adminfree (by player name) from adminfreehere (by position)
This commit is contained in:
@@ -12,6 +12,7 @@ public class ClaimLinkModSystem : ModSystem
|
|||||||
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 static IWorldAccessor World = null!;
|
||||||
|
internal static IPlayerDataManager PlayerData = 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;
|
||||||
@@ -22,6 +23,7 @@ public class ClaimLinkModSystem : ModSystem
|
|||||||
World = api.World;
|
World = api.World;
|
||||||
Groups = api.Groups;
|
Groups = api.Groups;
|
||||||
Logger = api.Logger;
|
Logger = api.Logger;
|
||||||
|
PlayerData = api.PlayerData;
|
||||||
Registry = new ClaimLinkRegistry(api.WorldManager.SaveGame);
|
Registry = new ClaimLinkRegistry(api.WorldManager.SaveGame);
|
||||||
|
|
||||||
CmdListener = new ClaimLinkCommandListener();
|
CmdListener = new ClaimLinkCommandListener();
|
||||||
|
|||||||
@@ -142,6 +142,12 @@ public class ClaimLinkRegistry
|
|||||||
Save();
|
Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ClearAllForPlayer(string uid)
|
||||||
|
{
|
||||||
|
entries.Remove(uid);
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<string> MemberUidsForGroup(int groupId)
|
public IEnumerable<string> MemberUidsForGroup(int groupId)
|
||||||
{
|
{
|
||||||
foreach (var (uid, groups) in entries)
|
foreach (var (uid, groups) in entries)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ public class ClaimLinkCommandListener : ICommandHookListener
|
|||||||
["claim"] = Claim,
|
["claim"] = Claim,
|
||||||
["free"] = Free,
|
["free"] = Free,
|
||||||
["adminfree"] = AdminFree,
|
["adminfree"] = AdminFree,
|
||||||
|
["adminfreehere"] = AdminFreeHere,
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly Dictionary<string, SubHandler> claimSub = new()
|
private static readonly Dictionary<string, SubHandler> claimSub = new()
|
||||||
@@ -124,6 +125,23 @@ public class ClaimLinkCommandListener : ICommandHookListener
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void AdminFree(Caller caller, CmdArgs args)
|
private static void AdminFree(Caller caller, CmdArgs args)
|
||||||
|
{
|
||||||
|
if (caller.Player == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
string? name = args.PopWord();
|
||||||
|
if (name == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
string? uid = ClaimLinkModSystem.PlayerData.GetPlayerDataByLastKnownName(name)?.PlayerUID;
|
||||||
|
if (uid == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ClaimLinkModSystem.Registry.ClearAllForPlayer(uid);
|
||||||
|
ClaimLinkChatCommand.PendingActions.Remove(uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AdminFreeHere(Caller caller, CmdArgs args)
|
||||||
{
|
{
|
||||||
if (caller.Player == null)
|
if (caller.Player == null)
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user