IntelliJ IDEAでmoddingしてみる

# 環境
Windows 10 64bit
IntelliJ IDEA 2016.2(まだインストールしてない方は[こちら](http://qiita.com/syu_chan_1005/items/46f94412f7493d6e60eb)をどうぞ)

また当投稿内[簡単なModの作成]は[http://minecraftjp.info/modding/index.php/1.9のブロック追加] を参考にしています。

# 環境構築
> 現在は [Minecraft Dev](https://minecraftdev.org/)を入れると簡単に環境構築が出来ます
> プロジェクト作成画面にMinecraft Devが追加されるのでウィザードを進めるだけでOkです

まずはForgeを準備しましょう
1.[こちら(Minecraft Forge)](http://files.minecraftforge.net/)からForgeのソースをダウンロードします。
(Mdkというのがソースです。Recommendedを落とすのが良いでしょう)
今回は現在(2016/07/17)のRecommendedである[forge-1.10.2-12.18.1.2011-mdk.zip]を使用します

2.落としてきたzipを解凍し、フォルダを開いて
[Shift + 右クリック -> コマンドウィンドウをここで開く]を選択します。

3.コマンドプロンプト内で

```:CMD
gradlew setupDecompWorkspace
gradlew setupDevWorkspace ideaModule
```
を実行します。

これでForgeの準備はOKです

4.IDEAを起動し[Create New Project -> Empty Project]からからのプロジェクトを作成します。

5.作成したプロジェクトのフォルダに解凍したForgeのフォルダ内から

```:File
.gradle
build
gradle
src
build.gradle
forge-1.10.2-12.18.1.2011-mdk.iml
gradlew
gradlew.bat
```

をコピーします

6.IDEAの画面に戻り[File -> Project Structure...]から
[Project]タブを選択しProject SDKを選択します(今回はJava 1.8)
またそれに合わせて下の[Project language level]も変更しましょう

7.[Module]タブを選択し、[緑の＋ -> import module]よりプロジェクトのフォルダ内にコピーした[forge-1.10.2-12.18.1.2011-mdk.iml]を選択します。

またこの時、Windowが出てきたらそれに従いましょう
出てこない場合、再起動してみてください

8.プロジェクトのフォルダ内で


```:CMD
gradlew genIntellijRuns
```
を実行します

これで終了です。

#簡単なModの作成

1.まずは[build.gradle]を開き

```:build.gradle
tasks.withType(Jar) {
    compileJava.options.encoding = 'UTF-8'
}
```
を追記します。

2.[src -> main -> java -> com.example.examplemod.ExampleMod]を開きます。

3.

```java:ExampleMod.java
public static final String VERSION = "1.0";
```

の下に

```java:ExampleMod.java
public static Block sampleBlock;
```

を追記します。

またinitメソッドを

```java:ExampleMod.java
@EventHandler
	public void init(FMLInitializationEvent event) {
		sampleBlock = new SampleBlock();
		ResourceLocation registryName = new ResourceLocation(MODID, "sampleblock");
		ItemBlock sampleItemBlock = new ItemBlock(sampleBlock);

		GameRegistry.register(sampleBlock, registryName);
		GameRegistry.register(sampleItemBlock, registryName);

		if(event.getSide().isClient()){
			ModelLoader.setCustomModelResourceLocation(sampleItemBlock, 0, new ModelResourceLocation(new ResourceLocation(MODID, "sampleblock"), "inventory"));
		}
	}
```

というふうに置き換えます。
またSampleBlock.javaを作成し

```java:ExampleMod.java
public class SampleBlock extends Block {
	public SampleBlock() {
		super(Material.ROCK);
		setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
		setUnlocalizedName("blockSample");
	}
}
```

という風に書き込みます。

4.[src -> main -> java -> resources]内に[assets -> examplemod -> blockstates -> sampleblock.json]を作成し、

```json:sampleblock.json
{
  "forge_marker": 1,
  "defaults": {
    "model": "cube_all",
    "textures": {
      "all": "blocks/dirt"
    },
    "transform": "forge:default-block"
  },
  "variants": {
    "normal":[{}],
    "inventory":[{}]
  }
}
```

と書き込みます。

5.[View -> Tool Window -> Gradle]より[Tasks -> forgegradle -> runClient]を実行します。

6.ゲーム内よりBuilding Blocks内に紫と黒のテクスチャを持ったアイテムで、置くと土のテクスチャが反映されているものがあればブロック追加の成功です。お疲れ様でした。

#最後に
お恥ずかしながらこの記事は自分もModdingしてみたい！ということで初めてModを作りながら書いた記事なので至らない部分もございますがご了承ください。

また今後の開発においては
[Minecraft Modding Wiki](http://minecraftjp.info/modding/index.php/Minecraft_Modding_Wiki)様
などを見ていただけると幸いです。