我的世界mod开发(6)无敌的护甲

现在,我们有了一把无敌的剑,但仅靠这些显然是不够的,我们还需要一套无敌的盔甲,具体要实现:无视伤害,全套时可以飞行

直接上代码 

ItemDirtArmor.java:

package fenge.fmltutor.item;

import fenge.fmltutor.ExampleMod;
import fenge.fmltutor.creativetab.TabFMLTutor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
//继承ItemArmor
public class ItemDirtArmor extends ItemArmor
{

    public ItemDirtArmor(EntityEquipmentSlot equipmentSlot)
    {
        //设置盔甲属性
        super(ItemRegistryHandler.DIRT_ARMOR_MATERIAL, 0, equipmentSlot);
        this.setUnlocalizedName(ExampleMod.MODID + ".dirtArmor." + equipmentSlot.getName());
        //设置UnlocalizedName
        this.setRegistryName("dirt_armor_" + equipmentSlot.getName());
        //设置RegistryName
        this.setCreativeTab(TabFMLTutor.TAB_FMLTUTOR);
        //设置所在物品栏
        }
    //没用的属性
    public  Boolean ZT = false;
    //当盔甲被穿上时调用
    @SideOnly(Side.CLIENT)
    @Override
    public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){
       if (player.inventory.armorItemInSlot(2).getItem()==ItemRegistryHandler.DIRT_CHESTPLATE &&
               player.inventory.armorItemInSlot(2)!=null ||
               player.inventory.armorItemInSlot(3).getItem()==ItemRegistryHandler.DIRT_HELMET &&
               player.inventory.armorItemInSlot(3)!=null ||
               player.inventory.armorItemInSlot(0).getItem()==ItemRegistryHandler.DIRT_BOOTS &&
                       player.inventory.armorItemInSlot(0)!=null ||
               player.inventory.armorItemInSlot(1).getItem()==ItemRegistryHandler.DIRT_LEGGINGS &&
                       player.inventory.armorItemInSlot(1)!=null) {
           //只要穿上其中的一件,就赋予急迫III,生命恢复三,并将血量设为满血
           effectPlayer(player, MobEffects.HASTE,10,3);
           effectPlayer(player, MobEffects.REGENERATION,10,3);
           //TODO effectPlayer(player, PotionRegistryHandler.POTION_DIRT_PROTECTION,10,5);
           player.setHealth(20.00F);

           this.ZT=true;
       }else
           this.ZT=false;
        if (player.inventory.armorItemInSlot(2).getItem()==ItemRegistryHandler.DIRT_CHESTPLATE &&
                player.inventory.armorItemInSlot(2)!=null &&
                player.inventory.armorItemInSlot(3).getItem()==ItemRegistryHandler.DIRT_HELMET &&
                        player.inventory.armorItemInSlot(3)!=null &&
                player.inventory.armorItemInSlot(0).getItem()==ItemRegistryHandler.DIRT_BOOTS &&
                        player.inventory.armorItemInSlot(0)!=null &&
                player.inventory.armorItemInSlot(1).getItem()==ItemRegistryHandler.DIRT_LEGGINGS &&
                        player.inventory.armorItemInSlot(1)!=null) {
            player.capabilities.isFlying=true;
            //如果全部穿上便赋予可以飞行的能力
        } else if (!player.capabilities.isCreativeMode) {
            //否则不可以飞(创造以外)
            player.capabilities.isFlying=false;

        }



        super.onArmorTick(world,player,itemStack);
    }
    private void effectPlayer(EntityPlayer player, Potion effect,int duration,int amplifier){
        //赋予药水效果的方法
        if(player.getActivePotionEffect(effect)==null || player.getActivePotionEffect(effect).getDuration()<=1){
            player.addPotionEffect(new PotionEffect(effect,duration,amplifier,false,true));

        }
    }

    
}





 然后在ItemRegistryHandler中添加盔甲属性:

//参数分别是材质(枚举类名),盔甲名称前缀,耐久基数(鞋=基数*13,裤子=基数*15,衣服=基数*16,头盔=基数*11),防御点数{鞋子,裤子,衣服,头盔} ,穿上盔甲时发出的声音,盔甲韧性
public static final ItemArmor.ArmorMaterial DIRT_ARMOR_MATERIAL = EnumHelper.addArmorMaterial("DIRT",
            ExampleMod.MODID+":dirt",1000000000,new int[] {3,8,6,3},9, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND
    ,2);

再在ItemRegistryHandler中添加盔甲:

    public static final ItemDirtArmor DIRT_BOOTS = new ItemDirtArmor(EntityEquipmentSlot.FEET);
    //鞋
    public static final ItemDirtArmor DIRT_LEGGINGS = new ItemDirtArmor(EntityEquipmentSlot.LEGS);
    //裤子
     public static final ItemDirtArmor DIRT_CHESTPLATE = new ItemDirtArmor(EntityEquipmentSlot.CHEST);
    //衣服
     public static final ItemDirtArmor DIRT_HELMET = new ItemDirtArmor(EntityEquipmentSlot.HEAD);
    //头盔

在ItemRegistryHandler中将他们注册:

    @SubscribeEvent
    public static void onRegistry(Register<Item> event)
    {
        IForgeRegistry<Item> registry= event.getRegistry();
        //省略亿行代码(注册的有别的东西)
        registry.register(DIRT_BOOTS);
        registry.register(DIRT_LEGGINGS);
        registry.register(DIRT_CHESTPLATE);
        registry.register(DIRT_HELMET);
    }

在ItemRegistryHandler中将他们的模型注册:

    @SideOnly(Side.CLIENT)
    private static void registerModel(Item item)
    {
        ModelResourceLocation modelResourceLocation = new ModelResourceLocation(item.getRegistryName(), "inventory");
        ModelLoader.setCustomModelResourceLocation(item, 0, modelResourceLocation);
    }

    @SubscribeEvent
    @SideOnly(Side.CLIENT)
    public static void onModelRegistry(ModelRegistryEvent event)
    {
        registerModel(DIRT_CHESTPLATE);
        registerModel(DIRT_BOOTS);
        registerModel(DIRT_HELMET);
        registerModel(DIRT_LEGGINGS);
    }

添加模型(src\main\resources\assets\fmltutor\blockstates) :

#dirt_armor_chest,json

{
  "forge_marker": 1,
  "defaults": {
    "model": "minecraft:builtin/generated",
    "textures": { "layer0": "fmltutor:items/dirt_armor_chest" }
  },
  "variants": {
    "inventory": [{ "transform": "forge:default-item" }]
  }
}

#dirt_armor_feet.json

{
  "forge_marker": 1,
  "defaults": {
    "model": "minecraft:builtin/generated",
    "textures": { "layer0": "fmltutor:items/dirt_armor_feet" }
  },
  "variants": {
    "inventory": [{ "transform": "forge:default-item" }]
  }
}

#dirt_armor_head.json

{
  "forge_marker": 1,
  "defaults": {
    "model": "minecraft:builtin/generated",
    "textures": { "layer0": "fmltutor:items/dirt_armor_head" }
  },
  "variants": {
    "inventory": [{ "transform": "forge:default-item" }]
  }
}

#dirt_armor_legs.json

{
  "forge_marker": 1,
  "defaults": {
    "model": "minecraft:builtin/generated",
    "textures": { "layer0": "fmltutor:items/dirt_armor_legs" }
  },
  "variants": {
    "inventory": [{ "transform": "forge:default-item" }]
  }
}

添加图片(src\main\resources\assets\fmltutor\textures\items) :
#dirt_armor_head.png:

                                                               #dirt_armor_chest.png:

                                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​   

                                                                #dirt_armor_legs.png:

                                               

                                    #dirt_armor_feet. png                             

                                                                          

                        添加语言(src\main\resources\assets\fmltutor\lang):

   #zh_cn                           

item.fmltutor.dirtArmor.feet.name=俺滴靴子
item.fmltutor.dirtArmor.legs.name=俺滴护腿
item.fmltutor.dirtArmor.chest.name=俺滴胸甲
item.fmltutor.dirtArmor.head.name=俺滴头盔

 #en_us

item.fmltutor.dirtArmor.feet.name=dirt boots
item.fmltutor.dirtArmor.legs.name=dirt leggings
item.fmltutor.dirtArmor.chest.name=dirt chestplate
item.fmltutor.dirtArmor.head.name=dirt helmet

 让我们康康效果:

俺滴盔甲

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值