-
Notifications
You must be signed in to change notification settings - Fork 142
Open
Description
MiniHUD 与农夫乐事模组兼容性崩溃
问题描述
模组: MiniHUD
冲突模组: Farmer's Delight (农夫乐事)
Minecraft版本: 1.21.8
Fabric Loader: 0.17.3
当按住 Alt 键(容器内容渲染)指向农夫乐事模组的加工方块时,游戏立即崩溃。
崩溃详情
崩溃模组: MiniHUD 0.36.4 + MaLiLib 0.25.5
错误类型: IllegalStateException: No key id in MapLike
崩溃线程: Render thread
复现步骤
- 安装 MiniHUD 和 Farmer's Delight 模组
- 在世界中放置农夫乐事的加工方块(砧板、烹饪锅等)
- 在加工方块中放入物品(如橡木原木)
- 按住 Alt 键并将准星指向该方块
- 游戏立即崩溃
崩溃日志摘要
java.lang.IllegalStateException: No key id in MapLike[{Items:[{Slot:4b,count:64,id:"minecraft:oak_log"}]}]
at fi.dy.masa.malilib.util.nbt.NbtInventory.fromNbtSingle(NbtInventory.java:392)
at fi.dy.masa.minihud.renderer.InventoryOverlayHandler.getTargetInventoryFromBlock(InventoryOverlayHandler.java:415)受影响的方块
- 砧板 (Cutting Board)
- 烹饪锅 (Cooking Pot)
- 其他农夫乐事加工容器
根本原因分析
农夫乐事模组使用自定义的NBT格式存储容器物品数据,而 MiniHUD 的 NbtInventory.fromNbtSingle() 方法期望标准容器的NBT格式,导致解析失败。
建议的修复方案
- 添加异常处理(推荐):
// 在 NbtInventory.fromNbt() 或 InventoryOverlayHandler 中添加 try-catch
try {
inventoryData = NbtInventory.fromNbt(nbtData);
} catch (IllegalStateException e) {
logger.warn("无法解析容器NBT数据,跳过渲染: " + e.getMessage());
return null; // 或空的库存数据
}-
兼容农夫乐事的NBT格式:
- 检测农夫乐事方块的NBT结构
- 实现专门的解析逻辑
-
配置选项:
- 添加农夫乐事方块的黑名单
- 允许用户禁用特定方块的容器渲染
临时解决方案
用户目前可以通过以下方式避免崩溃:
- 取消 Alt 键的容器渲染绑定
- 完全禁用容器内容渲染功能
环境信息
- Minecraft: 1.21.8
- Fabric API: 0.134.0
- MiniHUD: 0.36.4
- MaLiLib: 0.25.5
- Farmer's Delight: 1.21.8-3.3.1+refabricated
附加信息
这个问题影响了用户体验,因为:
- 崩溃发生在渲染线程,直接导致游戏退出
- 没有优雅的错误处理,用户无法恢复
- 影响了农夫乐事模组的正常使用
请考虑在下一个版本中修复这个兼容性问题,谢谢!
NyteWL
Metadata
Metadata
Assignees
Labels
No labels