Deep North Compat

v1.0.0·Updated 2026-09-18

Restores two Valheim 1.0 method overloads so mods built for the older game keep working. Needed by some older mods.

About this mod Author’s original text

Deep_North_Compat

A tiny BepInEx patcher for Valheim 1.0 (Deep North). It re-adds two game methods whose signatures 1.0 changed by

adding optional trailing parameters, so mods built for the older game keep working without modifying their files:

| Restored (old) overload | Forwards to (1.0) |

| --- | --- |

| Character.Message(type, msg, amount, icon) | Message(type, msg, amount, icon, log = false) |

| SEMan.AddStatusEffect(hash, resetTime, itemLevel, skillLevel) | same + variant = 0 |

Needed by older mods such as Smoothbrain's Mining, Ranching and ComfortTweaks. Once those authors update, this package

is no longer needed. It does nothing if the game already has the old overload, and a failure in it never stops the game

from starting.

Caveat: adding an overload makes lookups of that method by name only ambiguous, so this shims just these two.

Mods that patch these methods without argument types could be affected.

AI disclosure: this patcher was written with AI assistance (Claude, by Anthropic) and then tested on a live Valheim 1.0 dedicated server.

MIT licensed. Source (the whole patcher):

MistookenCompat.cs

// BepInEx preloader patcher: restores API overloads that Valheim 1.0 (Deep North) removed by ADDING trailing

// parameters, so mods built for the older game keep working without modifying their DLLs. Own code; does not

// redistribute any mod. Each restored overload forwards to the new method, filling the new trailing parameters

// with their declared defaults (or default(T)). Only the whitelisted methods below are touched.

// CAUTION: every added overload makes name-only reflection/Harmony lookups of that method ambiguous.

using System;

using System.Collections.Generic;

using System.Linq;

using Mono.Cecil;

using Mono.Cecil.Cil;

public static class MistookenCompatPatcher

{

// Type, method, old parameter types (full names) that mods still call.

static readonly string Shims = new string

{

new string { "Character", "Message", "MessageHud/MessageType", "System.String", "System.Int32", "UnityEngine.Sprite" },

new string { "SEMan", "AddStatusEffect", "System.Int32", "System.Boolean", "System.Int32", "System.Single" },

// Not shimmed on purpose: Piece.SetCreator, EffectList.Create, PlayerProfile.IncrementStat. Up-to-date mods

// (e.g. PlantEverything) patch those BY NAME; a second overload makes Harmony's lookup ambiguous and breaks them.

};

public static IEnumerable TargetDLLs

{

get { yield return "assembly_valheim.dll"; }

}

public static void Patch(AssemblyDefinition assembly)

{

foreach (string s in Shims)

{

try { AddForwardingOverload(assembly.MainModule, s[0], s[1], s.Skip(2).ToArray()); }

catch (Exception) { / a failed shim must never stop the game from starting / }

}

}

static bool ParamsMatch(MethodDefinition m, string oldTypes, int count)

{

if (m.Parameters.Count!= count) return false;

for (int i = 0; i m.Name == methodName && ParamsMatch(m, oldTypes, oldTypes.Length))) return; // already there

MethodDefinition target = type.Methods.FirstOrDefault(m =>

m.Name == methodName && m.Parameters.Count > oldTypes.Length && ParamsMatch(m, oldTypes, m.Parameters.Count));

if (target == null) return;

MethodAttributes attrs = MethodAttributes.Public | MethodAttributes.HideBySig;

if (target.IsStatic) attrs |= MethodAttributes.Static;

MethodDefinition shim = new MethodDefinition(methodName, attrs, target.ReturnType);

shim.HasThis =!target.IsStatic;

for (int i = 0; i

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_Valheim

File & checksum

Filename
Deep_North_Compat-1.0.0.zip
File size
8.1 KiB
SHA-256
bfa38862f30c07bd797ef395df728e0d795cfc93aef340e1338a38aa9f5f839f
Stored at
2026-10-09 23:55