马铠 1.21 Fabric
本篇教程的视频
本篇教程的源代码
Github地址:TutorialMod-HorseArmor-1.21
介绍
马铠
在游戏中也是一种盔甲类物品,它可以装备在马身上,提供护甲值
这个也是盔甲类物品的衍生,只是它是为我们的动物准备的
并且在1.21
的版本中,还加入了狼铠
,前面我们在讲盔甲的时候也提到过一个BODY
部位的东西,这个量是给狼铠的基础护甲值
然而,目前因为狼铠只有一种材质,它在源代码中是硬编码的,要想新增新的狼铠,我个人认为是要等它和马铠一样,拥有不同材质的时候才好写
现在要写的话就得用Mixin
来修改源代码了,待会我们也可以提一下
查看源代码
马铠物品
我们以IRON_HORSE_ARMOR
为例,先来看它的注册
1 | public static final Item IRON_HORSE_ARMOR = register( |
它实例化的是AnimalArmorItem
,然后这里面的参数是和我们之前写的玩家的盔甲差不多的
ArmorMaterials
是和玩家盔甲材质共用的
后面的Type
是EQUESTRIAN
,这个是马铠的类型,这个是可以直接调用的
false
是没有第二层材质
最后是Item.Settings
,这个是物品的设置
然后其他的我们就不用看了,我们写的时候就参照这个来写就行了
狼铠物品
虽然本篇教程不会写狼铠,但是我们还是可以看一下它相关的源代码,解释一下为什么要使用Mixin
才有可能新增狼铠
1 | public static final Item WOLF_ARMOR = register( |
WOLF_ARMOR
的注册和IRON_HORSE_ARMOR
一样,只是这里的Type
是CANINE
,这个是狼铠的类型
然后还有一个maxDamage
,这个也是狼铠的耐久值,里面的数字也是乘数,其计算逻辑是和我们前面写的玩家的盔甲一样的,这里就不再赘述
随后我们来看看这个字段它使用在什么地方
1 |
|
这个是WolfEntity
的interactMob
方法,这个是玩家与狼交互的方法
这里我们就可以发现,这里用的是itemStack.isOf(Items.WOLF_ARMOR)
,这个是硬编码的,所以我们要新增狼铠的话,就得用Mixin
来修改这个源代码
当然,不只是要改这里的代码,还有其他的地方,感兴趣的话可以自行研究,这里就不再赘述
注册马铠
注册物品
那我们现在就来注册一个马铠
1 | public static final Item ICE_ETHER_HORSE_ARMOR = registerItems("ice_ether_horse_armor", |
这个就是我们新增的马铠
ICE_ETHER
是我们之前玩家盔甲的材质,直接用就好了
其他的参数是和IRON_HORSE_ARMOR
一样的,我们照着写一下就好了
加入物品栏
然后我们把这个物品加入物品栏
1 | entries.add(ModItems.ICE_ETHER_HORSE_ARMOR); |
数据文件
语言文件
1 | translationBuilder.add(ModItems.ICE_ETHER_HORSE_ARMOR, "Ice Ether Horse Armor"); |
这个是物品的名字,我们把它翻译一下
模型文件
1 | itemModelGenerator.register(ModItems.ICE_ETHER_HORSE_ARMOR, Models.GENERATED); |
这个是物品的模型,用GENERATED
即可
材质文件
材质文件的路径是resources/assets/tutorialmod/textures/entity/horse/armor
然后材质文件的命名是horse_armor_<材质名>.png
,比如这里就是horse_armor_ice_ether.png
,它的材质名是后置的