このシリーズのまとめはこちら:
umagame.hatenablog.jp
どうも~~~~
はじめに
今回は防具を作ります。
実は前回のときに一緒に作ればよかったのですが、長くなりそうなのでやめました。
前回:
umagame.hatenablog.jp
防具をつくる
アーマーマテリアルクラス
<前回と同じように、こちらも修正記事のものを参考にしてクラスを作ってください。>
umagame.hatenablog.jp
前回と同じように、防具のステータスを決めるクラスを作ります。
前回作ったtoolパッケージに入れようかと思いましたが、今回は新しくパッケージを作っておきます。
IArmorMaterialを実装して、メソッドを追加。
package com.umagame.dirtmod.item.armor;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.SoundEvent;
public class ArmorMaterialDirt implements IArmorMaterial{
@Override
public int getDurability(EquipmentSlotType slotIn) {
TODO
return 0;
}
@Override
public int getDamageReductionAmount(EquipmentSlotType slotIn) {
TODO
return 0;
}
@Override
public int getEnchantability() {
TODO
return 0;
}
@Override
public SoundEvent getSoundEvent() {
TODO
return null;
}
@Override
public Ingredient getRepairMaterial() {
TODO
return null;
}
@Override
public String getName() {
TODO
return null;
}
@Override
public float getToughness() {
TODO
return 0;
}
}
上から順に耐久力、アーマーポイント(体力バーの上のやつ)、エンチャント力(前記事参照)、サウンドイベント(つけたときの音)、修理の素材、マテリアルのID、防具強度です。
防具強度はバニラではダイヤ防具にだけついています。(これがなんなのかはわからない)
今回は
- 耐久力:チェーンと同じ
- アーマーポイント:チェーンと同じ(2、5、4、1)
- エンチャント力:鉄と同じ
- サウンドイベント:革と同じ
- 修理の素材:圧縮された土ブロック
- タフネス:なし
にします。
なのでコードはこんな感じ。(耐久力、アーマーポイントは防具の部位によって変わります)
import com.umagame.dirtmod.block.BlockSuperCompressedDirt;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorMaterial;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
public class ArmorMaterialDirt implements IArmorMaterial{
@Override
public int getDurability(EquipmentSlotType slotIn) {
int durability = 0;
if(slotIn == EquipmentSlotType.HEAD) {
durability = 166;
}else if(slotIn == EquipmentSlotType.CHEST) {
durability = 241;
}else if(slotIn == EquipmentSlotType.LEGS) {
durability = 226;
}else if(slotIn == EquipmentSlotType.FEET) {
durability = 196;
}
return durability;
}
@Override
public int getDamageReductionAmount(EquipmentSlotType slotIn) {
int damageReduction = 0;
if(slotIn == EquipmentSlotType.HEAD) {
damageReduction = 2;
}else if(slotIn == EquipmentSlotType.CHEST) {
damageReduction = 5;
}else if(slotIn == EquipmentSlotType.LEGS) {
damageReduction = 4;
}else if(slotIn == EquipmentSlotType.FEET) {
damageReduction = 1;
}
return damageReduction;
}
@Override
public int getEnchantability() {
return ArmorMaterial.IRON.getEnchantability();
}
@Override
public SoundEvent getSoundEvent() {
return SoundEvents.ITEM_ARMOR_EQUIP_LEATHER;
}
@Override
public Ingredient getRepairMaterial() {
return Ingredient.fromItems(new BlockSuperCompressedDirt().asItem());
}
@Override
public String getName() {
return "dirtmod:dirt";
}
@Override
public float getToughness() {
return ArmorMaterial.CHAIN.getToughness();
}
}
アーマーマテリアルクラスはこれでOK。
防具のクラス
防具のクラスを作ります。
防具はArmorItemクラスを継承して作ります。
package com.umagame.dirtmod.item.armor;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
import net.minecraft.item.IArmorMaterial;
public class ItemDirtHelmet extends ArmorItem{
public ItemDirtHelmet(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) {
super(materialIn, slot, builder);
}
}
アーマーマテリアル、部位、プロパティー、IDを設定します。
package com.umagame.dirtmod.item.armor;
import com.umagame.dirtmod.main.DirtMod;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ArmorItem;
public class ItemDirtHelmet extends ArmorItem{
public ItemDirtHelmet() {
super(new ArmorMaterialDirt(),EquipmentSlotType.HEAD,new Properties().group(DirtMod.DIRTMOD_TAB));
this.setRegistryName("dirt_helmet");
}
}
他の部位も作ります。(チェストプレートはEquipmentSlotTypeのCHEST、レギンスはLEGS、ブーツはFEET)
防具を登録
前回同様にItemsクラスに登録します。
起動するとちゃんと追加されていることが分かります。
テクスチャ、名前
以前の記事と同様に、テクスチャと名前を設定します。
ですが防具を着たときのテクスチャも追加する必要があります。
こんな感じのやつ。
これをassets/ModのID/textures/models/armorに、マテリアルのID_layer_1.pngとマテリアルのID_layer_2.pngで保存します。
これでOKです。
さいごに
今回はここまでです。
次回:
umagame.hatenablog.jp