一. 老规矩现有Item再有工具,先注册一个EXAMPLE_SWORD(示例剑)

二. 创建一个枚举类ExampleTier,实现 Tier 接口

Tier可以用于表示Minecraft中自定义工具的等级或品质
如果想要其他工具实现其他接口就行了,如镐(pickaxe)等等...

public enum ExampleTier implements Tier {
    private final int level;
    private final int uses;
    private final float speed;
    private final float damage;
    private final int enchantmentValue;
    private final Supplier<Ingredient> repairIngredient;
    @Override
    public int getUses() {
        return this.uses;
    }
    @Override
    public float getSpeed() {
        return this.speed;
    }
    @Override
    public float getAttackDamageBonus() {
        return this.damage;
    }
    @Override
    public int getLevel() {
        return this.level;
    }
    @Override
    public int getEnchantmentValue() {
        return this.enchantmentValue;
    }
    @Override
    public Ingredient getRepairIngredient() {
        return this.repairIngredient.get();
    }
}

实现接口的方法及创建需要的变量

三. 创建构造方法

ExampleTier(int level, int uses, float speed, float damage, int enchantmentValue, Supplier<Ingredient> repairIngredient) {
        this.level = level;
        this.uses = uses;
        this.speed = speed;
        this.damage = damage;
        this.enchantmentValue = enchantmentValue;
        this.repairIngredient = repairIngredient;
    }

参数含义

四. 创建实例对象

    Example(3,2000,10F,100F,30,() -> Ingredient.of(Registry.EXAMPLE_ITEM_01.get()));

创建了一个等级为3,使用次数为2000,挖掘速度为10,伤害为100,附魔等级为30,修复材料为EXAMPLE_ITEM_01的工具材质

五. 调用实例

将注册改为如下形式

public static final Supplier<Item> EXAMPLE_SWORD=ITEMS.register("example_sword",
            () ->new SwordItem(ExampleTier.Example,100,0.1f,new Item.Properties()));

附完整代码

import net.minecraft.world.item.Tier;
import net.minecraft.world.item.crafting.Ingredient;

import java.util.function.Supplier;

public enum ExampleTier implements Tier {
    Example(4,2000,10F,100F,30,() -> Ingredient.of(Registry.EXAMPLE_ITEM_01.get()));

    private final int level;
    private final int uses;
    private final float speed;
    private final float damage;
    private final int enchantmentValue;
    private final Supplier<Ingredient> repairIngredient;
    ExampleTier(int level, int uses, float speed, float damage, int enchantmentValue, Supplier<Ingredient> repairIngredient) {
        this.level = level;
        this.uses = uses;
        this.speed = speed;
        this.damage = damage;
        this.enchantmentValue = enchantmentValue;
        this.repairIngredient = repairIngredient;
    }
    @Override
    public int getUses() {
        return this.uses;
    }

    @Override
    public float getSpeed() {
        return this.speed;
    }

    @Override
    public float getAttackDamageBonus() {
        return this.damage;
    }

    @Override
    public int getLevel() {
        return this.level;
    }

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

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