Open Mvdpal opened 1 month ago
It looks like the debug log message I added for https://github.com/bluelightning32/vs-gourmand/issues/1 threw its own exception. That code is only triggered when it finds a duplicate cooking recipe. So the logging wasn't the source of the issue.
I'll try installing those mods and see which one added the duplicate recipe.
You have a lot of mods on your server, which I support, but it is a hassle for me to download and install all of them.
With the 1.2.2 release, I changed duplicate recipes from a fatal error to just a warning. The mod should be playable in that state. However, you will likely see a strongly worded warning while launching the game.
Please collect the server log with 1.2.2 installed and add it to this bug. I'd like to see which mod is adding the duplicate recipe to decide whether to reduce the severity of message from warning to debug.
If I don't hear back in a few days, I'll close this bug.
On Discord, Rapidash reported the same crash. They have a different set of mods installed.
2/10/2024 2:44:04 PM: Critical error occurred in the following mod: gourmand@1.2.1
Loaded Mods: aculinaryartillery@1.2.1, angelbelt@1.5.0, Ceramos@0.5.1, chiblocksel@1.0.5, chiseltools@1.12.3, ClaimsRadar@1.1.0, dyedhardenedclay@1.0.0, floralzonescaperegion@1.0.10, floralzonescaribbeanregion@1.0.7, floralzonescentralaustralianregion@1.0.5, floralzoneseastasiaticregion@1.0.3, floralzonesneozeylandicregion@1.0.3, magellan1k@1.0.0, mannequinstand@1.0.3, millwright@1.1.6, moreclay@1.0.2, mushroomtrader@1.0.2, mycodiversity@1.0.2, optimizedwindmills@1.0.1, primitivesurvival@3.6.5, she1fish@1.2.1, volumetricshadingreupdated@0.7.5, game@1.19.8, wallpaperblocks@2.0.0, wallpaper@1.0.0, zoombuttonreborn@1.7.0, animalcages@3.0.3, betterfirepit@1.1.4, betterruins@0.3.7, helblockpick@2.3.0, butterflycases@1.0.1, carryon@1.7.4, commonlib@2.5.0-rc.2, displaycasewall@1.0.3, expandedfoods@1.7.1, extrainfo@1.8.0, fendragonbcs@0.0.9, foodshelves@1.3.1, fruitpressmashfix@1.0.0, glowingarrows@1.2.2, gourmand@1.2.1, heatretention@1.0.2, hudclock@3.4.0, morepiles@1.5.0, mushroomz@1.0.2, spearexpantion@0.1.9, petai@2.2.4, prospecttogether@1.4.0-rc.1, simpleconcrete@1.2.1, simpletailoring@1.0.1, stonebakeoven@1.1.3, th3dungeon@0.2.1, usefulstuff17@1.3.2, creative@1.19.8, survival@1.19.8, woodstain@1.1.0, xlib@0.8.6, cats@2.0.3, em@2.7.0, helvehammerext@1.6.0, stonequarry@3.3.1, th3dungeontopentrance@0.1.1, vanity@2.2.0, wolftaming@2.1.3, xskills@0.8.8, bricklayers@2.5.6
These are the mods in common for the two crashes.
aculinaryartillery@1.2.1
animalcages@3.0.3
betterruins@0.3.7
bricklayers@2.5.6
carryon@1.7.4
Ceramos@0.5.1
commonlib@2.5.0-rc.2
creative@1.19.8
em@2.7.0
expandedfoods@1.7.1
foodshelves@1.3.1
game@1.19.8
gourmand@1.2.1
optimizedwindmills@1.0.1
primitivesurvival@3.6.5
stonebakeoven@1.1.3
stonequarry@3.3.1
survival@1.19.8
th3dungeon@0.2.1
volumetricshadingreupdated@0.7.5
wolftaming@2.1.3
xlib@0.8.6
xskills@0.8.8
Hey @bluelightning32,
I’ve tested the new release of Gourmand (v1.2.3), and it successfully resolved the fatal crash related to the circular reference during recipe serialization. The game now loads properly, and I noticed the change where duplicate recipes trigger a warning instead of crashing.
Everything seems to be working fine now with your fix. I didn't remove any major mods, but the game is running smoothly after the update, and I haven't encountered any new critical errors. If and when i do and they are related to gourmand i will let you know!
Thanks a lot for the prompt fix! 10/10 mod that really adds to the gameplay
Could you please copy the warning message into this bug report? The message starts with "Two recipes with the same code name". It should be in one of the server log files.
I want a copy of the warning message to find out which mod is adding the duplicate recipe and how much it will affect Gourmand.
Running on 64 bit Windows 10.0.19045.0 with 24510 MB RAM Game Version: v1.19.8 (Stable) 02/10/2024 06:39:00: Critical error occurred in the following mod: gourmand@1.2.1 Loaded Mods: aculinaryartillery@1.2.1, autosifter@1.1.0, bds@1.0.0, bedrespawner@1.0.0, bettertraders@0.0.7, buzzwords@1.7.0, buzzybees@1.0.3, Ceramos@0.5.1, chiseltools@1.12.8, climabletrapdoors@0.0.1, cloudy3dx@1.1.0, dsd@1.0.0, domesticanimaltrader@1.0.1, driftersbelongunderground@1.0.1, easyjam@1.0.0, jackofalltraits@1.0.0, millwright@1.1.7, moremolds@1.4.2, nocharcoallost@1.0.0, optimizedwindmills@1.0.1, pipeleaf@1.8.0, plumpkins@1.0.3, primitivesurvival@3.6.5, unpfix@1.0.0, qptech@1.15.2, RangedWeapons@0.6.2, sca@1.0.1, simplerails@1.0.0, sortablestorage@2.2.6, spedupseeling@1.2.1, superfuel@2.0.7, translocatorengineeringredux@1.5.1, utvocals@1.0.0, vintageengineering@0.2.8, volumetricshadingreupdated@0.7.5, game@1.19.8, weaversweed@0.4.17, wildcrafttrees@1.2.4, abcsreborn@0.2.2, alchemy@1.6.35, animalcages@3.0.3, egocaribautomapmarkers@3.1.0, betterjonasdevices@1.1.0, betterruins@0.3.7, blocksoverlay@3.2.4, cancrops@0.2.3, carryon@1.7.4, chickenfeed@1.1.3, commonlib@2.5.0-rc.2, composter@1.1.0, danatweaks@3.2.2, electricity@0.0.11, expandedfoods@1.7.1, extrainfo@1.8.1, fancyplanters@1.2.0, foodshelves@1.3.1, fromgoldencombs@1.6.3, gourmand@1.2.1, grassiergrass@1.0.0, GuibibiQOLS@1.0.2, knerdydrifters@1.0.0, lenstweaks@1.0.4, levelup@1.2.8, medievalexpansion@3.13.1, mouse4and5@2.0.0, norottinghides@1.0.0, petai@2.2.6, pigfeed@1.0.4, claywheel@1.1.1, prospecttogether@1.4.0-rc.2, simplestep@1.1.7, solidshields@1.0.1, starvation@1.0.5, steelanvil@1.0.0, stickemup@1.1.0, stonebakeoven@1.1.3, storagecontroller@1.0.11, tarmor@0.2.2, temporalsmithing@0.2.2, th3dungeon@0.2.1, traitacquirer@0.9.3, trapdoorsareladders@1.0.0, tstools@2.1.2, vanillacratecompatibility@1.0.0, vanvar@5.0.4, creative@1.19.8, vsinstruments@1.2.7, vsquest@1.2.0, survival@1.19.8, vsvillage@1.0.6, wildfarmingrevival@1.2.5, woodchests@1.1.0, xlib@0.8.6, cancropsprimitivesurvivalcompat@1.0.3, cheesemealbuff@1.0.0, electricityextensions@0.0.7, em@2.7.0, feverstonewilds@1.5.0-rc.2, sleekdoorglass@1.0.0, glassmaking@1.4.0, patchwars@0.1.3, pickupartist@0.2.0, playercorpse@1.10.1-rc.1, stonequarry@3.3.1, tpnet@1.14.3, undamageablet3@1.0.0, wolftaming@2.1.3, xinvtweaks@1.6.6, xskills@0.8.8, bricklayers@2.5.6, cancropsxskillscompat@1.0.7, moreroads@1.5.7, QPHard@1.15.0, xskillscatchablepatch@1.1.1, bricklayerglassmakingcompat@1.0.2 Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property 'collObj' with type 'Vintagestory.API.Common.Item'. Path 'Ingredients[0].world.ItemsByCode.game:backpack.CollectibleBehaviors[0]'. at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriter writer, Object value, JsonProperty property, JsonContract contract, JsonContainerContract containerContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeDictionary(JsonWriter writer, IDictionary values, JsonDictionaryContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer) at Gourmand.MatchRule.GetRecipeDict(IEnumerable
1 recipes, ILogger logger) at Gourmand.MatchRule.GetRecipeDict(IModLoader loader, ILogger logger) at Gourmand.CategoryDict.LoadStackRules(IWorldAccessor resolver, ILogger logger, IEnumerable
1 stackRules)+MoveNext() at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source) at Gourmand.CategoryDict.FromBytes(IWorldAccessor resolver, Int32 quantity, Byte[] data) at Vintagestory.Client.NoObf.ClientSystemStartup.HandleServerAssets_Step11() in VintagestoryLib\Client\Systems\Startup.cs:line 850 at Vintagestory.Client.NoObf.ClientMain.ExecuteMainThreadTasks(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 776 at Vintagestory.Client.GuiScreenConnectingToServer.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenConnectingToServer.cs:line 313 at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 676 at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 651 at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 88 at OpenTK.Windowing.Desktop.GameWindow.Run() at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 324 at Vintagestory.Client.ClientProgram.<>c__DisplayClass9_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 128 at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93server-debug.txt server-main.txt server-audit.txt server-build.txt server-chat.txt server-event.txt client-audit.txt client-chat.txt client-debug.txt client-main.txt client-crash.txt server-storyevent.txt