IsModded
Restore Steam achievement progression with BepInEx on Valheim 1.0-1.0.17. Preserves vanilla cheat and official bypass logic while ignoring Game.isModded.
Screenshots 2 screenshots
About this mod Author’s original text
Valheim 1.0-1.0.16:: isModded & Achievements Architecture
Technical analysis, runtime decoupling, and verification suite for Valheim 1.0.x Steam achievement progression
📌 Overview
Supported game versions: Valheim 1.0.0 through 1.0.16. Latest runtime verification: 1.0.16 on 2026-09-26. The build, Harmony target audit, isolated boot log, package validation, and assembly hashes are recorded in the fleet compatibility evidence.
During the release of Valheim 1.0 (Deep North / Ashlands), an official community update noted:
"We have learned that you cannot earn achievements while playing modded."
Version 1.0.5 runs Iron Gate's complete Achievements.IsCheatedAtAll() implementation while temporarily masking only Game.isModded. This preserves the 1.0.16 item, world, devcommand, cache, and official bypass rules without copying those rules into the mod.
For players and server communities utilizing client-side quality-of-life plugins—such as inventory management, crafting interfaces, camera adjustments, or administrative utilities—this policy introduced an unintended suppression of Steam achievement progression.
This repository provides an open-source technical breakdown and solution:
- Bytecode Root-Cause Analysis: Inspection of the decompiled C# IL showing why Game.isModded causes achievement suppression.
- Interactive Architecture Model: A structured system flow compiled via Archify showing the exact engine evaluation paths.
- Lightweight Runtime Plugin (IsModded.dll): An 11.8 KB Harmony patch that decouples Game.isModded from cheat validation while keeping genuine cheat protections active.
- Embedded Snippet for Mod Authors: A 15-line drop-in Harmony patch that authors can incorporate directly into existing mods without requiring a separate plugin.
- Automated Verification Suite: Standalone CLI executable (Verify-IsModded.exe), PowerShell verification script, and live in-game console command (ismodded) to inspect engine bytecode and validate runtime state.
🗺️ System Architecture
The interaction flow below is compiled directly from the formal specification using Archify:
Interactive Viewer: Open docs/valheim-ismodded.html (Live Web Preview) in any browser for the full interactive model:
- Guided Views: End-to-End Unlock Flow, Vanilla Mod Lockout, IsModded Prefix Decoupling, and Zero-Overhead Verification.
- Navigation: Dynamic pan, zoom, component metadata inspection, and dark/light theme toggle.
- Source & Vector Exports: Specification in docs/valheim-ismodded.architecture.json and standalone vector in assets/architecture-archify.svg.
📥 Installation (For Players)
To restore Steam achievement progression while running BepInEx:
- Download IsModded.dll (11.8 KB) from the repository dist/ directory, GitHub Releases, or.
- Place the file into your Valheim BepInEx plugins folder:
/BepInEx/plugins/IsModded.dll
- Launch the game normally. Steam achievements will record as milestones are achieved.
🔬 Technical Analysis: Root Cause in Valheim 1.0
The suppression of achievements under modded environments is not driven by an anti-cheat engine or file integrity scanning. Instead, it stems from the coupling of a legacy telemetry flag with 1.0 achievement evaluation logic.
- The Game.isModded Telemetry Field
In early versions of Valheim, Iron Gate introduced a static boolean field in Game.cs designed to assist with customer support triage:
// Valheim assembly_valheim.dll:: Game.cs
public static bool isModded = false;
// Note in codebase:
// "While we don't officially support mods in Valheim at this time,
// we ask that you please set the following isModded value to true in your mod.
// This will place a small text in the menu to inform the player that their
// game is modded and help us solving support issues. Thank you for your help!"
- Automatic Flagging by BepInEx
To cooperate with developer support guidelines, the BepInEx loader implemented an automated reflection helper (Chainloader.SetIsModdedTrue()) that s
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- 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.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- 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.
Install these first, or the mod will not work: