Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't click and map not generating properly #138

Closed
Arbarbonif opened this issue Dec 6, 2022 · 8 comments
Closed

Can't click and map not generating properly #138

Arbarbonif opened this issue Dec 6, 2022 · 8 comments

Comments

@Arbarbonif
Copy link

I am on the GoG version of Rimworld and have the problem with just deep storage, harmony and hugslibs installed. I also tried redownloading harmony and hugslib...
log from rimworld start:
https://gist.github.com/80087ea8abe6d38dee60eb3bbc19588c

@lilwhitemouse
Copy link
Owner

......what is the version of rimworld you are running?

Okay, workaround (hopefully): in mod settings, uncheck "check over capacity" Then restart.

How comfortable are you with weird modding tools? Could you use a decompiler (ILSpy, DNSpy, Microsoft's [mumble mumble] tool) to open RimWorld/RimWorld[Windows|Linux]_Data/Managed/Assembly-CSharp.dll, and then look for Verse->ModLister and see if it has "GetActiveModWithIdentifier"? If it does, could you paste the declaration - should look like public static ModMetaData GetActiveModWithIdentifier (string identifier, bool ignorePostfix = false)

@Arbarbonif
Copy link
Author

Arbarbonif commented Jan 14, 2023

From the main page in Rimworld:
Version 1.4.3580 (64 bit)
Compiled Dec 16 2022
This is the latest version
Harmony: Lib v2.2.2.0. Mod v1.5.0.0

I don't get a mod settings page in game, it is blank. What appears to be the settings file is :

<?xml version="1.0" encoding="utf-8"?>
<SettingsBlock>
	<ModSettings Class="LWM.DeepStorage.Settings">
		<robotsCanUse>False</robotsCanUse>
		<useRightClickLogic>False</useRightClickLogic>
	</ModSettings>
</SettingsBlock>

I tried adding a checkOverCapacity, but I'm guessing that wasn't right since it was removed on restart...

From the decompiler:
// Assembly-CSharp, Version=1.4.8385.38825, Culture=neutral, PublicKeyToken=null
// Verse.ModLister
using System.Collections.Generic;

public static ModMetaData GetActiveModWithIdentifier(string identifier, bool ignorePostfix = false)
{
Dictionary<string, List> dictionary = (ignorePostfix ? modsByPackageIdIgnorePostfix : modsByPackageId);
if (!dictionary.ContainsKey(identifier))
{
return null;
}
foreach (ModMetaData item in dictionary[identifier])
{
if (item.Active)
{
return item;
}
}
return null;
}

@lilwhitemouse
Copy link
Owner

I tried adding a checkOverCapacity, but I'm guessing that wasn't right since it was removed on restart...

Cute! check_over_capacity as it happens (set to False)

What error does it throw when you try to open the mod settings? I hope you get an error....

This is very odd, and I'm trying to think of what might be going on...

@lilwhitemouse
Copy link
Owner

Okay, my best guess as what is happening: something has an old .dll lying around and that old .dll is very old. And it's getting referenced before the newer one, so when we look for the newer methods, it's failing because it's finding the old ones.
One thing you could do is try removing a bunch of your mods and restarting the game, looking for "LWM: Deep Storage: harmony transpiler fail: no CompareThingsByDrawAltitude " and "[LWM_DeepStorage][ERR] Failed to apply Harmony patches for LWM.DeepStorage.[...]" Then look in that mod's folders for an old .dll of some sort?

You might also try moving Deep Storage to near the top of the mod list?

Very weird

@Arbarbonif
Copy link
Author

When opening the mod settings with dev mode on I get the following in the log

Message logging is now once again on.
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Message (string)
Verse.Log:ResetMessageCount ()
Verse.Log:Clear ()
Verse.EditWindow_Log:DoWindowContents (UnityEngine.Rect)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)

Exception filling window for RimWorld.Dialog_ModSettings: System.MissingMethodException: void Verse.Listing_Standard.CheckboxLabeled(string,bool&,string)
at LWM.DeepStorage.DeepStorageMod.DoSettingsWindowContents (UnityEngine.Rect inRect) [0x00000] in :0
at RimWorld.Dialog_ModSettings.DoWindowContents (UnityEngine.Rect inRect) [0x00073] in <0aa5ff10b5a84f7da48080504cb32469>:0
at Verse.Window.InnerWindowOnGUI (System.Int32 x) [0x001d3] in <0aa5ff10b5a84f7da48080504cb32469>:0
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Error (string)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)

If I moved Deep Storage immediately below hubslib, same thing. If I move it above hugslib it looks like it doesn't load at all, no config menu at all. I'll try removing everything but deep storage, harmony and hugslib and see if it is any different. Last time I tried that it still didn't work...

@Arbarbonif
Copy link
Author

Still didn't work. log on start:
Command line arguments: -savedatafolder=C:\Users\KGB\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Message (string)
Verse.Root:CheckGlobalInit ()
Verse.Root:Start ()
Verse.Root_Entry:Start ()

RimWorld 1.4.3580 rev1294
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Message (string)
RimWorld.VersionControl:LogVersionNumber ()
Verse.Root:CheckGlobalInit ()
Verse.Root:Start ()
Verse.Root_Entry:Start ()

Save data folder overridden to C:\Users\KGB\AppData\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Message (string)
Verse.GenFilePaths:get_SaveDataFolderPath ()
Verse.GenFilePaths:FolderUnderSaveData (string)
Verse.GenFilePaths:get_ConfigFolderPath ()
Verse.GenFilePaths:get_PrefsFilePath ()
Verse.Prefs:Init ()
Verse.Root:CheckGlobalInit ()
Verse.Root:Start ()
Verse.Root_Entry:Start ()

[HugsLib] version 10.0.1
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Message (string)
HugsLib.Utils.ModLogger:Message (string,object[])
HugsLib.HugsLibController:InitializeController ()
HugsLib.HugsLibController:EarlyInitialize ()
HugsLib.Core.HugsLibMod:.ctor (Verse.ModContentPack)
System.Reflection.MonoCMethod:InternalInvoke (object,object[])
System.Reflection.MonoCMethod:DoInvoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo)
System.Reflection.MonoCMethod:Invoke (System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo)
System.RuntimeType:CreateInstanceImpl (System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo,object[],System.Threading.StackCrawlMark&)
System.Activator:CreateInstance (System.Type,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo,object[])
System.Activator:CreateInstance (System.Type,object[])
Verse.LoadedModManager:CreateModClasses ()
Verse.LoadedModManager:LoadAllActiveMods ()
Verse.PlayDataLoader:DoPlayLoad ()
Verse.PlayDataLoader:LoadAllPlayData (bool)
Verse.Root/<>c:b__6_1 ()
Verse.LongEventHandler:RunEventFromAnotherThread (System.Action)
Verse.LongEventHandler/<>c:b__27_0 ()
System.Threading.ThreadHelper:ThreadStart_Context (object)
System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
System.Threading.ThreadHelper:ThreadStart ()

[UnlimitedHugs.HugsLib] Patches on methods annotated as Obsolete were detected by HugsLib: Verse.Game.DeinitAndRemoveMap
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Warning (string)
HugsLib.Utils.HarmonyUtility:LogObsoleteMethodPatchErrors ()
HugsLib.Utils.HarmonyUtility:LogHarmonyPatchIssueErrors ()
Verse.LongEventHandler:ExecuteToExecuteWhenFinished ()
Verse.LongEventHandler:UpdateCurrentAsynchronousEvent ()
Verse.LongEventHandler:LongEventsUpdate (bool&)
(wrapper dynamic-method) Verse.Root:Verse.Root.Update_Patch1 (Verse.Root)
Verse.Root_Entry:Update ()

LWM: Deep Storage: harmony transpiler fail: no CompareThingsByDrawAltitude
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Error (string)
LWM.DeepStorage.Patch_GenUI_ThingsUnderMouse/d__0:MoveNext ()
System.Collections.Generic.List1<HarmonyLib.CodeInstruction>:.ctor (System.Collections.Generic.IEnumerable1<HarmonyLib.CodeInstruction>)
System.Linq.Enumerable:ToList<HarmonyLib.CodeInstruction> (System.Collections.Generic.IEnumerable1<HarmonyLib.CodeInstruction>) HarmonyLib.CodeTranspiler:GetResult (System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase) HarmonyLib.MethodBodyReader:FinalizeILCodes (HarmonyLib.Emitter,System.Collections.Generic.List1<System.Reflection.MethodInfo>,System.Collections.Generic.List1<System.Reflection.Emit.Label>,bool&) HarmonyLib.MethodCopier:Finalize (HarmonyLib.Emitter,System.Collections.Generic.List1<System.Reflection.Emit.Label>,bool&)
HarmonyLib.MethodPatcher:CreateReplacement (System.Collections.Generic.Dictionary2<int, HarmonyLib.CodeInstruction>&) HarmonyLib.PatchFunctions:UpdateWrapper (System.Reflection.MethodBase,HarmonyLib.PatchInfo) HarmonyLib.PatchClassProcessor:ProcessPatchJob (HarmonyLib.PatchJobs1/Job<System.Reflection.MethodInfo>)
HarmonyLib.PatchClassProcessor:PatchWithAttributes (System.Reflection.MethodBase&)
HarmonyLib.PatchClassProcessor:Patch ()
HarmonyLib.Harmony:b__10_0 (System.Type)
HarmonyLib.CollectionExtensions:Do<System.Type> (System.Collections.Generic.IEnumerable1<System.Type>,System.Action1<System.Type>)
HarmonyLib.Harmony:PatchAll (System.Reflection.Assembly)
HugsLib.ModBase:ApplyHarmonyPatches ()
HugsLib.HugsLibController:EnumerateChildMods (bool)
HugsLib.HugsLibController:LoadReloadInitialize ()
Verse.LongEventHandler:RunEventFromAnotherThread (System.Action)
Verse.LongEventHandler/<>c:b__27_0 ()
System.Threading.ThreadHelper:ThreadStart_Context (object)
System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
System.Threading.ThreadHelper:ThreadStart ()

[LWM_DeepStorage][ERR] Failed to apply Harmony patches for LWM.DeepStorage. Exception was: HarmonyLib.HarmonyException: Patching exception in method static System.Boolean LWM.DeepStorage.Patch_TryFindBestBetterStoreCellFor::Prepare() ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.MissingMethodException: Verse.ModMetaData Verse.ModLister.GetActiveModWithIdentifier(string)
at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in :0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00048] in :0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in :0
at HarmonyLib.PatchClassProcessor.RunMethod[S,T] (T defaultIfNotExisting, T defaultIfFailing, System.Func2[T,TResult] failOnResult, System.Object[] parameters) [0x000e2] in <255414689d344b1385ae719f6cce8c55>:0 --- End of inner exception stack trace --- at HarmonyLib.PatchClassProcessor.ReportException (System.Exception exception, System.Reflection.MethodBase original) [0x00127] in <255414689d344b1385ae719f6cce8c55>:0 at HarmonyLib.PatchClassProcessor.RunMethod[S,T] (T defaultIfNotExisting, T defaultIfFailing, System.Func2[T,TResult] failOnResult, System.Object[] parameters) [0x00121] in <255414689d344b1385ae719f6cce8c55>:0
at HarmonyLib.PatchClassProcessor.Patch () [0x00015] in <255414689d344b1385ae719f6cce8c55>:0
at HarmonyLib.Harmony.b__10_0 (System.Type type) [0x00007] in <255414689d344b1385ae719f6cce8c55>:0
at HarmonyLib.CollectionExtensions.Do[T] (System.Collections.Generic.IEnumerable1[T] sequence, System.Action1[T] action) [0x00014] in <255414689d344b1385ae719f6cce8c55>:0
at HarmonyLib.Harmony.PatchAll (System.Reflection.Assembly assembly) [0x00006] in <255414689d344b1385ae719f6cce8c55>:0
at HugsLib.ModBase.ApplyHarmonyPatches () [0x0009a] in <4a46802aeab646ab99159f7eecb6b57e>:0
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Error (string)
HugsLib.Utils.ModLogger:Error (string,object[])
HugsLib.ModBase:ApplyHarmonyPatches ()
HugsLib.HugsLibController:EnumerateChildMods (bool)
HugsLib.HugsLibController:LoadReloadInitialize ()
Verse.LongEventHandler:RunEventFromAnotherThread (System.Action)
Verse.LongEventHandler/<>c:b__27_0 ()
System.Threading.ThreadHelper:ThreadStart_Context (object)
System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
System.Threading.ThreadHelper:ThreadStart ()

[HugsLib] initializing LWM_DeepStorage
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Message (string)
HugsLib.Utils.ModLogger:Message (string,object[])
HugsLib.HugsLibController:EnumerateChildMods (bool)
HugsLib.HugsLibController:LoadReloadInitialize ()
Verse.LongEventHandler:RunEventFromAnotherThread (System.Action)
Verse.LongEventHandler/<>c:b__27_0 ()
System.Threading.ThreadHelper:ThreadStart_Context (object)
System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
System.Threading.ThreadHelper:ThreadStart ()

[HugsLib][ERR] LWM_DeepStorage caused an exception during OnDefsLoaded: System.MissingMethodException: Verse.ModMetaData Verse.ModLister.GetActiveModWithIdentifier(string)
at LWM.DeepStorage.Settings.DefsLoaded () [0x00096] in :0
at LWM.DeepStorage.LWM_Hug.DefsLoaded () [0x00005] in :0
at HugsLib.HugsLibController.OnDefsLoaded () [0x0001a] in <4a46802aeab646ab99159f7eecb6b57e>:0
UnityEngine.StackTraceUtility:ExtractStackTrace ()
Verse.Log:Error (string)
HugsLib.Utils.ModLogger:ReportException (System.Exception,string,bool,string)
HugsLib.HugsLibController:OnDefsLoaded ()
HugsLib.HugsLibController:LoadReloadInitialize ()
Verse.LongEventHandler:RunEventFromAnotherThread (System.Action)
Verse.LongEventHandler/<>c:b__27_0 ()
System.Threading.ThreadHelper:ThreadStart_Context (object)
System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
System.Threading.ThreadHelper:ThreadStart ()

@Arbarbonif
Copy link
Author

Dust off and nuke the place from orbit; it's the only way to be sure.

Deleting and reinstalling everything, including re-downloading all my mods, and it looks to be working now. No idea what was the problem, but that looks to have fixed it. Rimworld is even starting cleanly with no error messages now, so it might have even fixed other things I never noticed...

@lilwhitemouse
Copy link
Owner

😆 Well, "corrupted game files" is certainly something that could cause all that! I did say "weird!"

Well, glad it's working :D Give a shout if anything else comes up!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants