Waraxe
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | battlegear2:waraxe.wood / .stone / .iron / .diamond / .gold |
| 类 | mods.battlegear2.items.ItemWaraxe |
| 继承 | OneHandedWeapon → ItemWeapon → ItemSword |
| 接口 | IPenetrateWeapon |
| 注册方式 | 构造函数内 GameRegistry.registerItem(this, this.name)(ItemWaraxe.java:26) |
| 创造标签 | BattlegearConfig.customTab(ItemWeapon.java:29) |
| 材质顺序 | wood, stone, iron, diamond, gold(BattlegearConfig.java:64) |
功能
战斧是 5 种材质的单手武器,与匕首共享 OneHandedWeapon 的全部副手行为,定位区别在于破甲而非攻速/距离。
核心特性:
- 破甲:实现
IPenetrateWeapon,向armourPenetrate属性写入ignoreDamageAmount(ItemWaraxe.java:33-34),getPenetratingPower返回其整数部分(ItemWaraxe.java:45-47) - 耐久翻倍:
setMaxDamage(material.getMaxUses() * 2)(ItemWaraxe.java:25) - 可采集原木:
func_150897_b对BlockLog实例返回 true(ItemWaraxe.java:39-42) - 副手适配:允许副手放置与副手攻击,
sheatheOnBack返回 false(OneHandedWeapon.java:16-34)
已知未实现项
源码注释明确写明战斧没有实现纹章系统(IHeraldyItem 被注释掉):
// implements IHeraldyItem{ Don't know if we want to do this or not
(ItemWaraxe.java:15-16)
数值
注册时破甲量按材质区分(BattlegearConfig.java:274):
warAxe[i] = new ItemWaraxe(material, itemNames[4], i == 4 ? 2 : 1);
| 材质 | ignoreDamageAmount |
说明 |
|---|---|---|
wood / stone / iron / diamond |
1 | 索引 0–3 走三元表达式的 else 分支 |
gold |
2 | 索引 4 命中 i == 4 分支 |
| 数值 | 公式 | 来源 |
|---|---|---|
| 基础伤害 | 4 + material.getDamageVsEntity() 再 -= (1 + ignoreDamageAmount),即 3 - ignoreDamageAmount + getDamageVsEntity() |
ItemWeapon.java:40、ItemWaraxe.java:24 |
| 最大耐久 | material.getMaxUses() × 2 |
ItemWaraxe.java:25 |
getDamageVsEntity()与getMaxUses()均为原版Item.ToolMaterial枚举方法,不在本仓库中实现,逐材质数值无法从本仓库核实。
交互
| 触发 | 行为 |
|---|---|
| 副手攻击 | 允许(OneHandedWeapon.java:31-34) |
| 副手点击空气 / 点击方块 | 允许(OneHandedWeapon.java:37-44) |
| 收背后 | 否(OneHandedWeapon.java:26-28) |
| 可采集方块 | 所有 BlockLog(ItemWaraxe.java:39-42) |
合成配方
ShapedOreRecipe,每种材质一个(BattlegearConfig.java:401-412):
L L
LSL
S
| 字符 | 物品 |
|---|---|
S |
stickWood(木棍) |
L |
木质战斧为 plankWood;其余为对应 ToolMaterial 的 func_150995_f(),metadata = WILDCARD_VALUE |