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。

相关条目