diff --git a/Penumbra/Mods/Editor/ModMerger.cs b/Penumbra/Mods/Editor/ModMerger.cs index 74f182d3..f5fc9cd7 100644 --- a/Penumbra/Mods/Editor/ModMerger.cs +++ b/Penumbra/Mods/Editor/ModMerger.cs @@ -189,7 +189,8 @@ public class ModMerger : IDisposable _editor.SetFiles(option, redirections, SaveType.None); _editor.SetFileSwaps(option, swaps, SaveType.None); - _editor.SetManipulations(option, manips, SaveType.ImmediateSync); + _editor.SetManipulations(option, manips, SaveType.None); + _editor.ForceSave(option, SaveType.ImmediateSync); return; bool GetFullPath(FullPath input, out FullPath ret) @@ -263,9 +264,10 @@ public class ModMerger : IDisposable if (mods.Count == 1) { var files = CopySubModFiles(mods[0], dir); - _editor.SetFiles(result.Default, files); - _editor.SetFileSwaps(result.Default, mods[0].FileSwaps); - _editor.SetManipulations(result.Default, mods[0].Manipulations); + _editor.SetFiles(result.Default, files, SaveType.None); + _editor.SetFileSwaps(result.Default, mods[0].FileSwaps, SaveType.None); + _editor.SetManipulations(result.Default, mods[0].Manipulations, SaveType.None); + _editor.ForceSave(result.Default); } else { @@ -277,6 +279,7 @@ public class ModMerger : IDisposable _editor.SetFiles(result.Default, files); _editor.SetFileSwaps(result.Default, mods[0].FileSwaps); _editor.SetManipulations(result.Default, mods[0].Manipulations); + _editor.ForceSave(result.Default); } else { @@ -285,9 +288,10 @@ public class ModMerger : IDisposable var (option, _, _) = _editor.FindOrAddOption(group!, originalOption.GetName()); var folder = Path.Combine(dir.FullName, group!.Name, option!.Name); var files = CopySubModFiles(originalOption, new DirectoryInfo(folder)); - _editor.SetFiles((IModDataContainer)option, files); - _editor.SetFileSwaps((IModDataContainer)option, originalOption.FileSwaps); - _editor.SetManipulations((IModDataContainer)option, originalOption.Manipulations); + _editor.SetFiles((IModDataContainer)option, files, SaveType.None); + _editor.SetFileSwaps((IModDataContainer)option, originalOption.FileSwaps, SaveType.None); + _editor.SetManipulations((IModDataContainer)option, originalOption.Manipulations, SaveType.None); + _editor.ForceSave((IModDataContainer)option); } } } diff --git a/Penumbra/Mods/ItemSwap/ItemSwapContainer.cs b/Penumbra/Mods/ItemSwap/ItemSwapContainer.cs index 48d687d0..af5b2d3a 100644 --- a/Penumbra/Mods/ItemSwap/ItemSwapContainer.cs +++ b/Penumbra/Mods/ItemSwap/ItemSwapContainer.cs @@ -83,7 +83,8 @@ public class ItemSwapContainer manager.OptionEditor.SetFiles(container, convertedFiles, SaveType.None); manager.OptionEditor.SetFileSwaps(container, convertedSwaps, SaveType.None); - manager.OptionEditor.SetManipulations(container, convertedManips, SaveType.ImmediateSync); + manager.OptionEditor.SetManipulations(container, convertedManips, SaveType.None); + manager.OptionEditor.ForceSave(container, SaveType.ImmediateSync); return true; } catch (Exception e) diff --git a/Penumbra/Mods/Manager/OptionEditor/ModGroupEditor.cs b/Penumbra/Mods/Manager/OptionEditor/ModGroupEditor.cs index e1db0ccf..55e01015 100644 --- a/Penumbra/Mods/Manager/OptionEditor/ModGroupEditor.cs +++ b/Penumbra/Mods/Manager/OptionEditor/ModGroupEditor.cs @@ -166,6 +166,10 @@ public class ModGroupEditor( communicator.ModOptionChanged.Invoke(ModOptionChangeType.OptionFilesChanged, (Mod)subMod.Mod, subMod.Group, null, subMod, -1); } + /// Forces a file save of the given container's group. + public void ForceSave(IModDataContainer subMod, SaveType saveType = SaveType.Queue) + => saveService.Save(saveType, new ModSaveGroup(subMod, Config.ReplaceNonAsciiOnImport)); + /// Add additional file redirections to a given option, keeping already existing ones. Only fires an event if anything is actually added. public void AddFiles(IModDataContainer subMod, IReadOnlyDictionary additions) {