Minecraft 1.18.1、1.18.2模组开发 08.盔甲套装

本文档介绍了如何在Java游戏中实现自定义盔甲材料。首先创建了一个名为CustomArmorMaterial的枚举类,定义了两个不同的盔甲套装,包括各自的属性如耐久度、护甲值、附魔能力等。然后在ItemInit中注册了对应的盔甲物品。最后,通过资源包制作,包括英文和中文本地化、模型文件和贴图,完成了盔甲在游戏内的完整呈现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们准备在模组中实现自己的一套盔甲装备

1.在Java包中新建一个util包,里面新建我们的盔甲属性枚举类CustomArmorMaterial

CustomArmorMaterial.java

package com.joy187.re8joymod.util;

import java.util.function.Supplier;

import com.joy187.re8joymod.init.ItemInit;

import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.util.LazyLoadedValue;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient;

public enum CustomArmorMaterial implements ArmorMaterial{
	  
	//在这里添加我们的盔甲属性	new int[] 四个位置分别为头、护腿、胸甲、鞋子
	ARMOR_MATERIAL_FRANKSUIT("franksuit", 80, new int[]{8, 13, 20, 12}, 35, SoundEvents.ARMOR_EQUIP_IRON, 7.0F, 0.8F, () -> {
	      return Ingredient.of(ItemInit.BLACKFEATHER.get());
	   }),
	ARMOR_MATERIAL_HUMUSSUIT("humussuit", 80, new int[]{4, 6, 8, 4}, 25, SoundEvents.SLIME_BLOCK_PLACE, 1.5F, 0.2F, () -> {
		      return Ingredient.of(ItemInit.BLACKFEATHER.get());
		   });


    private static final int[] baseDurability = { 13, 15, 16, 11 };
    private final String name;
    private final int durabilityMultiplier;
    private final int[] armorVal;
    private final int enchantability;
    private final SoundEvent equipSound;
    private final float toughness;
    private final float knockbackResistance;
    private final LazyLoadedValue<Ingredient> repairIngredient;
	
    private CustomArmorMaterial(String name, int durabilityMultiplier, int[] armorVal, int enchantability, SoundEvent equipSound, 
    		float toughness, float knockbackResistance, Supplier<Ingredient> repairIngredient) {
    	//盔甲属性名称
        this.name = name;
        //耐久度
        this.durabilityMultiplier = durabilityMultiplier;
        //四个位置的护甲值
        this.armorVal = armorVal;
        //附魔能力(越大附魔结果越好)
        this.enchantability = enchantability;
        //穿上盔甲的音效
        this.equipSound = equipSound;
        //盔甲韧性
        this.toughness = toughness;
        //抗击退效果
        this.knockbackResistance = knockbackResistance;
        //维修盔甲的材料
        this.repairIngredient = new LazyLoadedValue<>(repairIngredient);
     }
    
    @Override
    public int getDurabilityForSlot(EquipmentSlot slot) {
        return baseDurability[slot.getIndex()] * durabilityMultiplier;
    }
    
    
    @Override
    public int getDefenseForSlot(EquipmentSlot slot) {
        return this.armorVal[slot.getIndex()];
    }

    @Override
    public int getEnchantmentValue() {
        return this.enchantability;
    }


    @Override
    public SoundEvent getEquipSound() {
        return this.equipSound;
    }


    public Ingredient getRepairIngredient() {
        return this.repairIngredient.get();
     }

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public float getToughness() {
        return this.toughness;
    }

    @Override
    public float getKnockbackResistance() {
        return this.knockbackResistance;
    }
}

2.在ItemInit中添加我们的自定义套装

ItemInit.java

    //头盔
    public static final RegistryObject<Item> HUMUS_HELMET = ITEMS.register("humus_helmet", 
            () -> new ArmorItem(CustomArmorMaterial.ARMOR_MATERIAL_HUMUSSUIT,EquipmentSlot.HEAD,(new Item.Properties()).tab(Main.TUTORIAL_TAB)));
    //胸甲
    public static final RegistryObject<Item> HUMUS_CHESTPLATE = ITEMS.register("humus_chest", 
            () -> new ArmorItem(CustomArmorMaterial.ARMOR_MATERIAL_HUMUSSUIT,EquipmentSlot.CHEST,(new Item.Properties()).tab(Main.TUTORIAL_TAB)));
    //护腿
    public static final RegistryObject<Item> HUMUS_LEGGINGS = ITEMS.register("humus_leggings", 
            () -> new ArmorItem(CustomArmorMaterial.ARMOR_MATERIAL_HUMUSSUIT,EquipmentSlot.LEGS,(new Item.Properties()).tab(Main.TUTORIAL_TAB)));
    //靴子
    public static final RegistryObject<Item> HUMUS_BOOTS = ITEMS.register("humus_boots", 
            () -> new ArmorItem(CustomArmorMaterial.ARMOR_MATERIAL_HUMUSSUIT,EquipmentSlot.FEET,(new Item.Properties()).tab(Main.TUTORIAL_TAB)));

3.代码部分结束,来到资源包制作环节

resources\assets\你的modiden_us.json中添加我们盔甲的英文名称
	"item.re8joymod.humus_helmet":"E Humus Helmet",
	"item.re8joymod.humus_chest":"E Humus Chestplate",
	"item.re8joymod.humus_leggings":"E Humus Leggings",
	"item.re8joymod.humus_boots":"E Humus Boots",

zh_cn.json中添加中文名称:

	"item.re8joymod.humus_helmet":"头盔名",
	"item.re8joymod.humus_chest":"胸甲名",
	"item.re8joymod.humus_leggings":"护腿名",
	"item.re8joymod.humus_boots":"靴子名",
models\items包中添加四个盔甲部件的模型文件。

1.头盔
humus_helmet.json

{
	"parent": "item/generated",
	"textures": {
		"layer0": "re8joymod:item/humus_helmet"
	}
}

2.胸甲
humus_chest.json

{
	"parent": "item/generated",
	"textures": {
		"layer0": "re8joymod:item/humus_chest"
	}
}

3.护腿
humus_leggings.json

{
	"parent": "item/generated",
	"textures": {
		"layer0": "re8joymod:item/humus_leggings"
	}
}

4.靴子
humus_boots.json

{
	"parent": "item/generated",
	"textures": {
		"layer0": "re8joymod:item/humus_boots"
	}
}
textures\item中添加我们手持盔甲的贴图

cr2.png

textures\models\armor中添加我们穿上后的贴图

cr3.png

保存所有文件 -> 进入游戏测试

armor.png

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay_fearless

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值