介绍
IsleOfBerk DeadlockFix
一款适用于 Forge 1.18.2 的小型兼容性模组,可修复 IsleOfBerk 这款《驯龙高手》(HTTYD)龙类模组中的服务器崩溃问题:区块生成死锁。该模组由 GACMD 团队(Ghanou Craft、Apprentice Necromancer、TooTHleZZ 和 Arsian)制作,详见 Isle of Berk。
ℹ️ Isle of Berk 本身已正式停止更新——此修复适用于仍在 1.18.2 整合包中使用最终版
isleofberk-1.2.0jar 的服务器,例如由 kesselot 制作的 Isle of Berk (Claws of Berk)。
如果安装了 IsleOfBerk 后,你的服务器因 ServerHangWatchdog 报出 “A single server tick took 60.00 seconds” 而崩溃——这款模组就能解决问题。
🐉 问题
在世界生成期间,SpeedStinger.checkSpawnRules 会调用 ADragonBase.isWaterBelow(),后者会通过 Level.getBlockState(BlockPos) 读取完整的 ServerLevel。如果读取目标是尚未完成生成的相邻区块中的方块,世界生成工作线程就会阻塞在 ServerChunkCache.getChunk(...).join() 中,等待一个也在等待它的区块——这会导致 Worker-Main-N 线程之间发生循环死锁。
60 秒后,服务器看门狗触发,导致整个服务器崩溃。
日志中的典型症状:
[Server Watchdog/FATAL]: A single server tick took 60.00 seconds (should be max 0.05) …堆栈信息指向 ServerChunkCache.getChunk,调用链为 SpeedStinger.checkSpawnRules → ADragonBase.isWaterBelow。
🔧 修复方式
通过精确的 Mixin(在 isWaterBelow() 的 HEAD 处执行 @Inject):
- 如果调用线程名称以
Worker-Main开头(即世界生成线程),则直接返回false——不执行线程外方块读取,也就不会发生死锁。 - 世界生成期间的生成检查是唯一会从主线程之外调用此方法的情况,因此提前返回只会影响区块生成期间的生成位置判断(SpeedStinger 仍可正常生成,只是在世界生成时跳过水域检查)。
- 所有实时 AI 调用(
DragonSleepGoal、AIDragonLand等)都在主Server thread上运行,完全不受影响——龙的行为保持不变。 - 使用
@Pseudo,即使缺少 IsleOfBerk,或 refmap 生成时无法识别目标类,也能正常加载。
✅ 兼容性
| 项目 | 版本/说明 |
|---|---|
| Minecraft | 1.18.2 |
| Forge | 40.x+ |
| 加载器 | Forge (FML) |
| 运行端 | 服务端与客户端(修复针对服务端;客户端安装副本不会造成影响) |
| 必需模组 | isleofberk ≥ 1.2.0 |
此模组只修补 IsleOfBerk——不会与其他模组交互,可安全安装到任何包含 IsleOfBerk 的 1.18.2 整合包中(例如 Claws of Berk)。
📦 安装
-
将
isleofberk-deadlockfix-1.0.0.jar放入mods/,与isleofberk-1.2.0.jar放在一起。 -
启动服务器。在日志中确认出现:[IoB-DeadlockFix] Loaded。Mixin 会在非主线程生成世界时短路调用 ADragonBase.isWaterBelow()。
-
现在可以安心游玩,服务器在生成区块时不会再崩溃了。🎉
📜 许可协议与源代码
- 许可协议:MIT
- 源代码:github.com/Vonix-Network/isleofberk-deadlockfix
- 原模组:CurseForge 上的 Isle of Berk / Modrinth — 所有龙相关内容及其署名均归 GACMD 团队所有。本模组仅修复了他们最终版 1.2.0 中一次在非主线程读取方块的问题。
- Bug 发现与修复:Vonix Network 团队,最初部署于我们的 Claws of Berk 服务器。

常见问题
IOB Deadlock Fixes 支持哪些 Minecraft 版本?
IOB Deadlock Fixes 支持 Minecraft Java 版 1.18.2,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
IOB Deadlock Fixes 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
VonixNetwork 的其他作品
查看全部 →IOB Performance Patches
为过时的 Isle of Berk 模组提供性能补丁。
Viscord – Discord/Fluxer Server to Server
针对多个服务器进行优化,支持嵌入内容解析,并优化了 Webhook 防循环机制。
Vonix Server Utilities
Server essentials fully server sided: /home /tpa /back /backdeath and more!
Vonix Guardian
A Grief Logger and Rollback system made for the popular variety of modded Minecraft Versions!

评论
登录后评论和评分