アイテムティア(ItemTier)クラス
まず、アイテムティア(ツールの素材)のクラスを作っていきます。
itemパッケージに作成します。
名前はItemTierにしましたが、マインクラフト自体のクラスと被るのであまりおすすめしません。
今回も前シリーズと同様に、IItemTierを継承したenum型にします。
IItemTierをインポートして、
メソッドを追加。
メソッドは多めです。
次に、メソッドの戻り値をprivate変数で置き換えます。あとコンストラクタも追加しておきます。
(変数の説明、ソースコードは下記参照)
そして、一番上に新しくアイテムティアを追加します。今回は「DRAGON」という名前です。
maxUsesは耐久値です。ダイヤと同じ1561にしました。
efficiencyは採掘の効率(速さ)です。こちらはネザライトと同じ8.0にしました。
attackDamageはダメージ量です。こちらもネザライトと同じに。
harvestLevelはブロックのときに解説したように、ツールのランクです。今回はダイヤと同じ3。
enchantabilityは良いエンチャントのつきやすさ...だと思います。(詳しくは知らないので、間違っているかもしれません。とりあえずダイヤと同じにしました)
repairMaterialはツールを金床で修復するときに使う素材です。Ingredient型なので注意。
これらの値がバニラではどうなっているかは、Eclipseでマインクラフトのコードをのぞけばわかります。(下記参照)
コードはこちら。(ItemTier.java)
package com.umagame.uhcitemsmod.item;
import net.minecraft.item.IItemTier;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
public enum ItemTier implements IItemTier{
DRAGON(1561, 8.0F, 4.0F, 3, 10, Ingredient.fromItems(Items.DIAMOND));
private final int maxUses;
private final float efficiency;
private final float attackDamage;
private final int harvestLevel;
private final int enchantability;
private final Ingredient repairMaterial;
private ItemTier(int maxUses, float efficiency, float attackDamage, int harvestLevel, int enchantability, Ingredient repairMaterial) {
this.maxUses = maxUses;
this.efficiency = efficiency;
this.attackDamage = attackDamage;
this.harvestLevel = harvestLevel;
this.enchantability = enchantability;
this.repairMaterial = repairMaterial;
}
@Override
public int getMaxUses() {
return maxUses;
}
@Override
public float getEfficiency() {
return efficiency;
}
@Override
public float getAttackDamage() {
return attackDamage;
}
@Override
public int getHarvestLevel() {
return harvestLevel;
}
@Override
public int getEnchantability() {
return enchantability;
}
@Override
public Ingredient getRepairMaterial() {
return repairMaterial;
}
}
ツールのクラス
ツールのアイテムのクラスを作ります。
itemパッケージに作ります。
継承するクラスはツールの種類によって変わります。(ソースコードは下記参照)
インポートして、
コンストラクタを追加。
superの後に、アイテムティア、ダメージ量、振る速さ、Propertiesです。今回はrarityを使ってレアリティをアンコモンにしてみました。
ツールの数だけ、これを繰り返します。(剣、斧、ツルハシ、シャベル、クワなので5個クラスを作ることになります)
通常のアイテムと同じように、ItemInit(アイテム登録用クラス)でツールのアイテムを追加します。
modelsのファイルは、parentのところを「handheld」にしておきましょう。
こうしないと、プレイヤーがこのツールを持ったときに小さく表示されてしまいます。
その他のファイル(テクスチャ、langなど)は通常のアイテムと同様にやってください。
コードはこちら。(DragonSwordItem.java、DragonPickaxeItem.java、DragonAxeItem.java、DragonShovelItem.java、DragonHoeItem.java)
package com.umagame.uhcitemsmod.item;
import com.umagame.uhcitemsmod.init.ItemGroupInit;
import net.minecraft.item.Rarity;
import net.minecraft.item.SwordItem;
public class DragonSwordItem extends SwordItem{
public DragonSwordItem() {
super(ItemTier.DRAGON, 3, -2.4F, new Properties().group(ItemGroupInit.UHCITEMS_MOD).rarity(Rarity.UNCOMMON));
}
}
package com.umagame.uhcitemsmod.item;
import com.umagame.uhcitemsmod.init.ItemGroupInit;
import net.minecraft.item.PickaxeItem;
import net.minecraft.item.Rarity;
public class DragonPickaxeItem extends PickaxeItem{
public DragonPickaxeItem() {
super(ItemTier.DRAGON, 1, -2.8F, new Properties().group(ItemGroupInit.UHCITEMS_MOD).rarity(Rarity.UNCOMMON));
}
}
package com.umagame.uhcitemsmod.item;
import com.umagame.uhcitemsmod.init.ItemGroupInit;
import net.minecraft.item.AxeItem;
import net.minecraft.item.Rarity;
public class DragonAxeItem extends AxeItem{
public DragonAxeItem() {
super(ItemTier.DRAGON, 5.0F, -3.0F, new Properties().group(ItemGroupInit.UHCITEMS_MOD).rarity(Rarity.UNCOMMON));
}
}
package com.umagame.uhcitemsmod.item;
import com.umagame.uhcitemsmod.init.ItemGroupInit;
import net.minecraft.item.Rarity;
import net.minecraft.item.ShovelItem;
public class DragonShovelItem extends ShovelItem{
public DragonShovelItem() {
super(ItemTier.DRAGON, 1.5F, -3.0F, new Properties().group(ItemGroupInit.UHCITEMS_MOD).rarity(Rarity.UNCOMMON));
}
}
package com.umagame.uhcitemsmod.item;
import com.umagame.uhcitemsmod.init.ItemGroupInit;
import net.minecraft.item.HoeItem;
import net.minecraft.item.Rarity;
public class DragonHoeItem extends HoeItem{
public DragonHoeItem() {
super(ItemTier.DRAGON, -4, 0, new Properties().group(ItemGroupInit.UHCITEMS_MOD).rarity(Rarity.UNCOMMON));
}
}