Skip to main content

添加盔甲

创建盔甲材料类

该类必须引入ArmorMaterial

public class CustomArmorMaterial implements ArmorMaterial {    
private static final EnumMap<ArmorItem.Type, Integer> BASE_DURABILITY;
private static final EnumMap<ArmorItem.Type, Integer> PROTECTION_VALUES;

static {
BASE_DURABILITY = Util.make(new EnumMap(ArmorItem.Type.class), map -> {
map.put(ArmorItem.Type.BOOTS, 13);
map.put(ArmorItem.Type.LEGGINGS, 15);
map.put(ArmorItem.Type.CHESTPLATE, 16);
map.put(ArmorItem.Type.HELMET, 11);
});
}

static {
// 皮革使用{1, 2, 3, 1},钻石和下界合金使用{3, 6, 8, 3}
PROTECTION_VALUES = Util.make(new EnumMap(ArmorItem.Type.class), map -> {
map.put(ArmorItem.Type.BOOTS, 4);
map.put(ArmorItem.Type.LEGGINGS, 7);
map.put(ArmorItem.Type.CHESTPLATE, 9);
map.put(ArmorItem.Type.HELMET, 4);
});
};
}

该类必须重写以下方法

小提示

直接对于该类使用Alt + EnterIEDA会自动修复错误,会弹出重写窗口,我们直接点确定即可!(非常方便)

@Override
public int getDurability(ArmorItem.Type type) {
return BASE_DURABILITY.get(type) * 40;
}

@Override
public int getProtection(ArmorItem.Type type) {
return PROTECTION_VALUES.get(type);
}

@Override
public int getEnchantability() {
return 15;
}

@Override
public SoundEvent getEquipSound() {
return SoundEvents.ITEM_ARMOR_EQUIP_NETHERITE;
}

/**
* 基于某种矿石
* @return 材料
*/
@Override
public Ingredient getRepairIngredient() {
return Ingredient.ofItems();
}

@Override
public String getName() {
return "gilded_netherite";
}

@Override
public float getToughness() {
return 3.0F;
}

@Override
public float getKnockbackResistance() {
return 0.1F;
}

注册物品

小提示:

这里是自己实现了一个专用驻注册物品的类

public static final Item GILDED_NETHERITE = new GildedNetheriteItem(new Item.Settings());
public static final Item GILDED_NETHERITE_HELMET = new ArmorItem(gildedNetheriteArmorMaterial, ArmorItem.Type.HELMET, new Item.Settings());
public static final Item GILDED_NETHERITE_CHESTPLATE = new ArmorItem(gildedNetheriteArmorMaterial, ArmorItem.Type.CHESTPLATE, new Item.Settings());
public static final Item GILDED_NETHERITE_LEGGINGS = new ArmorItem(gildedNetheriteArmorMaterial, ArmorItem.Type.LEGGINGS, new Item.Settings());
public static final Item GILDED_NETHERITE_BOOTS = new ArmorItem(gildedNetheriteArmorMaterial, ArmorItem.Type.BOOTS, new Item.Settings());

public static void register() {

Registry.register(Registries.ITEM, new Identifier("modid", "gilded_netherite"), GILDED_NETHERITE);

Registry.register(Registries.ITEM, new Identifier("modid", "gilded_netherite_helmet"), GILDED_NETHERITE_HELMET);
Registry.register(Registries.ITEM, new Identifier("modid", "gilded_netherite_chestplate"), GILDED_NETHERITE_CHESTPLATE);
Registry.register(Registries.ITEM, new Identifier("modid", "gilded_netherite_leggings"), GILDED_NETHERITE_LEGGINGS);
Registry.register(Registries.ITEM, new Identifier("modid", "gilded_netherite_boots"), GILDED_NETHERITE_BOOTS);
}