UMMBridge
설명
This is a MelonLoader plugin for running UnityModManager UMM) mods under MelonLoader.
Changelog
- Cross-runtime type compatibility — IL-rewrite Creplay to change
sortedKeyQueue_instancefield type and allisinst PriorityQueuetoobject, bypassing CLR type identity checks; addNeedsMethodRedirectinProxyPatchto redirect generic method patches to the game's actual instance - Assembly loading strategy — Switch to
LoadFromvia temp file to preserve load context, preventing generic type splitting; interceptAssembly-CSharpinAssemblyResolveto reuse already-loaded instances, avoiding duplicate loads - Conflict migration — When a transpiler patch arrives at a method already claimed by ProxyPatch, non-transpiler patches on HarmonyX are automatically migrated to 0Harmony_UMM, allowing a single runtime to host all patches
- Three-layer resolution — UpdateWrapper IL injection (CreateClassProcessor path), Harmony.Patch() prefix (direct Patch path), ProxyPatch routing (Cecil rewrite) — no gap
- InvokeNativePatch extracted — Unified native entry point, fixing silent drop of non-transpiler patches due to load order
- MigratePatches exception safety — Caught in TryResolveConflict, routing fallback on failure, no crash
- Creplay message display — Patch
TriggerMessageto show on-screen in top-left corner using unscaled time (unaffected by pause) - Assembly.Read guard — Skip non-.NET assemblies with warning instead of BadImageFormatException
- Known limitation — Cross-runtime transpiler patches on the same method cannot coexist (CodeInstruction types belong to different assemblies)
- Compatible with JALib
Usage (You have to install UMM first, then install MelonLoader)
- Drop the compiled DLL into ADOFAI's
Plugins/directory - Place UMM mods into
UMMMods/(created automatically on first launch)
