
支持的遊戲版本:Valheim 1.0.0 至 1.0.16。最新執行階段驗證:1.0.16,於 2026-09-26。 构建、Harmony目标审计、隔离启动日志、包验证和程序集哈希均记录在 舰队兼容性证明.
在《英灵神殿》1.0版本(深层北境/灰烬之地)发布期间,官方社区更新提到:
我们了解到,在游玩模组时无法获得成就。
1.0.5版本运行铁门的完整 成就是否作弊过() 仅在临时屏蔽时实施 已安装模组。这样可以在不将这些规则复制到模组中的情况下,保留1.0.16的物品、世界、开发者命令、缓存和官方绕过规则。
对于使用客户端便利性插件(如物品栏管理、制作界面、视角调整或管理工具)的玩家和服务器社区而言,该政策意外导致了Steam成就进度的抑制。
该仓库提供了开源的技术解析与解决方案:
游戏是否已安装模组 导致成就无法解锁。IsModded.dll): 一个11.8 KB的Harmony补丁,用于解耦 是否有模组 在保持真正的作弊防护措施有效的同时,脱离作弊验证。验证是否已安装模组.exe)、PowerShell 验证脚本,以及游戏内实时控制台命令(已修改) 检查引擎字节码并验证运行时状态。下面的交互流程直接根据正式规范编译而成,使用 档案化:

交互式查看器:开启
docs/valheim-ismodded.html(实时网页预览在任意浏览器中打开以查看完整交互模型:
- 引导视图: 端到端解锁流程, 原版模组锁定, 模组前缀解耦,和 零开销验证.
- 导航: 动态平移、缩放、组件元数据检查,以及深色/浅色主题切换。
- 源文件与矢量图导出:规格说明:
docs/valheim-ismodded.architecture.json以及独立向量资源/建筑-美化.svg.
在运行BepInEx时恢复Steam成就进度:
Modded.dll (11.8 KB)来自仓库 dist/ 目录、GitHub Releases 或 Thunderstore。<Valheim-Directory>/BepInEx/plugins/IsModded.dll
在模组环境下成就被抑制,并非由反作弊引擎或文件完整性扫描所驱动,而是源于一个遗留的遥测标志与1.0成就判定逻辑的耦合。
是否已安装模组 遥测字段在《英灵神殿》的早期版本中,Iron Gate引入了一个静态布尔字段,位于 游戏.cs 旨在协助客户支持分流:
// Valheim assembly_valheim.dll :: Game.cs public static bool isModded = false; // 代码库中的注释: // “虽然我们目前并不正式支持 Valheim 的模组, // 但我们请求您在自己的模组中将以下 isModded 值设为 true。 // 这将在菜单中显示一小段文字,告知玩家其游戏已安装模组, // 并帮助我们解决支持问题。感谢您的协助!”
为配合开发者支持指南,BepInEx加载器实现了一个自动反射辅助工具(将模组加载状态设为已修改设置 Game.isModded = true 每当 BepInEx 初始化时。
随着《英灵神殿》1.0版本引入Steam成就系统,一种内部方法 成就是否作弊过? 被添加用于评估会话资格。除了测试控制台作弊标志、世界修改器和生成物品外,回退条件还会评估 游戏是否已安装模组:
// Valheim 1.0 assembly_valheim.dll :: Achievements.cs public static bool IsCheatedAtAll() { if (Time.frameCount == Achievements.m_cheatCheckFrame) return Achievements.m_cheatCheckCache; Achievements.m_cheatCheckFrame = Time.frameCount; // 检查玩家是否使用了控制台开发者指令 bool profileCheated = (Game.instance != null) && Game.instance.GetPlayerProfile().m_usedCheats; // 检查服务器世界是否有作弊修正(被动敌人等) bool worldCheated = Achievements.IsWorldCheated(); // 检查玩家背包中是否生成了物品 bool itemCheated = (Player.m_localPlayer != null) && Player.m_localPlayer.GetInventory().AnyCheatedItem(); if (profileCheated || worldCheated || itemCheated) { Achievements.m_cheatCheckCache = true; } else { // 直接将 Game.isModded 作为作弊条件进行评估: Achievements.m_cheatCheckCache = Game.isModded; } return Achievements.m_cheatCheckCache; }
每当达成进度里程碑时(例如击败首领、制作、采集), 玩家档案.增加统计数据() 评估资格门槛:
如果(!成就.可以获取成就(假))返回;
因为 是否安装模组 是 真, 是否作弊过() 返回 真,造成 无法获取成就() 返回 假属性增量被静默丢弃,阻止了对 Steamworks.SteamUserStats.设置成就().
模组 在以下对象上安装轻量级 Harmony 前缀、后缀和终结器: 成就.是否作弊过()。该前缀仅屏蔽加载器遥测标志,原始游戏方法仍会评估每个原版规则,而后缀/终结器即使方法抛出异常也会恢复该标志:
[HarmonyPatch(typeof(Achievements), nameof(Achievements.IsCheatedAtAll))] static class Achievements_IsCheatedAtAll_Patch { private struct State { internal bool Applied; internal bool Original; } [HarmonyPrefix] static void Prefix(out State __state) { __state = new State { Applied = true, Original = Game.isModded }; Game.isModded = false; } [HarmonyPostfix] static void Postfix(State __state) => Game.isModded = __state.Original; }
对于加载了便利性模组的正常玩家, 是否作弊() 计算结果为 假,允许 无法获取成就() 返回 真 并启用标准Steam成就触发功能。
提供三种独立验证方式,用于审查并确认成就获取资格:
验证-是否为模组版.exe)一个零依赖的命令行工具,基于 Mono.Cecil。奔跑 dist/Verify-IsModded.exe 或 工具/Verify-IsModded.ps1:
它实时反编译本地游戏程序集,检测针对 是否已安装模组,并提供了一个执行矩阵:
================================================================================ Valheim 1.0 :: isModded 与成就完整性验证器 ================================================================================ [+] Valheim 目录 : C:\Program Files (x86)\Steam\steamapps\common\Valheim [+] Valheim 版本 : 1.0.15 (最新验证构建) --- [步骤 1: 检查 VALHEIM 1.0.15 字节码] -------------------------------- [通过] 找到方法: Achievements.IsCheatedAtAll() 正在扫描指令流以查找 Game.isModded 访问... -> IL_005B: ldsfld Game::isModded [已确认] Valheim 1.0.15 在评估作弊时直接检查 Game.isModded! 如果 Game.isModded 为 True,引擎将会话评估为已作弊,这会强制 CanGetAchievements() 返回 FALSE。 --- [步骤 2: 检查 BEPINEX 链式加载器] ---------------------------------- [通过] 找到 BepInEx 方法: Chainloader.SetIsModdedTrue() -> BepInEx 在启动时自动将 Game.isModded 设置为 True。 --- [步骤 3: 检查 ISMODDED 插件状态] -------------------------------- [通过] 检测到成就绕过插件: IsModded.dll 位置: C:\Program Files (x86)\Steam\steamapps\common\Valheim\BepInEx\plugins\IsModded.dll [通过] 已验证针对 Achievements.IsCheatedAtAll 的 Harmony 前缀钩子 --- [步骤 4: 日志文件检查] --------------------------------------------- [通过] 在 LogOutput.log 中找到: [Info : BepInEx] Loading [IsModded 1.0.4] ================================================================================ 最终判定 ================================================================================ 模拟游戏内成就评估(使用模组的合法玩家): 条件 | 无 IsModded | 有 IsModded -----------------------------+---------------------------+----------------------- BepInEx 运行中 | 是 (Game.isModded=True) | 是 (Game.isModded=True) 角色 Devcommands | 否 | 否 世界作弊修改器 | 否 | 否 物品栏作弊物品 | 否 | 否 -----------------------------+---------------------------+----------------------- Achievements.IsCheatedAtAll | TRUE(将模组视为作弊) | FALSE(忽略 isModded!) Achievements.CanGet | FALSE [已阻止] | TRUE [已恢复!] Steamworks.Unlock() | 从未调用 | 在进度达成时调用 -----------------------------+---------------------------+----------------------- >>> 状态: 就绪!您的配置已设置为可在使用模组的情况下获得 Steam 成就。
已安装模组)是否已安装模组
是否安装模组.E)。希望将此解耦逻辑直接捆绑到现有插件中的模组开发者,应使用相同的限定作用域掩码模式。参见 src/Patches/AchievementsPatch.cs; 生产版本包含配置处理和 Harmony 终结器,因此 已安装模组 如果原版评估抛出异常,则恢复。
使用HarmonyLib;[HarmonyPatch(typeof(Achievements), nameof(Achievements.IsCheatedAtAll))] public static class DecoupleModdedAchievementsPatch { public struct State { public bool Applied; public bool Original; } [HarmonyPrefix] public static void Prefix(out State __state) { __state = new State { Applied = true, Original = Game.isModded }; Game.isModded = false; } [HarmonyPostfix] public static void Postfix(State __state) => Game.isModded = __state.Original; [HarmonyFinalizer] public static Exception Finalizer(Exception error, State __state) { Game.isModded = __state.Original; return error; } }
配置通过以下方式管理 Valheim/BepInEx/config/djc.valheim.ismodded.cfg:
[General] ## 启用在使用 BepInEx / 加载模组游玩时获得成就。 # 设置类型:Boolean # 默认值:true AllowWhileModded = true ## 可选:即使在此角色或世界上使用过 devcommands / 作弊,也启用在获得成就。 # 设置类型:Boolean # 默认值:false AllowWithDevcommands = false [Visual] ## 可选:隐藏主菜单上的“Modded”水印。 # 设置类型:Boolean # 默认值:false HideModdedWatermark = false
不。 《英灵神殿》未使用 Valve 反作弊系统。成就同步通过标准的客户端 Steamworks API 处理(SteamUserStats.设置成就)。
不。 默认情况下(允许使用开发者命令 = false)、使用开发者控制台作弊的角色或世界(开发命令, 神, 生成) 根据原版规则仍无法获得成就。此补丁仅将 游戏已安装模组 旗帜。
是。 成就由客户端评估,并直接从本地客户端同步至 Steamworks。
本项目遵循以下许可协议发布: MIT 许可证允许的用途包括再分发、修改以及直接嵌入第三方插件。

修改前置工具
2026-09-12 14:33:53
修改前置工具

史诗战利品
randyknapp2026-09-09 21:20:10
为英灵神殿添加战利品掉落、魔法物品和附魔。

制作 建造 熔炼 烹饪 燃料 从容器中取出
aedenthorn2025-06-30 08:34:14
让你在制作、建造、使用熔炉和窑炉、添加燃料、烹饪食物等时,可以使用附近容器中的资源。

种植一切
Advize2025-09-09 11:15:37
重写了bkeyes93的种植增强模组。允许你的种植者种植浆果丛、蓟、蒲公英、蘑菇、此前无法获取的树种以及其他装饰性植物。还包括许多其他杂项功能(详见

无限制传送门
frostedplaything4102023-09-02 17:39:40
无限制传送门是一个客户端模组,允许玩家通过传送门传送任何物品。该模组提供广泛的自定义选项,让玩家能够控制物品限制、移除限制,

农场格子
Sarcenzzz2023-06-14 11:38:34
允许所有通过种植器种下的植物自动对齐并放置在网格中,确保它们有足够的生长空间。

更好的UI
MKMasa2021-04-15 09:19:42
这个模组对游戏界面做了一些细微的调整。你可以编辑并选择想要启用的更新内容。

更好的射箭
Ishid42026-09-10 16:16:51
为弓术玩法添加了许多功能和改动,包括全新的箭袋系统、可回收的箭矢、更精准的瞄准以及逼真的箭矢物理效果。