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 一键关闭。
相关条目
- Chain - 锁链甲的合成材料
- Heraldic Crest - 纹章编辑器入口,用于给盔甲绘制纹章
- 禁用内容配置 -
knight.armour可整体禁用