「Minecraft Dev for IntelliJ」を使って超簡単なHello World作り

Overview

Minecraftをやっていると、時々かゆいところに手が届くModが欲しくなります。
今回は自分でMod制作に挑戦しようと思います。
環境はIntelliJ IDEAですが、どうやらとても簡単にModを作れるプラグインがあるらしいので、使ってみようと思います。
その名も「Minecraft Development」、もしくは「Minecraft Dev for IntelliJ」。
Minecraftのバージョンが1.15以上とかの新しいものになるとなかなかMod制作の資料が見つからないので、手探りでMod制作をしていこうと思います。
ForgeのMdkもダウンロードしたりせずに済むようなのでらくちん。

Minecraft Dev for Intellij

このプラグインのサイトは こちら
まずはプラグインのインストール、これはIntelliJ起動画面の右下のConfigure→Pluginから、MarketplaceでMinecraftと検索すれば出てくる。
cube
これをinstall。

プロジェクト作成

今回はForge Modを作る。
Forge以外にも、spigotとかのサーバー用のModも作れるみたい。

「Create New Project」を押し、左の「Minecraft」をクリック。
「Choose Plugin Type」という画面になるので、今回はForgeを選択。
Javaのバージョンは11にしています。インストールしていない場合は入れよう。
cube

Build Setting

GroupIDとArtifactIDの設定。ここで設定したArtifactIDがそのまま後のmodIDになるみたい。
ArtifactIDは小文字にしておこう。大文字だと後でエラーが出る。
cube

Forge Setting

Mod Nameやクラス名は自動的に生成されている。
バージョンもとりあえずそのまま。
ここではMinecraftのバージョンを選ぼう。
真ん中右側の「Minecraft Version」のところから、今回は1.15.2を選択。
「Forge Version」と「MCP Version」もあるが、これはMinecraft Versionを選べば自動で埋めてくれるので、触らないでおこう。
下のOptional Settingsについては自由。今回はある程度埋めてみた。
cube

Project Name

ここまできたら後はプロジェクト名のみ。今回はHelloWorldに。
フォルダも作られる。Finishを押せば色々自動的に作ってくれる。
cube
右下に「Gradle projects need to be imported」などと出たら「Import changes」を押そう。
cube

注意:ArtifactIDは小文字に!

最初の画面でArtifactIDを入力しましたが、ここを大文字にしていると、自動的に生成されるファイル内のmodIDが大文字になってしまいます。
ビルドは上手くいくものの、どうやらmodIdが大文字だとMod読み込み時にエラーとなります。
[main/FATAL] [ne.mi.fm.lo.mo.ModInfo/]: Invalid modId found in file ~\HelloWorld\build\resources\main - HelloWorld does not match the standard: ^[a-z][a-z0-9_-]{1,63}$
「^[a-z][a-z0-9_-]{1,63}$」という正規表現にあるように、どうやらmodIdは小文字じゃないといけないらしい。
素直に小文字にしよう。

Hello Worldまで

あとはModを作っていく。
今回は、ゲーム開始時にチャット欄にHello Worldを出力するModを動かしてみる。
引用元は こちら
追加する部分は
@SubscribeEvent
public void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
PlayerEntity player = event.getPlayer();
BlockPos pos = player.getPosition();
String message =
    "Hello, World!\n"
    + "[name]=[" + player.getName().getFormattedText() + "]\n"
    + "[pos]=[" + pos.getX() + "," + pos.getY() + "," + pos.getZ() + "]";
ITextComponent text = new StringTextComponent(message);
player.sendMessage(text);
}

これを、「src/main/java/(groupid)/(artifactid)/Helloworld.java」に追加してみる。
最初からこのファイルが開かれているはず。
このファイルの末尾の直前に上の部分を追加。
importが足りないので、Alt+Shift+Enterで勝手に補完してもらう。
cube

また、「src/main/resources/META-INF/mods.toml」もちょっと変更。
デフォルトだと27行目あたりにAuthorが自動的に入力されてるが、なぜか形式がちょっとおかしかった。
ダブルクォーテーションを適宜調節。
cube

これで全部完了のはず。
右上のハンマーマークの横のドロップダウンメニューから、「Helloworld Build」を選択し、その右の三角形をクリックするとビルドが始まる。
cube

おそらくエラーはないはず。
ビルドできるのを確認したら、実際にマインクラフトを起動してみる。
同じく右上のドロップダウンメニューから「runClient」を選択、三角形の実行ボタンをクリックするとMinecraftが起動する。
デバッグ用なのか起動がだいぶ遅いが、待っていれば問題なければ起動する。
Modの一覧を見て、無事Modを確認。
バージョンがないが、とりあえず気にしない。
cube

あとはワールド作成して起動してみる。
cube

Hello Worldがきちんと動いている。

まとめ

だいたいはプラグインが作ってくれたので、とても楽だった。
動くことは確認できたので、次はアイテム追加やクラスの書き換えにトライしていきたい。