血与仪式药剂

基本信息

本 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):

  1. 反射取 Potion.class 的声明字段;
  2. 匹配字段名 "potionTypes" 或混淆名 "field_76425_a";
  3. 长度 < 256 时,反射去掉 modifiers 的 FINAL 位, 新建 Potion[256] 并 System.arraycopy 旧数据;
  4. 失败只打两条 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-167
  • src/main/java/com/arc/bloodarsenal/common/potion/PotionBloodArsenal.java
  • src/main/java/com/arc/bloodarsenal/common/BloodArsenalConfig.java:29-32, 93-96