Minecraft 1.14.4 Forge Modの作成 その3 【無機能アイテムの追加】

# はじめに
クラフトの素材になるような無機能アイテムの追加をしてみます。
![2019-09-16_19.11.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/fae79238-0c5e-13a8-cdc8-5d7c3000c284.png)

参考
[Minecraft Modding Tutorial for MC 1.14/1.14.3 - Basic Items](https://www.youtube.com/watch?v=YRCtFeECB8M)

# 💻開発環境
ここでは環境は以下のようにします。

- Windows 10
- JDK 8u211
- Minecraft 1.14.4
- Minecraft Forge 1.14.4 (28.1.0)
- IntelliJ IDEA 2019.1.4

# パッケージの作成
アイテムの宣言はメインクラス外のクラスでしようと思います。
今後、ブロックの宣言をすることもあるので、それらをまとめるパッケージを作成しておくことにします。

また、アイテムを追加する際に必要になる`lang`、`models/item`、`textures/items`フォルダも作成しておきます。
フォルダ名の単数、複数形には気を付けてください。

```
└─src
    └─main
        ├─java
        │  └─jp
        │      └─yuyu
        │          └─biwako_mod
        │              │  BiwakoMod.java
        │              │
        │              └─*lists
        │                      *ItemList.java
        │
        └─resources
            │  logo.png
            │  pack.mcmeta
            │
            ├─assets
            │  └─biwako_mod
            │      ├─*lang
            │      ├─*models
            │      │  └─*item
            │      └─*textures
            │          └─*items
            └─META-INF
                    mods.toml
```

# アイテムの宣言
作成した`list`フォルダ内に`ItemList.java`を作成しアイテムの宣言だけ記述します。
琵琶湖インゴット、略して`琵ンゴット`を追加しようと思います。(ナニソレ)

```java:ItemList.java
package jp.yuyu.biwako_mod.lists;

import net.minecraft.item.Item;

public class ItemList {
    public static Item BiwakoIngot;
}
```

# アイテムの登録
まず、`RegistryEvents`クラス内にアイテムの登録用メソッドを記述します。
その中で`Item`クラスのインスタンスを作成し、登録します。  
`group(ItemGroup.MISC)`でクリエイティブタブの指定、
`setRegistryName(new ResourceLocation(MOD_ID, "biwako_ingot"))`でアイテムID名の指定です。
**アイテムID名のアルファベットは全て小文字でないとForgeがエラーを吐きます**

```java:BiwakoMod.java
    @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
    public static class RegistryEvents {
        @SubscribeEvent
        public static void onItemsRegistry(final RegistryEvent.Register<Item> itemRegistryEvent) {
            LOGGER.info("HELLO from Register Item");
            itemRegistryEvent.getRegistry().registerAll(
                    ItemList.BiwakoIngot = new Item(new Item.Properties().group(ItemGroup.MISC))
                            .setRegistryName(new ResourceLocation(MOD_ID, "biwako_ingot"))
            );
       }

        @SubscribeEvent
        public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
            LOGGER.info("HELLO from Register Block");
        }
    }
```

# 翻訳ファイル
`アイテムID名`に対するアイテム名を言語別に記述しておきます。
日本語用のファイル名は`ja_jp.json`、英語(US)は`en_us.json`とするルールがあります。

ファイルは`src/main/resources/assets/biwako_mod/lang`フォルダに作成します。

書き方は`item.MOD_ID.アイテムID名": "アイテム名"`という形。

```json:en_us.json
{
    "item.biwako_mod.biwako_ingot":  "Biwako Ingot"
}
```

```json:ja_jp.json
{
    "item.biwako_mod.biwako_ingot":  "琵ンゴット"
}
```

# モデルファイル
テクスチャをどのように適用するかをモデルファイルで指定します。
jsonファイルは`src/main/resources/assets/biwako_mod/models/item`フォルダに
`setRegistryNameで登録した名前.json`という形で配置します。

私の場合は`biwako_ingot.json`を配置します。
ほとんどの場合、変えるのはlayer0の値だけで、`MOD_ID:items/TEXTURE_FILE_NAME`という形で書きます。

`TEXTURE_FILE_NAME`は`biwako_ingot.png`という画像を用意したのであれば、
拡張子以外の部分の`biwako_ingot`となります。

```json:biwako_ingot.json
{
    "parent": "item/generated",
    "textures": {
        "layer0": "biwako_mod:items/biwako_ingot"
    }
}
```

# テクスチャファイル
テクスチャファイルは`src/main/resources/assets/biwako_mod/textures/items`フォルダに配置します。
私の場合は`biwako_ingot.png`を配置します。

![biwako_ingot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/da65e11d-d100-3b51-5d43-f8fee494659c.png)


```
            ├─assets
            │  └─biwako_mod
            │      ├─lang
            │      │      en_us.json
            │      │      ja_jp.json
            │      │
            │      ├─models
            │      │  └─item
            │      │          biwako_ingot.json
            │      │
            │      └─textures
            │          └─items
            │                  biwako_ingot.png
```

# Minecraftを起動
## English
![2019-09-16_19.08.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/b3f31bf9-b188-0f73-b719-3592345177b4.png)
## 日本語
![2019-09-16_19.11.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336583/fae79238-0c5e-13a8-cdc8-5d7c3000c284.png)



---
[Github](https://github.com/Hiroya-W/biwakoMC/tree/1.14.4)にてプロジェクトを公開しています。