Skip to content

Convert-to-plugin fails when attempting to process Fallout4.esm #119

@ffact

Description

@ffact

Thanks again for fixing the startup issue for Linux . Yet again, I stumbled into another error when I was trying to make Spriggit process Fallout4.esm (pre-NG). Here's the log:

Log
>DOTNET_CLI_TELEMETRY_OPTOUT=1 /home/jarvis/Games/Fallout-4/drive_c/SpriggitLinuxCLI/Spriggit.CLI convert-from-plugin --InputPath "/home/jarvis/Games/Fallout-4/drive_c/Program Files/Fallout4/Data/Fallout4.esm" --OutputPath "/home/jarvis/Games/Fallout-4/drive_c/myStruggit/" --GameRelease Fallout4 --PackageName Spriggit.Json --PackageVersion "0.36.14"
Spriggit version 0.38.4+Branch.main.Sha.268677e31be60d99a10e3d56368b5afb849811a8.268677e31be60d99a10e3d56368b5afb849811a8
convert-from-plugin --InputPath /home/jarvis/Games/Fallout-4/drive_c/Program Files/Fallout4/Data/Fallout4.esm --OutputPath /home/jarvis/Games/Fallout-4/drive_c/myStruggit/ --GameRelease Fallout4 --PackageName Spriggit.Json --PackageVersion 0.36.14
[09:34:04.398 INF] Command to serialize
[09:34:04.461 INF] Throwing on unknown records: True
[09:34:04.553 INF] Getting entry point for SpriggitMeta { Source = Spriggit.Json.0.36.14, Release = Fallout4 }
[09:34:04.557 INF] Getting first identity for SpriggitMeta { Source = Spriggit.Json.0.36.14, Release = Fallout4 }
[09:34:04.561 INF] Cached first identity for SpriggitMeta { Source = Spriggit.Json.0.36.14, Release = Fallout4 }: Spriggit.Json.Fallout4.0.36.14
[09:34:04.565 INF] Constructing entry point for Spriggit.Json.Fallout4.0.36.14
[09:34:04.898 INF] Running DotNet Entry point install.  Clearing old path /tmp/Spriggit/Translations/Spriggit.Json.Fallout4/0.36.14
[09:34:04.899 INF] Running DotNet Entry point install with Args: tool install Spriggit.Json.Fallout4 --version 0.36.14 --tool-path "/tmp/Spriggit/Translations/Spriggit.Json.Fallout4/0.36.14"
[09:34:07.235 INF] You can invoke the tool using the following command: Spriggit.Json.Fallout4
[09:34:07.235 INF] Tool 'spriggit.json.fallout4' (version '0.36.14') was successfully installed.
[09:34:07.252 INF] Cached entry point for Spriggit.Json.Fallout4.0.36.14
[09:34:07.255 INF] Starting to serialize from Fallout4.esm => /home/jarvis/Games/Fallout-4/drive_c/Program Files/Fallout4/Data/Fallout4.esm to /home/jarvis/Games/Fallout-4/drive_c/myStruggit with SpriggitMeta { Source = Spriggit.Json.0.36.14, Release = Fallout4 }
[09:34:07.265 INF] Running DotNet Entry point serialize with Args: serialize -i "/home/jarvis/Games/Fallout-4/drive_c/Program Files/Fallout4/Data/Fallout4.esm" -o "/home/jarvis/Games/Fallout-4/drive_c/myStruggit" -g Fallout4 -p Spriggit.Json.Fallout4 -v 0.36.14
[09:34:07.318 INF] Spriggit version 0.36.14+Branch.main.Sha.a1b099fe76b087621ceb66a0641761d0085dad98.a1b099fe76b087621ceb66a0641761d0085dad98
[09:34:07.318 INF] serialize -i /home/jarvis/Games/Fallout-4/drive_c/Program Files/Fallout4/Data/Fallout4.esm -o /home/jarvis/Games/Fallout-4/drive_c/myStruggit -g Fallout4 -p Spriggit.Json.Fallout4 -v 0.36.14
[09:35:44.567 INF] Running basic correctness sanity checks:
[09:35:44.567 INF]   Path: Fallout4.esm => /home/jarvis/Games/Fallout-4/drive_c/Program Files/Fallout4/Data/Fallout4.esm
[09:35:44.567 INF]   Package: Spriggit.Json.Fallout4.0.36.14
[09:35:44.568 INF]   Release: Fallout4
[09:35:44.568 INF]   Data Folder:
[09:35:44.568 INF]   Spriggit Folder: /home/jarvis/Games/Fallout-4/drive_c/myStruggit
[09:35:44.572 INF] Running DotNet Tool entry point deserialize with Args: deserialize -i "/home/jarvis/Games/Fallout-4/drive_c/myStruggit" -o "/tmp/wc4qhy1j.j0g/Fallout4.esm" -p Spriggit.Json.Fallout4 -v 0.36.14
[09:35:44.811 INF] Spriggit version 0.36.14+Branch.main.Sha.a1b099fe76b087621ceb66a0641761d0085dad98.a1b099fe76b087621ceb66a0641761d0085dad98
[09:35:44.811 INF] deserialize -i /home/jarvis/Games/Fallout-4/drive_c/myStruggit -o /tmp/wc4qhy1j.j0g/Fallout4.esm -p Spriggit.Json.Fallout4 -v 0.36.14
[09:38:02.314 ERR] Unhandled exception. Mutagen.Bethesda.Plugins.Exceptions.LowerFormKeyRangeDisallowedException: Lower FormKey range was violated by: 000027:Fallout4.esm
[09:38:02.329 ERR]    at Mutagen.Bethesda.Plugins.Binary.Translations.ModHeaderWriteLogic.HandleDisallowedLowerFormIDs()
[09:38:02.329 ERR]    at Mutagen.Bethesda.Plugins.Binary.Translations.ModHeaderWriteLogic.PostProcessAdjustments(MutagenWriter writer, IModGetter mod, IModHeaderCommon modHeader, IReadOnlyCache`2 masterFlagLookup)
[09:38:02.329 ERR]    at Mutagen.Bethesda.Plugins.Binary.Translations.ModHeaderWriteLogic.WriteHeader(BinaryWriteParameters param, MutagenWriter writer, IModGetter mod, IModHeaderCommon modHeader, ModKey modKey)
[09:38:02.329 ERR]    at Mutagen.Bethesda.Fallout4.Fallout4ModCommon.WriteParallel(IFallout4ModGetter item, MutagenWriter writer, BinaryWriteParameters param, ModKey modKey)
[09:38:02.329 ERR]    at Mutagen.Bethesda.Fallout4.Fallout4ModBinaryWriteTranslation.Write(MutagenWriter writer, IFallout4ModGetter item, ModKey modKey, GroupMask importMask, BinaryWriteParameters param)
[09:38:02.330 ERR]    at Mutagen.Bethesda.Fallout4.Fallout4ModBinaryTranslationMixIn.WriteToBinary(IFallout4ModGetter item, FilePath path, BinaryWriteParameters param, GroupMask importMask)
[09:38:02.330 ERR]    at Mutagen.Bethesda.Fallout4.Fallout4Mod.Mutagen.Bethesda.Plugins.Records.IModGetter.WriteToBinary(FilePath path, BinaryWriteParameters param)
[09:38:02.330 ERR]    at Mutagen.Bethesda.Fallout4.Fallout4Mod.Fallout4WriteBuilderInstantiator.Write(IFallout4ModGetter mod, BinaryWriteBuilderParams`1 param)
[09:38:02.330 ERR]    at Mutagen.Bethesda.Fallout4.Fallout4Mod.Fallout4WriteBuilderInstantiator.WriteAsync(IFallout4ModGetter mod, BinaryWriteBuilderParams`1 param)
[09:38:02.330 ERR]    at Mutagen.Bethesda.Plugins.Binary.Translations.BinaryModdedWriteBuilder`1.WriteAsync()
[09:38:02.330 ERR]    at Spriggit.Json.Fallout4.EntryPoint.Deserialize(String inputPath, String outputPath, Nullable`1 dataPath, KnownMaster[] knownMasters, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Json.Fallout4\EntryPoint.cs:line 62
[09:38:02.331 ERR]    at Spriggit.TranslationPackages.TranslationPackageRunner.<>c__DisplayClass0_0.<<Run>b__0>d.MoveNext() in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.TranslationPackages\TranslationPackageRunner.cs:line 33
[09:38:02.331 ERR] --- End of stack trace from previous location ---
[09:38:02.331 ERR]    at Spriggit.TranslationPackages.TranslationPackageRunner.Run(String[] args, IEntryPoint entryPoint) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.TranslationPackages\TranslationPackageRunner.cs:line 23
[09:38:02.331 ERR]    at Spriggit.Json.Fallout4.Program.Main(String[] args) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Json.Fallout4\Program.cs:line 9
[09:38:02.331 ERR]    at Spriggit.Json.Fallout4.Program.<Main>(String[] args)
Error:
System.InvalidOperationException: Failed to deserialize
 at Spriggit.Engine.DotNetToolEntryPoint.Deserialize(String inputPath, String outputPath, Nullable`1 dataPath, KnownMaster[] knownMasters, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\DotNetToolEntryPoint.cs:line 126
 at Spriggit.Engine.Services.Singletons.PostSerializeChecker.<>c__DisplayClass5_0.<<Check>b__0>d.MoveNext() in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\PostSerializeChecker.cs:line 60
--- End of stack trace from previous location ---
 at Noggog.WorkEngine.InlineWorkDropoff.EnqueueAndWait[T](Func`1 toDo, CancellationToken cancellationToken)
 at Noggog.WorkEngine.ParallelWorkDropoff.EnqueueAndWait[T](Func`1 toDo, CancellationToken cancellationToken)
 at Spriggit.Engine.Services.Singletons.PostSerializeChecker.Check(ModPath mod, GameRelease release, DirectoryPath spriggit, Nullable`1 dataPath, KnownMaster[] knownMasters, IEngineEntryPoint entryPt, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\PostSerializeChecker.cs:line 73
 at Spriggit.Engine.Services.Singletons.SpriggitEngine.Serialize(ModPath bethesdaPluginPath, DirectoryPath outputFolder, Nullable`1 dataPath, Boolean postSerializeChecks, Boolean throwOnUnknown, IEngineEntryPoint entryPt, SpriggitMeta meta, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\SpriggetEngine.cs:line 88
 at Spriggit.CLI.Lib.EngineRunner.Run(SerializeCommand serializeCommand, IEngineEntryPoint entryPoint) in D:\a\Spriggit\Spriggit\Spriggit.CLI.Lib\EngineRunner.cs:line 67
 at Program.<>c.<<<Main>$>b__0_1>d.MoveNext() in D:\a\Spriggit\Spriggit\Spriggit.CLI\Program.cs:line 29
--- End of stack trace from previous location ---
 at Program.<Main>$(String[] args) in D:\a\Spriggit\Spriggit\Spriggit.CLI\Program.cs:line 19
Failed to deserialize
 at Spriggit.Engine.DotNetToolEntryPoint.Deserialize(String inputPath, String outputPath, Nullable`1 dataPath, KnownMaster[] knownMasters, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\DotNetToolEntryPoint.cs:line 126
 at Spriggit.Engine.Services.Singletons.PostSerializeChecker.<>c__DisplayClass5_0.<<Check>b__0>d.MoveNext() in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\PostSerializeChecker.cs:line 60
--- End of stack trace from previous location ---
 at Noggog.WorkEngine.InlineWorkDropoff.EnqueueAndWait[T](Func`1 toDo, CancellationToken cancellationToken)
 at Noggog.WorkEngine.ParallelWorkDropoff.EnqueueAndWait[T](Func`1 toDo, CancellationToken cancellationToken)
 at Spriggit.Engine.Services.Singletons.PostSerializeChecker.Check(ModPath mod, GameRelease release, DirectoryPath spriggit, Nullable`1 dataPath, KnownMaster[] knownMasters, IEngineEntryPoint entryPt, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\PostSerializeChecker.cs:line 73
 at Spriggit.Engine.Services.Singletons.SpriggitEngine.Serialize(ModPath bethesdaPluginPath, DirectoryPath outputFolder, Nullable`1 dataPath, Boolean postSerializeChecks, Boolean throwOnUnknown, IEngineEntryPoint entryPt, SpriggitMeta meta, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\SpriggetEngine.cs:line 88
 at Spriggit.CLI.Lib.EngineRunner.Run(SerializeCommand serializeCommand, IEngineEntryPoint entryPoint) in D:\a\Spriggit\Spriggit\Spriggit.CLI.Lib\EngineRunner.cs:line 67
 at Program.<>c.<<<Main>$>b__0_1>d.MoveNext() in D:\a\Spriggit\Spriggit\Spriggit.CLI\Program.cs:line 29
--- End of stack trace from previous location ---
 at Program.<Main>$(String[] args) in D:\a\Spriggit\Spriggit\Spriggit.CLI\Program.cs:line 19

Tested some small mods, spriggit was able to deserialize them.

I also found that figuring out the PackageVersion, GameRelease, and PackageName values isn't straightforward at all, and there's little to nothing about it in the documentation. Especially PackageVersion, which I took from the issues using search.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions