Knight’s Armour

基本信息

属性 值
注册名 battlegear2:knights_armour.helmet / .plate / .legs / .boots
类 mods.battlegear2.items.ItemKnightArmour
继承 net.minecraft.item.ItemArmor
接口 IHeraldyArmour、ISpecialArmor
注册方式 构造函数内 GameRegistry.registerItem(this, "knights_armour." + type)(ItemKnightArmour.java:55)
注册循环 材质索引 0–3(i != 4)(BattlegearConfig.java:289-291)
部位顺序 helmet, plate, legs, boots(BattlegearConfig.java:66)
纹章贴图目录 battlegear2:armours/knights/(ItemKnightArmour.java:183-185)

功能

骑士盔甲 4 件套,是本模组唯一实现纹章涂装的装备,且带移动速度惩罚。

核心特性:

  • 护甲材质:EnumHelper.addArmorMaterial("knights.armour", 25, new int[]{3,7,5,3}, 15),在 preInit 中创建(Battlegear.java:69)
  • 纹章渲染:实现 IHeraldyArmour,纹章数据以 byte[] 存于 NBT(ItemKnightArmour.java:146-163)
  • 移动惩罚:onArmorTick 每 tick 将 motionX / motionZ 乘以 (1 + motionFactor);motionY > 0.005 时同样处理(ItemKnightArmour.java:284-289)
  • 自定义护甲模型:getArmorModel 返回 HeraldryArmourModel 并按部位设置可见性(ItemKnightArmour.java:189-227)
  • 三件套效果:胸甲 + 护腿 + 靴子同时装备时,getArmorDisplay 返回 9(ItemKnightArmour.java:262-276)

贴图分件

registerIcons 按部位加载不同数量的贴图(ItemKnightArmour.java:58-85):

部位 贴图
头盔 4 组 knight-base-helmet-<0..3> + knight-post-helmet-<0..3>,按纹章头盔样式索引(ItemKnightArmour.java:63-71, 96-107)
胸甲 / 护腿 / 靴子 各 1 张 knight-base-<type> + knight-post-<type>
护腿额外 1 张 knight-trim-legs(ItemKnightArmour.java:81-84)

数值

护甲材质

参数 值 来源
耐久系数 25 Battlegear.java:69
减伤 头 3 / 胸 7 / 腿 5 / 脚 3 Battlegear.java:69
附魔力 15 Battlegear.java:69
构造耐久倍率 1 ItemKnightArmour.java:45

移动惩罚 motionFactor

部位 motionFactor 每 tick 实际速度系数
胸甲 plate -0.20F × 0.80
护腿 legs -0.15F × 0.85
头盔 helmet -0.05F × 0.95
靴子 boots -0.05F × 0.95

来源:ItemKnightArmour.java:48-54。物品提示中以 attribute.modifier.take.2 格式显示 -motionFactor × 100%(ItemKnightArmour.java:138-142)。

ISpecialArmor 吸收属性

getProperties(ItemKnightArmour.java:244-255),其中 max = armor.getMaxDamage() + 1 - armor.getItemDamage()(剩余耐久):

护甲槽位 返回
slot == 1 或 slot == 2 ArmorProperties(1, 0.8D, max)
slot == 0 ArmorProperties(0, 0.6D, max)
slot == 3 ArmorProperties(0, 0.4D, max)
其他 null

交互

触发 行为
每 tick 穿带 motionX / motionZ 乘 (1 + motionFactor);上升时 motionY 同乘(ItemKnightArmour.java:284-289)
受到伤害 damageArmor 直接 stack.damageItem(damage, entity)(ItemKnightArmour.java:279-281)
穿带胸甲+护腿+靴子 护甲显示值变为 9(ItemKnightArmour.java:262-276)
物品提示 蓝色 +%d Armor(tooltip.armour.points)+ 红色移速惩罚(ItemKnightArmour.java:130-143)

提示中的 +%d Armor 使用 this.damageReduceAmount,该字段继承自原版 ItemArmor,其计算依赖原版实现,4 个部位的具体显示数值无法从本仓库核实。

合成配方

每个部位注册一个无序配方 KnightArmourRecipie(battlegear:knightarmor,after:minecraft:shapeless),共 4 个(BattlegearConfig.java:491-501)。

匹配规则(KnightArmourRecipie.java:45-64):合成栏中恰好 2 个物品,分别是同一部位的锁链甲与铁甲,且不得有第三个物品。位置不限。

部位 锁链甲 铁甲
头盔 Items.chainmail_helmet Items.iron_helmet
胸甲 Items.chainmail_chestplate Items.iron_chestplate
护腿 Items.chainmail_leggings Items.iron_leggings
靴子 Items.chainmail_boots Items.iron_boots

来源:KnightArmourRecipie.java:24-41。整个 knight.armour 配方组可由 Disabled Recipies 中的 knight.armour 一键关闭。

相关条目