Mace
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | battlegear2:mace.wood / .stone / .iron / .diamond / .gold |
| 类 | mods.battlegear2.items.ItemMace |
| 继承 | OneHandedWeapon → ItemWeapon → ItemSword |
| 接口 | IPotionEffect |
| 注册方式 | 构造函数内 GameRegistry.registerItem(this, this.name)(ItemMace.java:41) |
| 创造标签 | BattlegearConfig.customTab(ItemWeapon.java:29) |
| 材质顺序 | wood, stone, iron, diamond, gold(BattlegearConfig.java:64) |
功能
钉头锤是 5 种材质的单手武器。与匕首、战斧不同,它不破甲,而是给每次命中附加一组固定药水效果。
核心特性:
-
眩晕效果:实现
IPotionEffect。构造函数内一次性构建Map<PotionEffect, Float>,同一概率挂载 4 条原版 potion(ItemMace.java:34-39):Potion ID 原版药水 时长 放大等级 2 缓慢 3 × 20 = 60 tick 100 9 失明 3 × 20 = 60 tick 100 15 虚弱 3 × 20 = 60 tick 100 18 凋零 3 × 20 = 60 tick 100 四条效果的概率均为构造参数
stunChance。 -
耐久翻倍:
setMaxDamage(material.getMaxUses() * 2)(ItemMace.java:40) -
工具提示:物品提示中以金色追加
attribute.name.weapon.daze+ 百分比(ItemMace.java:53-56),百分比格式器setMaximumFractionDigits(0)(ItemMace.java:26-28) -
副手适配:继承
OneHandedWeapon,允许副手放置与副手攻击,sheatheOnBack返回 false(OneHandedWeapon.java:16-34)
药水的实际生效概率由实现
IPotionEffect的调用方决定。本仓库内getEffectsOnHit仅返回该 Map,调用点不在本仓库中,故概率的生效条件无法从本仓库核实。
数值
眩晕概率按材质递增,注册时由公式给出(BattlegearConfig.java:280):
mace[i] = new ItemMace(material, itemNames[5], 0.05F + 0.05F * i);
| 材质索引 | 材质 | 眩晕概率 |
|---|---|---|
| 0 | wood |
5% |
| 1 | stone |
10% |
| 2 | iron |
15% |
| 3 | diamond |
20% |
| 4 | gold |
25% |
| 数值 | 公式 | 来源 |
|---|---|---|
| 基础伤害 | 4 + material.getDamageVsEntity() 再 -= 1,即 3 + getDamageVsEntity() |
ItemWeapon.java:40、ItemMace.java:33 |
| 最大耐久 | material.getMaxUses() × 2 |
ItemMace.java:40 |
| 药水时长 | 60 tick | ItemMace.java:36-39 |
getDamageVsEntity()与getMaxUses()为原版Item.ToolMaterial枚举方法,不在本仓库中实现,逐材质数值无法从本仓库核实。
交互
| 触发 | 行为 |
|---|---|
| 命中生物 | 触发 getEffectsOnHit 返回的 4 条药水效果(ItemMace.java:44-46) |
| 副手攻击 | 允许(OneHandedWeapon.java:31-34) |
| 副手点击空气 / 点击方块 | 允许(OneHandedWeapon.java:37-44) |
| 收背后 | 否(OneHandedWeapon.java:26-28) |
合成配方
ShapedOreRecipe,每种材质一个(BattlegearConfig.java:413-423):
LL
LL
S
| 字符 | 物品 |
|---|---|
S |
stickWood(木棍) |
L |
木质钉头锤为 plankWood;其余为对应 ToolMaterial 的 func_150995_f(),metadata = WILDCARD_VALUE |