[Java]MinecraftのModを作成しよう 1.16.1【入門編】

# TL;DR
・ 以前 Minecraft 1.14.4 のmoddingについていくつか解説した
・ 今度は改めて Minecraft 1.16.1 のmoddingについてできるだけ色々解説していく
・ まずは環境構築について紹介

# はじめに
以前Minecraftのmoddingについていくつか記事を書きました。
[[Java]MinecraftのModを作成しよう 1.14.4【入門編】](https://qiita.com/koteko/items/7afadf8261eac49bacad)　など
これらは本体のバージョンが1.14.4(2019年7月リリース)とやや古く、また1.16での追加要素が大規模であることから、今後の潮流を考慮するに1.14の理解をするよりも1.16の開拓をする方が有用だと思いました。
そのため、今回からは環境を変えて(変わらない部分は引き継ぎつつも)新たに解説を書いていこうと思います。
また、今回は例示用でなくもうすこし具体的にModをイメージして作っていこうと思っていますので、ご了承ください。

# 注意
必要に応じて解説及び注釈を入れていくつもりですが、全体的に[前の解説](https://qiita.com/koteko/items/7afadf8261eac49bacad)を前提として解説していく予定ですので、必要に応じて参照してください。

# 環境構築
## 環境
| | version |
|:-:|:-:|
| OS | Winsows 10 Home |
| Oracle JDK | 8u212 |
| Minecraft | 1.16.1 |
| Minecraft Forge | 1.16.1 (32.0.108) |
| InteliJ IDEA | 2020.1.3 (CE) |
古いバージョンのJDKを用いていますが、以前の記事で導入したものをそのまま使っているためです。動きそうだったのでそのままですが、新しいJDKにするべきなのかもしれません。

## Oracle JDK (Java Development Kit)
規約に同意したうえで[こちらから](https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)ダウンロードします。重ねてになりますが、おそらくバージョンはもっと新しいものでよいです。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256627/24cd4580-ede8-0aae-8be0-392bafccc776.png)
(8u212はかなり下の方です)

ダウンロードには**Oracleプロファイル(アカウント)が必要**ですので、ない場合は作ります。
登録の際に会社名や部署の入力を求められますが、学生の場合、部署・役職名には「学生」、会社名には学校名、住所には学校の住所を用いればよいでしょう。

ダウンロードしたexeを実行してインストールします。

## InteliJ IDEA
規約に同意したうえで[こちらから](https://www.jetbrains.com/idea/download/)ダウンロードします。![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256627/0d590eba-ddfb-9635-bfd9-6a3ed8a6fc09.png)

ダウンロードしたexeを実行してインストールします。基本的に何も変更する必要はありません。

また、デフォルトで言語が英語なので、必要に応じて日本語化を行いましょう(→[参考記事](https://qiita.com/daigoro7/items/00819e5686f6c4d682f8))。以降は日本語化済みとして話を進めます。

## Minecraft Forge MDK
規約に同意したうえで[こちらから](https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.16.1.html)ダウンロードします。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256627/d1c0bcf0-5eb8-b7fd-d3a6-21e45187b967.png)

まだRecommendedがないので、Latest(32.0.108)をダウンロードします。Forgeの開発が進んでRecommendedが出た場合そちらにするとよいでしょう。ダウンロードしたZipファイルは展開しておきましょう。

## プロジェクトフォルダ
任意の場所にプロジェクトフォルダを作成します。 今回は水中生活要素を追加してみたいので、`D:\projects\mc_liveinwater`としました。
先ほど展開したForgeのフォルダから、プロジェクトフォルダに以下の項目をコピーします。(展開したフォルダごとコピー、あるいはリネームしてそのまま用いてもよいです。ここではREADMEなどを除きました。)

```
D:\projects\mc_liveinwater
　├ build.gradle
　├ gradle.properties
　├ gradlew
　├ gradlew.bat
　├ gradle
　│　└ wrapper
　│　　　└ gradle-wrapper.jar
　│　　　└ gradle-wrapper.properties
　└ src
　 　└ main
　 　　　├ java
　 　　　│  └ com
　 　　　│     └ example
　 　　　│        └ examplemod
　 　　　│           └ ExampleMod.java
　 　　　└ resources
　 　　　   ├ META-INF
　 　　　   │   └ mods.toml
　 　　　   └ pack.mcmeta
```

## 実行構成
**前記事の読者で既に実行済みの場合不要です。**
PowerShellを起動し、プロジェクトディレクトリに移動して以下のコマンドを実行しましょう。

```
PS D:\projects\mc_liveinwater> .\gradlew genIntellijRuns
```

BUILD SUCCESSFULが表示されたら完了です。結構時間がかかるので気長に待ちましょう。

## Gradle プロジェクトのインポート
InteliJを起動して「開く」よりプロジェクトディレクトリを開きます。
右下のポップアップ通知あるいは下部イベントログに「Gradleプロジェクトのインポート」を促されると思いますので、これをクリックします。人によっては自動で始まります。
<details><summary>通知を見失ったら</summary>
ctrl+shift+"a" でアクションの検索を開き、「Gradleプロジェクトのインポート」を検索して選択してください。</details>

開いたウィンドウで特に変更せず「OK」をクリック。インポートが開始されますので待ちましょう。
finishedが表示されインポートが完了したら、画面右側にGradleの項目が表示されていると思います。

## 起動
Gradleメニューから `mc_liveinwater\Tasks\fg_runs\runClient` を右クリック->実行で、デバッグ用のMinecraftが起動します。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256627/6f4f008e-291c-1fde-d9d6-0262cc12657e.png)
(「まだForgeはベータだよ！」と警告が出ていますね。)


**以上で環境構築は終了です。お疲れさまでした。**

# おわりに
以降は1.14.4のとき同様に、トピックごとに解説記事を書いていく予定です。後発の方にとってModdingの指針になるようなものを目指すので、同じ内容についてもなるべく書こうとは思います。順次各記事にリンクをつなげていくので、一つずつ順番に読んでいただけると幸いです。

# 参考
[[Java]MinecraftのModを作成しよう 1.14.4【入門編】](https://qiita.com/koteko/items/7afadf8261eac49bacad)
[Minecraft 1.14.4 Forge Modの作成 その1 【開発環境の準備 IntelliJ IDEA】](https://qiita.com/Hiroya_W/items/f38089724d9358d1668d)

# 各解説目次
[・基本ファイル](https://qiita.com/koteko/items/6560128ebd320f2727ab)
[・アイテムの追加](https://qiita.com/koteko/items/578c3cfdfd7ef71df9c1)
[・ブロックの追加](https://qiita.com/koteko/items/fb057afa493fd2d648fc)

<details><summary>追加予定の解説</summary><div>
・ クリエイティブタブの追加
(・ ツールの追加)
(・ 防具の追加)
・ レシピの追加
・ 進捗の追加
・ タグの追加
・ 特徴の追加
(・ 鉱石の追加と生成)
・ 木の追加と生成
・ 作物の追加
・ 食べ物の追加
(・ Modの出力)
</div></details>