diff --git a/ARControl/ARControl.csproj b/ARControl/ARControl.csproj index 030bb84..02882da 100644 --- a/ARControl/ARControl.csproj +++ b/ARControl/ARControl.csproj @@ -1,7 +1,7 @@ net7.0-windows - 3.1 + 3.2 11.0 enable true diff --git a/ARControl/AutoRetainerControlPlugin.Sync.cs b/ARControl/AutoRetainerControlPlugin.Sync.cs index 59a7107..55453c1 100644 --- a/ARControl/AutoRetainerControlPlugin.Sync.cs +++ b/ARControl/AutoRetainerControlPlugin.Sync.cs @@ -44,9 +44,13 @@ partial class AutoRetainerControlPlugin save = true; } + // remove retainers without name + save |= character.Retainers.RemoveAll(x => string.IsNullOrEmpty(x.Name)) > 0; + // migrate legacy retainers foreach (var legacyRetainer in character.Retainers.Where(x => x.RetainerContentId == 0)) { + _pluginLog.Information($"Migrating retainer '{legacyRetainer.Name}' (char: {character})"); var retainerData = offlineCharacterData.RetainerData.SingleOrDefault(x => legacyRetainer.Name == x.Name); if (retainerData != null) @@ -71,7 +75,7 @@ partial class AutoRetainerControlPlugin } List unknownRetainerIds = offlineCharacterData.RetainerData.Select(x => x.RetainerID).Where(x => x != 0).ToList(); - foreach (var retainerData in offlineCharacterData.RetainerData) + foreach (var retainerData in offlineCharacterData.RetainerData.Where(x => !string.IsNullOrEmpty(x.Name))) { unknownRetainerIds.Remove(retainerData.RetainerID); diff --git a/ARControl/AutoRetainerControlPlugin.cs b/ARControl/AutoRetainerControlPlugin.cs index 413be3d..7665b06 100644 --- a/ARControl/AutoRetainerControlPlugin.cs +++ b/ARControl/AutoRetainerControlPlugin.cs @@ -74,7 +74,18 @@ public sealed partial class AutoRetainerControlPlugin : IDalamudPlugin }); if (_autoRetainerApi.Ready) - Sync(); + { + try + { + Sync(); + } + catch (Exception e) + { + _pluginLog.Error(e, "Unable to sync characters"); + _chatGui.PrintError( + "Unable to synchronize characters with AutoRetainer, plugin might not work properly."); + } + } } private void SendRetainerToVenture(string retainerName)