暗黑药剂
[!INFO] 注册真源:
potions/DarkPotions.java:18alchemize()
potions/ 包下只有两个类:DarkPotions.java 与 PotionBloodSeal.java。
实际生效的药剂:1 个
| 字段 | 类 | 条件 |
|---|---|---|
bloodSeal |
PotionBloodSeal |
if (Compat.bm) —— 即 Config.bloodMagic && Loader.isModLoaded("AWWayofTime") |
没有装 Blood Magic(AWWayofTime)时,本模组不注册任何药剂。
死字段:dragonwrack
DarkPotions.java:16 声明了 public static Potion dragonwrack;,但:
- 全仓 grep
dragonwrack只命中 5 处,无任何赋值语句 potions/下不存在PotionDragonwrack.java类Config.java:32有dragonwrackPotionID = 71,:181有对应配置读取- 6 个语言文件(
en_US/fr_FR/ja_JP/ko_KR/ru_RU/zh_CN)中,只有 3 个(en_US、ko_KR、ru_RU)残留potion.dragonwrack与death.attack.dragonwrack孤儿字符串
[!WARNING] 源缺陷:
dragonwrack是完全的死字段 —— 字段、配置项、6 条孤儿字符串三者俱在,唯独没有实现类与实例化代码。Dragonwrack 药剂应是从早期版本移除后清理遗漏。玩家在配置中调Dragonwrack的 potion ID 不会有任何效果。证据:
src/main/java/fox/spiteful/forbidden/potions/DarkPotions.java:16(声明)、Config.java:32(默认值 71)、Config.java:181(配置读取)、assets/forbidden/lang/{en_US,ko_KR,ru_RU}.lang(孤儿字符串)。另 3 个语言文件(fr_FR/ja_JP/zh_CN)没有这些键,说明其从未被同步清理过。
药剂表扩容
alchemize() 开头有一段反射扩容:若 Potion.potionTypes.length < 256,通过移除 Potion 类的 potionTypes 字段 FINAL 修饰符并替换为长度 256 的新数组,扩展原版药剂表上限,为血魔法等需要大量药剂 id 的兼容 mod 让路。
这是修改其他 mod/原版私有字段的操作,是 1.7.10 上扩充药剂 id 的常见手法。