MineCraft Modding チュートリアル その1

CoderDojo Chiba (子ども向けのプログラミングクラブ) で、中学・高校生と一緒に MineCraft Mod 開発をしてみたので、そのときの知見をまとめていくシリーズです。
手順をまとめるメモ的な資料なので、細かくは書きません。

## 開発バージョン

- MineCraft Forge 1.12.2 の Recommended

## 事前の心得

- Java版のMineCraftを **購入** すること。 MineCraft は、MODを作成することを許可していますが、それはMineCraftのJava版を購入し、[MineCraftエンドユーザーライセンス](https://account.mojang.com/documents/minecraft_eula)に合意した場合に限られます。
- 最低限のJavaプログラミングの知識が必要です。
    - おすすめオンライン講座
        - https://dotinstall.com/lessons/basic_java_v2 ドットインストールJava8入門
        - https://prog-8.com/dashboard Java講座 (CoderDojoに参加している場合、[2019年現在、場所によっては無料で利用できる場合があります。](https://prog-8.com/news_posts/71))
    - Moddingにあたり必要な項目
        - [ ] 基本的な構文の理解 (`if`, `while`, `for`)
        - [ ] 基本的なプリミティブ型の理解 (`int`, `boolean`, `float`)
        - [ ] クラスの作り方 (継承、オーバーライド、アクセス修飾子 `private`, `public`)
        - [ ] リスト, マップとジェネリクス
- JSON形式の知識が必要です。
    - 現在のバージョンは、レシピやモデルなど、何かにつけてJSON形式で書くことを求めてくるので、JSON形式に慣れる必要があります。
- 過去のバージョンの情報を掴まされないよう注意。 1.8 と現在 (1.12, 1.13) は、MineCraft自体の機能が増えたため、大分違う。


## セットアップ

いろいろ入手・インストールしましょう。(こちらの環境はOS Xですが、Windowsでも同様です。)
以下3点セット

- Eclipse
    - 統合開発環境です。コーディングや実行であると心強いです。
    - 日本語であれば、 [Pleiades の All in One](http://mergedoc.osdn.jp/) で十分です。
    - JSONをいじるので、[Eclipse Json Editor Plugin](https://marketplace.eclipse.org/content/json-editor-plugin) を入れておくことを推奨。
- Java SE Development Kit 8
    - [Oracleから入手します](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
    - インストールします。
- MineCraft Forge Mdk
    - [MineCraft Forge](https://files.minecraftforge.net/) から、MineCraft Mdk (開発キット) を入手
    - 適当な場所に展開します。

## パスを通す

コマンドプロンプトで、JDKが利用できるようにするためにパスを通します。

- 参考記事
    - Windowsの場合 https://techacademy.jp/magazine/9039

## Forgeセットアップ

Windows の場合、コマンドプロンプトを開き (`cmd` を検索すると出てきます。) Forge を展開したフォルダまで移動します。
MacOS の場合は、ターミナルで操作をしましょう。

[コマンドプロンプト入門](https://www.atmarkit.co.jp/ait/articles/1709/13/news032.html)

コマンドプロンプトでは以下を実行します。これは、MineCraft本体を取ってきて、開発用にいろいろ加工したりする作業を自動的に行なってくれるものです。
途中、メモリが足りなくなる場合もありますが、2度目は途中からの実行になるので、大抵の場合解消します。
結構時間がかかる処理なので、飲み物でも用意しておいてください。

```
gradlew setupDecompWorkspace
```

eclipse 用のセットアップを行います。

```
gradlew eclipse
```

MacOS/Linux の場合は `./gradlew` で実行する必要があります。

```
./gradlew setupDecompWorkspace
```

```
./gradlew eclipse
```

**注:** 1.13.x からはここのコマンドが変わっているようなので、forge Mdkに同梱されている、README.md を読むようにしてください。

## Eclipse起動・試しに実行

Eclipse を起動して、 ワークスペースとして、 Forge の中にある eclipse フォルダを選択します。
セットアップ直後には、サンプルの (何もしない) MODが自動的に作成されている状態になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61997/ae718206-e13a-4d4c-e07b-cd25a4524b85.png)

プロジェクト、MDKExampleをクリックし、Runを実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61997/2a42b0b2-a648-402d-61bf-094a58108b18.png)

MineCraftが起動します。MOD一覧に Example Mod が登録されていれば成功。
普通にプレイもできますが、テストプレイヤーになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61997/48ea66c1-329c-17f7-6c9b-c82570bfa6c4.png)

## 情報収集の仕方

- [Forge Documentation(英語)](https://mcforge.readthedocs.io/en/latest/)
    - 頼るべきは公式のドキュメント
- [Loremaster氏のYouTube動画(英語)](https://www.youtube.com/watch?v=rmWBP5ifDlw)
    - 英語ですが、動画なのでわかりやすいです。(Windows向けですが、セットアップから丁寧です。)
- [MineCraft Modding Wiki(日本語)](https://mcmodding.jp/modding/index.php/Minecraft_Modding_Wiki)
- [suppergerrie2/ForgeTutorial](https://github.com/suppergerrie2/ForgeTutorial/tree/1.12)
    - suppergerrie2氏のForgeTutorialコード。
- [MOD開発講座 | TNT Modders](https://www.tntmodders.com/tutorial/)