用于追踪导致Valheim 1.0世界转换崩溃的遗留物品栏数据的诊断BepInEx插件。
这是在之前一个运行良好的原版世界在更新至《英灵神殿》1.0后无法加载时创建的,错误信息如下:
System.NullReferenceException:未将对象引用设置到对象的实例,位于 ItemDrop+ItemData.IsSameType,位于 Inventory.AddItem,位于 Inventory.AddTempItem,位于 Inventory.LoadOld,位于 ZDOMan.ConvertInventories。世界在加载文件中途失败。未保存即退出。请检查备份!
同一个世界在之前的英灵神殿版本上都能正常加载,包括大约一年前的备份。
问题出在一个格式错误的旧版容器库存上。
ValheimWorldConvertDiag 修补旧版世界物品栏转换流程,并在转换失败时记录正在处理的物品栏和 ZDO。
它记录了以下详细信息:
物品数据.是否为同类型() 状态共享 空状态最有用的部分是ZDO位置。
无需手动打开数百个箱子,你可以使用记录的坐标来找到导致转换失败的确切世界对象。
该插件仅用于诊断。
它不会:
始终从备份开始操作。
用于开发此插件的世界包含超过140万个ZDO,且从未安装过任何模组。
瓦尔海姆1.0在转换此旧版物品栏时失败:
物品栏大小:4x4 失败前已装载物品:6
最近包含的物品:
木材 x50 位置 1,0 石头 x7 位置 3,0 石头 x50 位置 0,1 焦骨 x50 位置 2,1 焦骨 x50 位置 4,1 焦骨 x14 位置 1,1 木材 x38 位置 4,1
可疑之处在于,一个4格宽的物品栏中竟包含以下位置的物品:
位置=4,1
而且多个物品似乎在同一个位置重叠了。
崩溃发生在以下位置:
掉落物品+物品数据.类型相同
两者皆然 物品数据 已获得物品:
空
插件将源ZDO识别为:
UID:1:183157 位置:(-866.75, 31.46, -8632.98) 预制体哈希:328745978
那个地点原来是灰烬之地一处老旧登陆营地里的一个不起眼的宝箱。
世界是使用之前的英灵神殿版本加载的,有问题的宝箱已被摧毁,掉落的物品已被移除,世界已再次保存。
在那之后,Valheim 1.0 成功转换了世界。
不要试图在《英灵神殿》1.0中直接修复世界。
最安全的流程是:
这样可以避免直接编辑存档文件。
《英灵神殿》通过 Steam 保留了一个较旧的稳定分支。
对于普通游戏客户端:
默认_旧
完成后:
分支名称可能会随时间变化,因此如果 默认_旧 已不再存在,请使用 Iron Gate 为上一个稳定版本提供的任意 Steam 测试分支。
对于专用服务器,具体流程取决于服务器的安装方式。
如果使用SteamCMD,请在加载世界之前先通过上一个稳定分支安装或更新服务器。
示例模式:
app_update 896660 -beta default_old validate
在没有备份服务器文件和世界之前,请不要盲目地将其运行在生产服务器上。
如果使用Docker,请检查你的镜像如何暴露Steam测试分支。许多英灵神殿Docker镜像允许设置Steam分支或测试版环境变量。
重要的是,世界必须使用在失败的1.0转换代码之前的英灵神殿版本加载。
一旦《英灵神殿》1.0正式版成功转换了世界,请将转换后的副本与旧格式版本分开保存。
推荐备份布局:
我的世界-预览版-1.0/ 我的世界-修复版-旧版本/ 我的世界-转换版-1.0/
不要反复将同一个工作副本在旧版本和新版本之间来回移动。
使用副本。
这是在专用 Valheim 服务器上运行 BepInEx 进行开发和测试的。
典型插件位置:
/config/bepinex/plugins/ValheimWorldConvertDiag.dll
或者,根据你的设置:
BepInEx/plugins/ValheimWorldConvertDiag.dll
诊断日志已写入 BepInEx 配置目录。
在开发过程中使用的Docker设置上:
/config/bepinex/ValheimWorldConvertDiag.log
该插件修补了共享的英灵神殿世界转换类,包括:
ZDOMan物品栏 ItemDrop.ItemData
这些不是仅限专用服务器的职业。
因此,该插件也应适用于:
只要 Valheim 在 BepInEx 下运行。
典型客户端安装:
Valheim/ └── BepInEx/ └── plugins/ └── ValheimWorldConvertDiag.dll
诊断日志应出现在正常的 BepInEx 配置目录下,例如:
Valheim/BepInEx/config/ValheimWorldConvertDiag.log
客户端的使用尚未经过本人测试,如果你确认可用或发现任何不同之处,请提交 issue。
瓦尔海姆世界转换诊断日志
---------------- 转换失败报告 ----------------
源ZDO候选:
示例:
ZDO候选源:类型=ZDO,m_uid=1:183157,m_position=(-866.75, 31.46, -8632.98),m_prefab=328745978
如果转换再次失败,请重复该过程。可能存在多个格式错误的旧版库存。
启用开发者命令后,记录的X和Z坐标可用于:
转到 X Z
例如:
前往 -867 -8633
先使用四舍五入后的整数在旧版游戏中可能更容易。
如果未启用开发者命令,请使用以下方式启动英灵神殿:
控制台
然后在游戏内打开控制台并运行:
开发者命令
在那之后, 转到 可以使用。
如果报告的位置只是一个旧的临时营地、废弃的储物区、船只、推车或垃圾箱,最简单的修复方法可能就是将其彻底摧毁。
在确诊病例中:
移除掉落 被运行了。只有在你能够接受丢失该对象内容的情况下才这样做。
本项目有意不包含 Valheim、Unity、Harmony 或 BepInEx 的 DLL 文件。
将所需的引用放入:
lib/
所需文件:
BepInEx.dll 0Harmony.dll UnityEngine.dll UnityEngine.CoreModule.dll
然后用以下内容建造:
.\build.ps1
或:
dotnet build -c Release
输出的DLL将位于:
bin/Release/netstandard2.1/
该插件有意不尝试自动修复。
关于格式错误的旧版库存数据,存在太多未知因素,悄无声息地重写世界数据可能比原始问题造成更大损害。
更安全的工作流程是:
在旧游戏版本上手动诊断定位修复,重试转换
这在以下情况下特别有用:
ZDOMan.ConvertInventories Inventory.LoadOld Inventory.AddTempItem Inventory.AddItem ItemDrop+ItemData.IsSameType
如果世界在之前的英灵神殿版本中也无法加载,那么问题可能是无关的存档损坏,这个插件可能帮不上忙。
在做任何操作之前,请先备份两个世界文件:
世界数据库 世界文件
至少保留:
原始未动备份旧版本修复副本1.0转换测试副本
不要用你唯一的副本进行测试。
已确认的案例似乎涉及格式不正确的旧版背包栏位数据,而非整体损坏的世界。
容器被报告为4x4物品栏,但部分序列化物品使用的X坐标为 4,这超出了正常的 0-3 4格宽物品栏的射程。
旧版英灵神殿仍然能够加载并使用那个容器。
英灵神殿1.0的转换路径试图重建旧版物品栏,遇到了无效或冲突的槽位状态,最终在以下位置触发了空引用:
物品掉落+物品数据.类型相同
这就是为什么一个坏容器会阻止一个本来健康的世界完成转化。
异常物品栏的确切原因尚不明确。
可能的原因包括:
已确认案例中的相邻容器是同时生成的,且未受影响,因此这似乎并不单纯取决于容器年龄或宝箱创建时的游戏版本。
确认:
BepInEx/plugins 目录ZDOMan.转换库存源ZDO候选请确保您使用的是当前的插件版本,该版本包含ZDO库存获取器诊断功能。
旧版插件能识别出出错的物品栏内容,但无法识别其世界坐标。
可能的解释包括:
搜索附近区域,不要想当然地以为这一定是个普通宝箱。
这意味着可能存在多个格式错误的物品栏。
再次运行诊断插件,获取下一组ZDO坐标,切回旧版本,修复下一个对象,保存并重试。
初始开发和成功恢复是在以下环境中完成的:
相同的诊断方法应适用于任何使用相同英灵神殿世界转换代码的地方。
如果这个插件帮助您恢复了世界,请打开问题或讨论并附上:
除非你愿意分享,否则不要上传你的整个世界存档。
这是一个非官方诊断工具,与Iron Gate AB无关。
在测试任何内容之前,请先备份你的世界。
使用风险自负。

修改前置工具
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
为弓术玩法添加了许多功能和改动,包括全新的箭袋系统、可回收的箭矢、更精准的瞄准以及逼真的箭矢物理效果。