今天我們來做一組以隕鐵為原料的工具,首先我們需要先將Siderite作為工具原料
在item資料夾底下建立ModToolMaterial,然後我們這樣寫
public enum ModToolMaterial implements ToolMaterial {
SIDERITE(4,2000,4.5f,3.5f,26,()-> Ingredient.ofItems(Moditems.Siderite));
private final int miningLevel;
private final int itemDurability;
private final float miningSpeed;
private final float attackDamage;
private final int enchantability;
private final Supplier<Ingredient> repairIngredient;
ModToolMaterial(int miningLevel, int itemDurability, float miningSpeed, float attackDamage, int enchantability, Supplier<Ingredient> repairIngredient) {
this.miningLevel = miningLevel;
this.itemDurability = itemDurability;
this.miningSpeed = miningSpeed;
this.attackDamage = attackDamage;
this.enchantability = enchantability;
this.repairIngredient = repairIngredient;
}
@Override
public int getDurability() {
return this.itemDurability;
}
@Override
public float getMiningSpeedMultiplier() {
return this.miningSpeed;
}
@Override
public float getAttackDamage() {
return this.attackDamage;
}
@Override
public int getMiningLevel() {
return this.miningLevel;
}
@Override
public int getEnchantability() {
return this.enchantability;
}
@Override
public Ingredient getRepairIngredient() {
return this.repairIngredient.get();
}
}
首先 ModToolMaterial 是一個枚舉類型,實現了ToolMaterial介面,目的是設置自定義的材料的數值,像是挖掘速度等等。
SIDERITE(4,2000,4.5f,3.5f,26,()-> Ingredient.ofItems(Moditems.Siderite));
這一行分別定義了他的挖掘等級、物品耐久、挖掘速度、攻擊傷害、附魔性以及修理工具時所需要的原料。
這裡挖掘等級為4,作為比較,鑽石的挖掘等級為3,所以這個工具比鑽石高一階。
2000代表物品的耐久度,這是蠻高的耐久。
4.5F代表挖掘速度,3.5F代表傷害、26代表物品獲得強力附魔的機率、最後是Siderite作為修復用的材料
最後我們一一返回這些設定