模组包冲突雷达

模组包冲突雷达

找出Minecraft隐藏的模组冲突:被删除的标签、冲突的配方、无声的覆盖。

Modpack Conflict Radar

整合包会在无声无息中崩溃。

两个模组提供相同的战利品表。两个模组定义了相同的合成配方。一个模组对某个标签设置了 "replace": true,并删除了其他模组添加的所有条目。Minecraft 只会保留其中一个版本,并且什么也不说——没有错误,没有警告,日志中也不会有任何记录。

几周后你才会发现,矿石不再掉落,或者某个结构永远不会生成。然后你花一个晚上去二分排查一个包含 300 个模组的列表。

Conflict Radar 在加载时读取每个资源的所有候选文件——不仅仅是胜出的那个——并记录下谁失败了。

它能发现什么

标签清空。 某个模组声明了 "replace": true,并静默删除了其他模组贡献的标签条目。雷达会指出每一个消失的条目。

真实案例,在一个包含 40 个热门模组的整合包中:当 Towns & Towers、Biomes O' Plenty 和 Terralith 同时存在时,六个 BOP 生物群系——草原、旱地、草地、雪针叶林、枫树林、苔原——最终完全没有掠夺者前哨站。原版的没有,Towns & Towers 自己的也没有。这不是任何人刻意为之;它是三个各自正确的模组组合后产生的结果。已在游戏内通过 execute if biome 验证,而不仅仅是读取 JSON 文件。

(一个仅删除原版条目的替换者不会被报告:重新定义原版标签正是 replace 的用途,标记它只会让你去追逐并不存在的错误。只有其他模组的损失会被标记,因为那个模组不在替换者的文件中,永远不会发现自己被覆盖了。)

合成冲突。 两个合成配方使用相同的材料但产出不同的结果。游戏选择其中一个,并且永远不会提到另一个。加载顺序无法解决这个问题——雷达会明确指出这一点,而不是假装它能解决。

真实案例,普通整合包:Quark 和 Supplementaries 都用金锭合成金条。Mekanism 和 Quark 都压缩木炭。Farmer's Delight 和 Quark 都制作胡萝卜箱子。

音效清空。 对单个音效事件设置 "replace": true 会使之前所有资源包注册的内容全部静音。

静默覆盖。 一个模组悄悄抢占了另一个模组的战利品表、进度或世界生成文件。

模组自定义的任何内容。 扫描目录从实时注册表中读取,因此自定义数据类型也能被覆盖,即使雷达从未听说过它们。

它不会做什么

它不会报告无害的情况。标签和语言文件会被游戏合并——多个模组共同贡献一个标签是正常的,不是冲突,标记这些会用噪音淹没真正的发现。一个替换标签但把每个外部条目都放回去的模组也不会被报告。只有真正丢失的内容才会被点名。

使用方法

把它放进整合包,启动游戏。一份纯文本报告会出现在你的游戏文件夹中:

  • conflict-radar-data.txt —— 服务端(合成配方、战利品、标签、世界生成)
  • conflict-radar-assets.txt —— 客户端(模型、纹理、音效)

当加载顺序可以解决冲突时,报告会打印出确切的 config/fml.toml 配置行。当无法解决时,它会告诉你真相,而不是给出虚假的修复。

备注

  • 客户端和服务端。单独在任一侧使用都是安全的。
  • 无依赖。无 Mixins。不修改任何东西。
  • 扫描开销:在包含 32 个模组的整合包上约 0.7 秒(28,000 个资源,60 个包)。仅在启动时执行。
  • MIT 许可证。