Enchantment and Potions
基本信息
| 属性 | 值 |
|---|---|
| 注册位置 | WGContent.init()(WGContent.java:189-240) |
| 附魔注册数 | 8 |
| 药水注册数 | 3 |
| 附魔 ID 基准 | 64(WGContent.java:213) |
| 药水 ID 基准 | 32(WGContent.java:198) |
功能
模组在 init 阶段注册 8 个自定义附魔与 3 个自定义药水。ID 由配置项 getEnchantmentID / getPotionID 逐个分配,基准值逐次前推(WGConfig.java:216-228),默认顺延生成。
附魔(8 个)
| 字段 | 内部名 | 显示名 | 注册条件 |
|---|---|---|---|
enc_gemstonePotency |
wg.gemstonePotency |
Brilliance | moduleGemcutting |
enc_gemstoneBrittle |
wg.gemstoneBrittle |
Brittle | moduleGemcutting |
enc_invisibleGear |
wg.invisibleGear |
Translucency | 无条件 |
enc_unveiling |
wg.unveiling |
Unveiling | 无条件 |
enc_stealth |
wg.stealth |
Stealth | 无条件 |
enc_backstab |
wg.backstab |
Backstabbing | 无条件 |
enc_rideProtect |
wg.rideProtect |
Throwoff | 无条件 |
enc_soulbound |
wg.soulbound |
Soul Tethered | 无条件 |
显示名取自 lang 的 enchantment.wg.* 条目(en_US.lang:152-159)。
注册顺序的连带效应:enc_gemstonePotency 与 enc_gemstoneBrittle 被包在 if (WGConfig.moduleGemcutting) 内(WGContent.java:215-221)。由于 enchId 变量在每步都用上一步的值作为基准前推(WGConfig.getEnchantmentID(enchId, ...)),关闭 gemcutting 会使后续附魔的 ID 基准前移两位。
药水(3 个)
| 字段 | 内部名 | 显示名 | 构造参数(id, isBad, colour, tick, halveTick, icon) | 依赖 |
|---|---|---|---|---|
pot_knockbackRes |
wg.potionKnockbackRes |
Knockback Res. | (id, false, 0x6e6e6e, 0, false, 1) |
挂载击退抗性属性 |
pot_dissolve |
wg.potionDissolve |
Dissolving | (id, true, 0x450b45, 40, true, 2) |
— |
pot_cinderCoat |
wg.potionCinderCoat |
Cinder Coat | (id, true, 0x8f3f1f, 0, false, 3) |
— |
WGPotion 构造器签名为 WGPotion(int id, boolean isBad, int colour, int tick, boolean halveTick, int icon)(WGPotion.java:17-22),四个自定义参数含义:
| 参数 | 含义 | 源码 |
|---|---|---|
tick |
赋给 this.tickrate —— 药水跳动速率 |
WGPotion.java:19 |
halveTick |
赋给 this.halfTickRateWIthAmplifier —— 等级放大时是否减半速率 |
WGPotion.java:20 |
icon |
setIconIndex(icon % 8, icon / 8) —— 在药水贴图集中的行列坐标 |
WGPotion.java:21 |
因此 Dissolve 是唯一 tick = 40 且开启 halveTick 的药水;另两个药水 tick = 0 且不开启 halveTick。图标坐标分别为 (1,0)、(2,0)、(3,0)。
击退抗性药水额外挂载了一个共享怪物属性(WGContent.java:200-202):
.setPotionName("wg.potionKnockbackRes")
.func_111184_a(SharedMonsterAttributes.knockbackResistance, s, 0.34D, 0)
即击退抗性属性值 0.34,属性 UUID 字符串 s 由 new UUID(109406002307L, 01L).toString() 生成(WGContent.java:197)—— 这是一个硬编码常量,与标准玩家击退抗性 UUID 无关。
WGPotion 的构造参数中,第 4 个位置为 40(Dissolve)与 0(其余两者)—— 该参数在 WGPotion 构造器中对应具体含义需查 WGPotion.java 确认,本页不臆测其语义。
数值
| 数值名 | 值 |
|---|---|
| 附魔总数 | 8 |
| 药水总数 | 3 |
| Brilliance 最大等级 | 4(new WGEnchantGemPotency(enchId, 4),WGContent.java:217) |
| Brilliance 附魔权重 | 4 |
| Brittle 最大等级 | 1(new WGEnchantGemBrittle(enchId, 1),WGContent.java:220) |
| Brittle 附魔权重 | 1 |
| 击退抗性药水属性值 | 0.34(WGContent.java:202) |
| 击退抗性属性 UUID | new UUID(109406002307L, 01L).toString()(WGContent.java:197) |
| 药水 ID 基准 | 32(WGContent.java:198) |
| 附魔 ID 基准 | 64(WGContent.java:213) |
| 药水数组扩容 | 追加 3 个槽位,仅当 Potion.potionTypes.length < 128 - 3 时执行(WGContent.java:194-196) |
| 药水图标坐标 | (1,0) / (2,0) / (3,0)(icon % 8, icon / 8,WGPotion.java:21) |
交互
| 触发 | 行为 |
|---|---|
| Translucency 作用于护甲 | 第 1 级在自己隐身时让护甲半透明,第 2 级让护甲永久隐形(lang witchinggadgets_research_page.ENCH_INVISIBLEGEAR.1) |
| Unveiling 作用于头部装备 | 佩戴时可看见隐身生物;他人使用 Translucency 时对其无效;Spectral Mantle 使用者在他人眼中更清晰(同上 lang 页 .ENCH_UNVEILING.1) |
| Stealth 作用于靴子/护腿 | 潜行时每级提供 10% 的不被察觉几率,若处于目标视野内则减少 10%;被发现时半径 5 格内的敌人全部获知(同上 lang 页 .ENCH_STEALTH.1) |
| Soul Tethered | 灵魂绑定;soulboundBaubles / soulboundGalacticraft 控制其是否接管 Baubles / Galacticraft 背包(WGConfig.java:166-178) |
| 药水 ID 冲突 | checkPotionId 会在 ID 超出 Potion.potionTypes 数组边界时抛 IllegalStateException(WGContent.java:177-187) |
合成配方
附魔通过注液配方获取,配方注册于 WG_infusion_enchantments.java 与 WG_arcane_ench_soulbound.java,研究条目为 ENCH_INVISIBLEGEAR、ENCH_UNVEILING、ENCH_STEALTH、ENCH_BACKSTAB、ENCH_RIDEPROTECT、ENCH_SOULBOUND、INFUSIONENCHANTMENT。
相关条目
- Infused Gem - Brilliance / Brittle 附魔的对象
- Primordial Armor - Translucency 的典型目标
- Mod Compat - Soul Tether 与其他 soulbound 模组的冲突规避