diff --git a/ClaimLink/LandCommandListener.cs b/ClaimLink/LandCommandListener.cs index e681558..f5970aa 100644 --- a/ClaimLink/LandCommandListener.cs +++ b/ClaimLink/LandCommandListener.cs @@ -80,7 +80,9 @@ public class ClaimLinkCommandListener : ICommandHookListener private static void Claim(Caller caller, CmdArgs args, TextCommandResult? result) { - string word = args.PeekWord(); + string? word = args.PeekWord(); + if (word == null) + return; if (claimSub.TryGetValue(word, out SubHandler? handler)) { @@ -91,15 +93,27 @@ public class ClaimLinkCommandListener : ICommandHookListener private static void ClaimLoad(Caller caller, CmdArgs args, TextCommandResult? result) { - if (result == null || result.Status != EnumCommandStatus.Success || caller.Player == null) - return; - int? claimIndex = args.PopInt(); - if (claimIndex == null || claimIndex < 0 || claimIndex > 999) + if (caller.Player == null) return; - ClaimLinkModSystem.Logger.Notification($"Claim Index Loaded = {claimIndex}"); - PendingLoads[caller.Player.PlayerUID] = (int)claimIndex; + ClaimLinkModSystem.Logger.Notification( + "CLAIM LOAD {0}", + result == null ? "BEFORE" : "AFTER" + ); + + if ( + claimIndex != null + && ClaimLinkModSystem.TryResolveOwnedClaim( + caller.Player.PlayerUID, + (int)claimIndex, + out _ + ) + ) + { + PendingLoads[caller.Player.PlayerUID] = (int)claimIndex; + ClaimLinkModSystem.Logger.Notification($"Claim Index Loaded = {claimIndex}"); + } } private static void ClaimCancel(Caller caller, CmdArgs args, TextCommandResult? result) @@ -204,6 +218,5 @@ public class ClaimLinkCommandListener : ICommandHookListener internal static void OnPlayerDisconnect(IServerPlayer player) { PendingLoads.Remove(player.PlayerUID); - ClaimLinkChatCommand.PendingActions.Remove(player.PlayerUID); } }