UnknownDevices / BetterGameUI

TModLoader mod
MIT License
2 stars 1 forks source link

Potential incompatibility with Unnerfs Calamity #1

Open Shadowex3 opened 9 months ago

Shadowex3 commented 9 months ago

After enabling this mod I had an error during loading:

System.InvalidCastException: Unable to cast object of type 'System.Reflection.RtFieldInfo' to type 'Mono.Cecil.FieldReference'.
   at MonoMod.Cil.ILPatternMatchingExt.MatchLdfld(Instruction instr, FieldReference& value) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.Utils\MonoMod.SourceGen.Internal\MonoMod.SourceGen.Internal.Cil.ILOverloadGenerator\Matcher.MonoMod.Cil.ILPatternMatchingExt.g.cs:line 1494
   at CalamityFly.UnNerfs.Magiluminescence.<>c.<UnNerfMagiluminescence>b__3_0(Instruction i) in CalamityFly\UnNerfs\Magiluminescence.cs:line 25
   at MonoMod.Cil.ILCursor.TryGotoNext(MoveType moveType, Func`2[] predicates) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.Utils\Cil\ILCursor.cs:line 290
   at CalamityFly.UnNerfs.Magiluminescence.UnNerfMagiluminescence(ILContext il) in CalamityFly\UnNerfs\Magiluminescence.cs:line 25
   at MonoMod.Cil.ILContext.Invoke(Manipulator manip) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.Utils\Cil\ILContext.cs:line 86
   at MonoMod.RuntimeDetour.DetourManager.ManagedDetourState.InvokeManipulator(ILHookEntry entry, MethodDefinition def) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\DetourManager.Managed.cs:line 450
   at MonoMod.RuntimeDetour.DetourManager.ManagedDetourState.UpdateEndOfChain() in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\DetourManager.Managed.cs:line 439
   at MonoMod.RuntimeDetour.DetourManager.ManagedDetourState.AddILHook(SingleILHookState ilhook, Boolean takeLock) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\DetourManager.Managed.cs:line 361
   at MonoMod.RuntimeDetour.ILHook.Apply() in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\ILHook.cs:line 218
   at MonoMod.RuntimeDetour.ILHook..ctor(MethodBase method, Manipulator manipulator, IDetourFactory factory, DetourConfig config, Boolean applyByDefault) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\ILHook.cs:line 183
   at MonoMod.RuntimeDetour.HookGen.HookEndpointManager.Modify(MethodBase method, Delegate callback) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\HookGen\HookEndpointManager.cs:line 81
   at Terraria.IL_Player.add_Update(Manipulator )
   at CalamityFly.CalamityFly.PostSetupContent() in CalamityFly\CalamityUnNerfs.cs:line 21
   at Terraria.ModLoader.ModContent.<>c.<Load>b__43_2(Mod mod) in tModLoader\Terraria\ModLoader\ModContent.cs:line 314
   at Terraria.ModLoader.ModContent.LoadModContent(CancellationToken token, Action`1 loadAction) in tModLoader\Terraria\ModLoader\ModContent.cs:line 377
   at Terraria.ModLoader.ModContent.Load(CancellationToken token) in tModLoader\Terraria\ModLoader\ModContent.cs:line 313
   at Terraria.ModLoader.ModLoader.Load(CancellationToken token) in tModLoader\Terraria\ModLoader\ModLoader.cs:line 126
   at Terraria.ModLoader.ModLoader.<>c__DisplayClass46_0.<BeginLoad>b__0() in tModLoader\Terraria\ModLoader\ModLoader.cs:line 106
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()

[05:53:55.490] [.NET ThreadPool Worker/ERROR] [tML]: An error occurred while loading CalamityFly v0.8.3
It has been detected that this mod was built for tModLoader v2023.6.25.31
However, you are using tModLoader v2023.8.3.3
The mod(s) have been automatically disabled.
System.InvalidCastException: Unable to cast object of type 'System.Reflection.RtFieldInfo' to type 'Mono.Cecil.FieldReference'.
   at MonoMod.Cil.ILPatternMatchingExt.MatchLdfld(Instruction instr, FieldReference& value) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.Utils\MonoMod.SourceGen.Internal\MonoMod.SourceGen.Internal.Cil.ILOverloadGenerator\Matcher.MonoMod.Cil.ILPatternMatchingExt.g.cs:line 1494
   at CalamityFly.UnNerfs.Magiluminescence.<>c.<UnNerfMagiluminescence>b__3_0(Instruction i) in CalamityFly\UnNerfs\Magiluminescence.cs:line 25
   at MonoMod.Cil.ILCursor.TryGotoNext(MoveType moveType, Func`2[] predicates) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.Utils\Cil\ILCursor.cs:line 290
   at CalamityFly.UnNerfs.Magiluminescence.UnNerfMagiluminescence(ILContext il) in CalamityFly\UnNerfs\Magiluminescence.cs:line 25
   at MonoMod.Cil.ILContext.Invoke(Manipulator manip) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.Utils\Cil\ILContext.cs:line 86
   at MonoMod.RuntimeDetour.DetourManager.ManagedDetourState.InvokeManipulator(ILHookEntry entry, MethodDefinition def) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\DetourManager.Managed.cs:line 460
   at MonoMod.RuntimeDetour.DetourManager.ManagedDetourState.UpdateEndOfChain() in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\DetourManager.Managed.cs:line 439
   at MonoMod.RuntimeDetour.DetourManager.ManagedDetourState.AddILHook(SingleILHookState ilhook, Boolean takeLock) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\DetourManager.Managed.cs:line 370
   at MonoMod.RuntimeDetour.ILHook.Apply() in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\ILHook.cs:line 223
   at MonoMod.RuntimeDetour.ILHook..ctor(MethodBase method, Manipulator manipulator, IDetourFactory factory, DetourConfig config, Boolean applyByDefault) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\ILHook.cs:line 177
   at MonoMod.RuntimeDetour.HookGen.HookEndpointManager.Modify(MethodBase method, Delegate callback) in Z:\Users\aaron\Source\Repos\MonoModReorg\MonoMod\src\MonoMod.RuntimeDetour\HookGen\HookEndpointManager.cs:line 82
   at Terraria.IL_Player.add_Update(Manipulator )
   at CalamityFly.CalamityFly.PostSetupContent() in CalamityFly\CalamityUnNerfs.cs:line 21
   at Terraria.ModLoader.ModContent.<>c.<Load>b__43_2(Mod mod) in tModLoader\Terraria\ModLoader\ModContent.cs:line 316
   at Terraria.ModLoader.ModContent.LoadModContent(CancellationToken token, Action`1 loadAction) in tModLoader\Terraria\ModLoader\ModContent.cs:line 377
   at Terraria.ModLoader.ModContent.Load(CancellationToken token) in tModLoader\Terraria\ModLoader\ModContent.cs:line 313
   at Terraria.ModLoader.ModLoader.Load(CancellationToken token) in tModLoader\Terraria\ModLoader\ModLoader.cs:line 126
Tyfyter commented 7 months ago

This is most likely caused by lines like this which set the operands of instructions to values of unexpected types, and likely affects any mod which has an IL edit loaded after this one's edits and which looks for a read or write to a field, not just Unnerfs Calamity.