血与仪式药剂
基本信息
本 mod 注册 4 个自定义药水效果,全部由 BloodArsenal.init() 直接构造,
不经 GameRegistry(药水不是物品,走 Potion 数组)。
| 效果 | 字段 | 类型 | 默认 ID | 图标 | 构造处 |
|---|---|---|---|---|---|
| Vampiric Aura(吸血光环) | BloodArsenal.vampiricAura |
有害=false | 120 | (0, 0) |
BloodArsenal.java:160-161 |
| Bleeding(流血) | BloodArsenal.bleeding |
有害=true | 121 | (1, 0) |
BloodArsenal.java:162-163 |
| Swimming(游泳) | BloodArsenal.swimming |
有害=false | 122 | (2, 0) |
BloodArsenal.java:164-165 |
| Soul Burn(灵魂灼烧) | BloodArsenal.soulBurn |
有害=true | 123 | (3, 0) |
BloodArsenal.java:166-167 |
四个 ID 全部由配置决定,默认值见
BloodArsenalConfig.java:93-96(config.get(potionId, …))。
图标贴图
PotionBloodArsenal 绑定
bloodarsenal:textures/misc/potions.png(potion/PotionBloodArsenal.java:14-15),
在 getStatusIconIndex()(@SideOnly(Side.CLIENT))里
bindTexture 后调父类实现。
数组扩容补丁(1.7.10 必需)
BloodArsenal.preInit() 用反射把 Potion.potionTypes 数组
从不足 256 扩到 256(BloodArsenal.java:112-133):
- 反射取
Potion.class的声明字段; - 匹配字段名
"potionTypes"或混淆名"field_76425_a"; - 长度 < 256 时,反射去掉
modifiers的FINAL位, 新建Potion[256]并System.arraycopy旧数据; - 失败只打两条 error 日志(
Could not resize potions array!), 不抛异常 —— 扩容失败会导致后续 4 个效果写入越界。
1.7.10 原版
Potion数组只有 32 个槽,ID ≥ 32 越界。 不打这个补丁,默认 ID 120–123 全部无效。
构造参数含义
PotionBloodArsenal(int id, boolean isBadEffect, int difficulty):
第二参 true 会让效果被归为有害(影响生物 AI 与 HUD 图标),
第三参影响效果强度曲线。
相关条目
源码
src/main/java/com/arc/bloodarsenal/common/BloodArsenal.java:112-133, 160-167src/main/java/com/arc/bloodarsenal/common/potion/PotionBloodArsenal.javasrc/main/java/com/arc/bloodarsenal/common/BloodArsenalConfig.java:29-32, 93-96