Mutagen-Modding / Spriggit

A tool to facilitate converting Bethesda plugin files to a text based format that can be stored in Git
GNU General Public License v3.0
88 stars 11 forks source link

Starfield plugin file created by CK Spriggit is unable to serialize #71

Closed JasonJShuler closed 1 month ago

JasonJShuler commented 2 months ago

I'm experimenting with some lesser / never used fields (swf on quest) and records (note).

Using Spriggit 0.24.0 Gui.

xEdit 4.1.5g chokes on the note record, Spriggit chokes on the quest.

Plugin: example_plugin.zip

Here is the error

Mutagen.Bethesda.Serialization.Exceptions.FilePathedException: Exception occurred while processing related to a filepath: C:\a1mods\esm\onek_konsole\RecordData.yaml
 ---> SubrecordException onek_konsole.esp => ONEK_KonsoleQuest (000814:onek_konsole.esp<Quest>) => SNAM: Unexpected subrecord    at Mutagen.Bethesda.Plugins.Records.GroupMajorRecordCacheWrapper`1.GetEnumerator()+MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
   at Noggog.EnumerableExt.WithIndex[T](IEnumerable`1 en)+MoveNext() in D:\a\CSharpExt\CSharpExt\Noggog.CSharpExt\Extensions\EnumerableExt.cs:line 223
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Noggog.WorkEngine.InlineWorkDropoff.EnqueueAndWait[T](IEnumerable`1 items, Func`2 action, CancellationToken cancellationToken)
   at Mutagen.Bethesda.Serialization.Utility.SerializationHelper.WriteFolderPerRecord[TKernel,TWriteObject,TGroup,TObject](StreamPackage streamPackage, TGroup group, String fieldName, SerializationMetaData metaData, MutagenSerializationWriterKernel`2 kernel, WriteAsync`3 groupWriter, HasSerializationItems`1 groupHasSerializationItems, WriteAsync`3 itemWriter, Boolean withNumbering)
   at Mutagen.Bethesda.Starfield.StarfieldMod_Serialization.SerializeFields[TKernel,TWriteObject](TWriteObject writer, IStarfieldModGetter item, MutagenSerializationWriterKernel`2 kernel, SerializationMetaData metaData) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Yaml.Starfield\obj\Release\net7.0\Mutagen.Bethesda.Serialization.SourceGenerator\Mutagen.Bethesda.Serialization.SourceGenerator.Serialization.SerializationSourceGenerator\StarfieldMod_Serializations.g.cs:line 1811
   at Mutagen.Bethesda.Starfield.StarfieldMod_Serialization.Serialize[TKernel,TWriteObject](TWriteObject writer, IStarfieldModGetter item, MutagenSerializationWriterKernel`2 kernel, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Yaml.Starfield\obj\Release\net7.0\Mutagen.Bethesda.Serialization.SourceGenerator\Mutagen.Bethesda.Serialization.SourceGenerator.Serialization.SerializationSourceGenerator\StarfieldMod_Serializations.g.cs:line 36
   at Mutagen.Bethesda.Serialization.Yaml.MutagenYamlConverterStarfieldModMixIns.SerializeInternal[TMeta](MutagenYamlConverter converterBootstrap, IStarfieldModGetter item, DirectoryPath path, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, TMeta extraMeta, WriteAsync`3 metaWriter, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Yaml.Starfield\obj\Release\net7.0\Mutagen.Bethesda.Serialization.SourceGenerator\Mutagen.Bethesda.Serialization.SourceGenerator.Serialization.SerializationSourceGenerator\MutagenYamlConverter_StarfieldMod_MixIns.g.cs:line 48
   --- End of inner exception stack trace ---
   at Mutagen.Bethesda.Serialization.Yaml.MutagenYamlConverterStarfieldModMixIns.SerializeInternal[TMeta](MutagenYamlConverter converterBootstrap, IStarfieldModGetter item, DirectoryPath path, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, TMeta extraMeta, WriteAsync`3 metaWriter, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Yaml.Starfield\obj\Release\net7.0\Mutagen.Bethesda.Serialization.SourceGenerator\Mutagen.Bethesda.Serialization.SourceGenerator.Serialization.SerializationSourceGenerator\MutagenYamlConverter_StarfieldMod_MixIns.g.cs:line 53
   at Mutagen.Bethesda.Serialization.Yaml.MutagenYamlConverterStarfieldModMixIns.Serialize(MutagenYamlConverter converterBootstrap, IStarfieldModGetter item, DirectoryPath path, SpriggitSource extraMeta, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Yaml.Starfield\obj\Release\net7.0\Mutagen.Bethesda.Serialization.SourceGenerator\Mutagen.Bethesda.Serialization.SourceGenerator.Serialization.SerializationSourceGenerator\MutagenYamlConverter_StarfieldMod_MixIns.g.cs:line 89
   at Spriggit.Yaml.Starfield.EntryPoint.Serialize(ModPath modPath, DirectoryPath dir, GameRelease release, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, SpriggitSource meta, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Translation Packages\Spriggit.Yaml.Starfield\EntryPoint.cs:line 46
   at Spriggit.Core.DynamicEntryPoint.Serialize(ModPath modPath, DirectoryPath outputDir, GameRelease release, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, SpriggitSource meta, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Core\DynamicEntryPoint.cs:line 42
   at Spriggit.Engine.AssemblyLoadedEntryPoint.Serialize(ModPath modPath, DirectoryPath outputDir, GameRelease release, IWorkDropoff workDropoff, IFileSystem fileSystem, ICreateStream streamCreator, SpriggitSource meta, CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\AssemblyLoadedEntryPoint.cs:line 37
   at Spriggit.Engine.Services.Singletons.SpriggitEngine.Serialize(ModPath bethesdaPluginPath, DirectoryPath outputFolder, IEngineEntryPoint entryPt, SpriggitMeta meta, Nullable`1 cancel) in D:\a\Spriggit\Spriggit\Spriggit.Engine\Services\Singletons\SpriggetEngine.cs:line 62
   at Spriggit.UI.ViewModels.Transient.LinkVm.SyncToGit(CancellationToken cancel) in D:\a\Spriggit\Spriggit\Spriggit.UI\ViewModels\Transient\LinkVm.cs:line 221

Thanks!

JasonJShuler commented 1 month ago

Is this the wrong way / place to report such things?

Noggog commented 1 month ago

No, this is a great place. Just been super behind on things. Been spending too much time trying to understand the new master flag systems for Starfield, and it's been a slog. Hoping to get a new push out this today or this weekend

Noggog commented 1 month ago

Should be fixed in next release