Repository navigation
Fixes:
- Startup crash in IL2CPP games (
coreclr.dll, right afterLoading Mods, mostly on the first start of the day).
TheAssembly.Locationpatch was installed before MelonLoader loaded the mods, and .NET's tiered compiler crashed while
recompiling the many callers ofLocationduring loading. It is now installed once the mods are loaded. A mod that
reads its ownLocationinOnEarlyInitializeMelonsees the shadow copy's path. New settingPatchAssemblyLocation. - Several DLLs changing at once (a solution build, a tool switching mods) loaded in the same frame, freezing the game
for seconds, in no particular order. They now load in MelonLoader's startup order (dependencies,[MelonPriority],
name), one per frame, removed DLLs first. - The reload key did nothing while another mod blocked
UnityEngine.Input(for example while its window was open).
HotReload now reads the key around such patches. - A mod unloaded (DLL removed) and loaded again counted as a new mod and lost its handed-over state. It now counts as a
reload:LoadingLate = "reload", state handed over. - Unity error lines named only the latest reload; they now also name the other reloads and unloads of the last 30 s.
New:
- Textures, materials, meshes, sprites and ScriptableObjects the old build created are destroyed (
DestroyOldAssets),
and optionally its GameObjects (DestroyOldGameObjects, off by default). - MonoMod hooks (
Hook,Detour,ILHook) are disposed even when the mod did not keep them in a field. - A mod with
OnApplicationQuitbut noOnDeinitializeMelongets itsOnApplicationQuitcalled before a reload
(CallQuitOnUnload), so mods that save only on quit lose nothing. - Force-reload key (
ForceReloadKey,LeftShift+F8): reloads the mods of the last reload with the same bytes. - A DLL renamed into place loads after 100 ms instead of waiting for
DebounceMs. ReplayActiveSceneOnly: replay scene callbacks for the active scene only.HotReload.UnloadingAppDomain flag ("reload"/"unload", unset at game quit) forOnDeinitializeMelon.HotReload.Api: load, reload, unload and batch DLLs on demand, and events for reloads, unloads and finished batches.- HotReloadCheck: new findings for quit-only cleanup, patches on
UnityEngine.Input, created assets and GameObjects,
Assembly.Location, UI Toolkit and global Unity state; reworded timers finding.
Verifying this release
HotReload 1.2.0, commit 9d17ffa, .NET SDK 10.0.401. The DLLs are reproducible: a Release build of this tag with the same .NET SDK gives the same files (how). SHA256 of the files inside the zips:
227643f347c81af4c5c347b0f190d8f2f9cebfd53987b245e112f8b22fe5f456 MelonLoader-HotReload.zip/Plugins/HotReload.dll
931689d44c25371faf905f1f37a31268378b0eb008c682f760841465589e922f MelonLoader-HotReload.zip/Plugins/HotReload.pdb
b6bf7cfa7af009ce2c383f84750d7d22d7a0b201651d98ea72bd569473a7e09d MelonLoader-HotReload.zip/README.md
da46f5e6d9363c21c0bbb8ecb04c8122b92cebdf6c308f1913077402a00093e3 HotReloadCheck.zip/HotReloadCheck.deps.json
bfd143dbd47d4cee03b539ac3532c83cf31d0c7325fa1825e9319a597b082998 HotReloadCheck.zip/HotReloadCheck.dll
e102dd0ba51b114d88788e11aa1401bd02546d377f72e3f3146d19e9f6cc2198 HotReloadCheck.zip/HotReloadCheck.pdb
95505548c838f72a6a829fd5332dbc674c715ce26a216e9eb32bec8b5821eae2 HotReloadCheck.zip/HotReloadCheck.runtimeconfig.json
52ce968860c6d86a343e12b3fdf004820a423c3df89bba8ceb17bff27a4441d9 HotReloadCheck.zip/LICENSE