Spear
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | battlegear2:spear.wood / .stone / .iron / .diamond / .gold |
| 类 | mods.battlegear2.items.ItemSpear |
| 继承 | TwoHandedWeapon → ItemWeapon → ItemSword |
| 接口 | IExtendedReachWeapon |
| 注册方式 | 构造函数内 GameRegistry.registerItem(this, this.name)(ItemSpear.java:30) |
| 创造标签 | BattlegearConfig.customTab(ItemWeapon.java:29) |
| 材质顺序 | wood, stone, iron, diamond, gold(BattlegearConfig.java:64) |
功能
长矛是本模组唯一的双手武器,核心属性是骑乘伤害加成与攻击距离。
核心特性:
- 骑乘伤害:向
mountedBonus属性写入mounted_extra_damage(ItemSpear.java:50-51) - 攻击距离:实现
IExtendedReachWeapon,向extendedReach属性写入reach(ItemSpear.java:47-48) - 双手限制:
TwoHandedWeapon.allowOffhand返回offhand == null(TwoHandedWeapon.java:16-18),isOffhandHandDual返回 false(TwoHandedWeapon.java:21-23) - 例外:允许副手持盾:
ItemSpear覆写allowOffhand,在父类判断基础上追加|| offhand.getItem() instanceof IShield(ItemSpear.java:39-41) - 收背后:
sheatheOnBack返回 true(TwoHandedWeapon.java:26-28) - 取消蓄力:覆写为无蓄力动作(
ItemSpear.java:56-68,返回EnumAction.none且使用时长为 0) - 大型图标:额外注册
.big贴图(ItemSpear.java:74)
数值
所有材质的 mount 与 reach 在注册时固定为同一组值(BattlegearConfig.java:283):
spear[i] = new ItemSpear(material, itemNames[6], 3, 2.0F);
| 数值 | 值 | 来源 |
|---|---|---|
骑乘伤害加成 mount |
3(属性操作 0,即加上) | BattlegearConfig.java:283、ItemSpear.java:50-51 |
攻击距离修正 reach |
2.0(属性操作 0,即加上) | BattlegearConfig.java:283、ItemSpear.java:47-48 |
| 物品使用动作 | EnumAction.none |
ItemSpear.java:61-63 |
| 最大使用时长 | 0 | ItemSpear.java:66-68 |
| 基础伤害公式 | 4 + material.getDamageVsEntity() 再 -= 2,即 2 + getDamageVsEntity() |
ItemWeapon.java:40、ItemSpear.java:29 |
基础伤害的最终数值取决于原版
Item.ToolMaterial枚举的getDamageVsEntity(),该方法不在本仓库中实现,逐材质数值无法从本仓库核实。
交互
| 触发 | 行为 |
|---|---|
| 副手放置 | 仅当副手为空或副手为 IShield 时允许(ItemSpear.java:39-41、TwoHandedWeapon.java:16-18) |
| 副手攻击 | 方法体返回 true(TwoHandedWeapon.java:31-34) |
| 收背后 | 是(TwoHandedWeapon.java:26-28) |
| 右键 | 直接返回原 ItemStack,不进入蓄力(ItemSpear.java:56-58) |
合成配方
木质长矛与其余材质走两条不同分支(BattlegearConfig.java:425-432)。
木质(i == 0) ShapedOreRecipe:
S
S
S
| 字符 | 物品 |
|---|---|
S |
stickWood(木棍) |
其余材质 形状为 ShapedOreRecipe 但以上一级长矛为主料:
L
S
| 字符 | 物品 |
|---|---|
S |
spear[0](木质长矛) |
L |
对应 ToolMaterial 的 func_150995_f(),metadata = WILDCARD_VALUE |