(この記事は一連の解説記事の一つになります)
先頭記事:入門編
前の記事:0. 基本ファイル
次の記事:2. ブロックの追加
アイテムの追加
まずはマイクラのModdingにおける「Hello, World!」である、無機能アイテムの追加をしてみましょう。
メインのファイルに書いても勿論いいのですが、増えていくと後々ごちゃごちゃするので、アイテムを管理するクラスを作ってそちらに書いていきます。
\src\main\java\jp\koteko\example_mod\
├ ExampleMod.java
└ lists
└ ItemList.java
package jp.koteko.example_mod.lists;
import jp.koteko.example_mod.ExampleMod;
import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(modid = ExampleMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ItemList {
public static Item ExampleIngot = new Item(new Item.Properties().group(ItemGroup.MISC))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_ingot"));
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
event.getRegistry().registerAll(
ExampleIngot
);
}
}
また、メインファイルにも少し変更を加えます。
//...
@Mod(ExampleMod.MOD_ID) // 変更
public class ExampleMod
{
public static final String MOD_ID = "example_mod"; // 追記
//...
}
さてゲームを起動してみましょう。
クリエイティブでアイテムを確認するとなにやら怪しげな黒と紫のitem.example_mod.example_ingot
なるアイテムが増えているのが確認できると思います。これから嫌というほど見ることになるこの黒紫は、対応するテクスチャが見つからなかった時の表示です。
コードの簡単な説明
// @で始まる行(アノテーション) 書いておくといい感じに色々してくれるらしい
@Mod.EventBusSubscriber(modid = ExampleMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ItemList {
// メンバ変数としてアイテムを宣言、初期化しておく
// group()でクリエイティブタブの設定 ItemGroup.MISCはMiscellaneous(その他)
// setRegistryNameで登録するアイテムIDの設定をしている
// "example_ingot"の部分が登録されるアイテムID 小文字
public static Item ExampleIngot = new Item(new Item.Properties().group(ItemGroup.MISC))
.setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_ingot"));
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
// registerAll()で引数に渡されたItemクラスのインスタンスを登録する
// 引数はカンマ区切りで複数渡せる
event.getRegistry().registerAll(
ExampleIngot
);
}
}
\src\main\resources
└ assets
└ example_mod
├ lang
│ └ en_us.json
│ └ ja_jp.json
├ models
│ └ item
│ └ example_ingot.json
└ textures
└ items
└ example_ingot.png
lang
以下のjsonファイルでは、各言語における表示を定めます。プログラム中ではIDで管理し、ディスプレイネームはこちらで記述する形です。
models
以下のjsonファイルは、テクスチャをどう適用するかを定めます。ファイル名は[対応するアイテムID].jsonとします。
textures
以下にはテクスチャファイルを配置します。
次に中身を書いていきましょう。
{
"item.example_mod.example_ingot": "Example Ingot"
}
{
"item.example_mod.example_ingot": "例インゴット"
}
"item.MOD_ID.アイテムID": "表示名"
{
"parent": "item/generated",
"textures": {
"layer0": "example_mod:items/example_ingot"
}
}
MOD_ID:items/[テクスチャファイル名]
表示の細かい設定にはモデルファイルが重要になりますが、ここでは省略します。
example_ingot.png
を適当に用意して配置したら再度ゲームを起動してみます。
アイテムの追加ができました!
発展
Q. ツールを作りたい
A. 4. ツールの追加で解説します。
Q. 対応したレシピを作りたい
A. 6. レシピの追加で解説します。
Q. 食べ物を作りたい
A. 未定です(どこかで書きたい)。
参考
Minecraft 1.14.4 Forge Modの作成 その3 【無機能アイテムの追加】