Valheim10Compatibility
Lets pre-1.0 mods load and run on Valheim 1.0 without recompiling: sector API, console commands, renamed hooks, PieceTable lists, by-name Harmony patches steered past 1.0's overloads, a Hoverable defa
模組介紹 作者原文
⚒️ Valheim 1.0 Compatibility (MigrationStation)
The Tenth World turned over, and half the realm's mods forgot how to speak to it. These bridges teach them the new tongue.
Valheim10Compatibility is a BepInEx preloader patcher for Valheim 1.0.x+ (Deep North; built against 1.0.7, verified unchanged through the 1.0.12 hotfix — see CHANGELOG.md). It rewrites the game's assemblies in memory, before a single line of game code runs, and restores the method shapes that 1.0 took away — so plugins compiled against 0.221.12 and earlier load and run without being recompiled. It also hooks Harmony's own lookups, so a plugin that patches a method by name survives both the bridges and the overloads vanilla added in 1.0, and gives one interface method a default body, so a plugin class that never implemented it still passes the runtime's own VTable check. Its companion runtime plugin keeps a mod's item-name collision with new 1.0 content from aborting startup on client and server alike.
This is not a gameplay mod. It changes nothing you can see. It exists for one week of the year: the week a major Valheim release lands and the mod list you depend on has not caught up yet. 🛡️
⚠️ Read This First
Install it when your admin tools and utility mods break on 1.0 and their authors have not shipped 1.0 builds yet. Remove it when they have. A source fix in the mod itself is always better than a bridge — it survives the next update, and it does not depend on a preloader being present and correctly ordered.
Three things it will never do:
- 🚫 It will not guess. If a bridge cannot carry the old meaning across, it is not injected. An unresolved reference kills one method when it is first called. A wrong answer corrupts a world quietly, at three in the morning, and nobody knows why.
- 🚫 It will not trade a call site for a plugin. See The One Law below — this is the rule that shapes the whole tool.
- 🚫 It will not lie about what it did. Every bridge reports exactly one outcome in the log: Injected, present natively, SKIPPED or BLOCKED. A run against a build it does not fully match is loud, not quietly thin.
🪓 The Ritual of Installation
- Install BepInExPack Valheim 5.4.2350 or newer — 1.0 runs on Unity 6, and older packs die when Unity's log callbacks are stripped.
- Install this package with your mod manager, or unzip it over your profile by hand.
- Start the game or dedicated server and read BepInEx/LogOutput.log.
The zip carries patchers/Valheim10Compatibility.Patcher.dll and plugins/Valheim10Compatibility.Adapter.dll at its root; your manager maps each top-level folder onto the profile's BepInEx/ folder of the same name. The two DLLs land in different folders, and neither works from the other's:
| File | Goes to | Why |
|:--|:--|:--|
| Valheim10Compatibility.Patcher.dll | BepInEx/patchers/ | BepInEx runs preloader patchers only from patchers, before the game assemblies load. Dropped in plugins/ it never executes, and nothing will tell you so. |
| Valheim10Compatibility.Adapter.dll | BepInEx/plugins/ | An ordinary chainloaded plugin. Dropped in patchers/ it is never loaded. |
Unpacking by hand? Copy the.dll out of patchers/ into BepInEx/patchers/ and the one out of plugins/ into BepInEx/plugins. Do not flatten them together. 📦
Server and clients: install it on whichever side runs the broken mod. It touches no network protocol and changes no save format, so a patched server and an unpatched client talk to each other exactly as they did before.
⚖️ The One Law
A bridge is only worth injecting if it leaves the plugin better off.
Here is the trap that makes this tool different from every naive "just add the old overload back" patcher.
When a plugin writes [HarmonyPatch(typeof(Inventory), "Changed")] with no argument types, Harmony resolves that target by name alone. Add a second method with that name — exactly what a compatibility bridge does — and the lookup becomes ambiguous. HarmonyX throws out of PatchAll(), and the entire plugin dies at lo
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。
下面這些內容需要先安裝,否則該模組不會生效: