はじめに
前回、こちらの記事でMOD制作の方法について解説しました:
無事、オリジナルのMODを作れることが確認できたと思います。

しかし、同時にこう思うことでしょう:
「あれ、MODの名前、examplemod のままじゃない?」
そう、配布されているMDK(Mod Development Kit)の初期設定は、誰でも使えるように「examplemod」という仮のIDが設定されています。このままでも開発はできますが、自分だけのオリジナルMODを作るなら、ここを書き換えて自分だけの色に染め上げたいですよね。今回は、MOD制作の第2ステップとして、この「MOD ID」をオリジナルのものに書き換える手順を徹底解説します。
「examplemod」というデフォルト名
そもそも、なぜIDを変える必要があるのでしょうか。単なる気分の問題だけではありません。マインクラフトの世界では、すべてのアイテムやブロックが「modid:item_name」という形式で管理されています。もし、ここで「examplemod」のままMODを公開し、他の誰かも「examplemod」という名前でMODを作っていたらどうなるでしょう?
はい、競合ですね。同じIDを持つMODは同時に入れることができず、ゲームがクラッシュしたり、アイテムが上書きされたりと予期せぬ不具合の原因になります。世界に一つだけのMODを作るためには、世界に一つだけのIDを設定することが必須条件なのです。
で、このMODのIDの設定ですが、できれば最初のほうにやったほうがいいです。というのも、後でコードが多くなってから変更するとなると作業量や変更箇所が膨大になってとても手間だからです。
変える場所チェックリスト
さて、このMOD IDの変更は、実は一箇所を書き換えれば終わり、というほど単純ではありません。
MODは複数のファイルが連携して動いているため、それら全ての整合性を取る必要があります。
大きく分けると、変更すべき箇所は以下の4つの層に分類されます。
あちこち飛び回ることになりますが、一つでも忘れると起動しなかったり、テクスチャが紫と黒のチェック柄になったりします。今回は、古いIDである old_id を、新しいID new_id に書き換えるという想定で、順を追って見ていきます。
- 以下ではnew_idを置き換えたいIDに読み替えてください
解説:具体的な書き換え手順
先で解説した4つの場所を順に変更していきます。
1. ビルド設定・変数層
まずはプロジェクトの根幹であるGradleの設定から変更します。最も重要なファイルは gradle.properties です。MDK環境であれば、ここに mod_id という変数が定義されているはずです。ここを mod_id=(置き換えたいID)に書き換えてください。

なお、ここでmod_nameも書き換えてしまうと便利だと思います。これは、ゲーム内のMOD一覧で表示されるMODの名前です。当設定は、mod_idの少し下にあります。また、念のためmod_group_idも書き換えておきましょう。
これを書き換えることで、build.gradleなど他のファイルにおいても自動でIDの変更が認識されるはずです。
2. メタデータ層
マインクラフト本体に「私はこういう名前のMODですよ」と自己紹介するためのファイルがあります。それが、mods.tomlです。これを編集しましょう。
このファイルの中に modId="examplemod" のような記述があるはずなので、ここを modId="new_id" に変更します。ここで設定したIDと、後述するJavaコード内のIDが一致していないと、ゲーム起動時にクラッシュしてしまうので注意が必要です。

ついでに、displayNameなども変えておくと愛着も沸いていいと思います。
3. Javaソースコード層
いよいよプログラム本体の修正です。メインクラス(ExampleMod.java などの名前になっているファイル)を開きましょう。ここで、クラス内で定義されている MOD_ID という定数を書き換えます:
public static final String ModID = "new_id";

また、この機会にパッケージ名(com.example.exampleModなど)もリファクタリング機能を使って com.new.new_id のように変更しておくことを強く推奨します。IntelliJ IDEAの場合、リファクタリング機能を使えば一括で変更することができます:

4. リソース・データ層
最後に見落としがちなのが、テクスチャやJSONファイルが格納されているフォルダ名です。
- ただし、これは元の状態では存在しないです。既に何か作っている人だけ変えてください
src/main/resources/assets/ の中にある というフォルダ名を、新しいIDである new_id にリネームしてください。データパックを使用する場合は data フォルダの中も同様です。
また、JSONファイルの中に examplemod:item_name のように古いIDを直接書き込んでいる箇所がある場合は、それらも全て新しいIDに置換する必要があります。

ただし、Datagenを使っている場合は、コード側のIDさえ直してしまえば、あとはrunDataを実行するだけでJSONファイルやフォルダ構成を自動で作り直してくれます。Datagenは便利ですので作ってみることをおススメします。
確認
全ての変更が終わったら、実際に確認してみましょう。Gradleのタスクから runClient を実行してみましょう。
無事にタイトル画面まで到達できたら、まずは「Mods」ボタンを押して、MOD一覧の中に自分が設定した新しい名前とIDが表示されているか確認します。

次にワールドに入り、追加したアイテムを手に取ってみてください。正しいテクスチャが表示され、名前も正しくなっていればID変更は大成功です。もし起動時にエラーが出た場合は、mods.toml とJavaコードのIDが食い違っていないか、あるいはフォルダ名のスペルミスがないかを確認してみるといいと思います。
おしまい
お疲れ様でした!これによって、MODのIDはありふれた「examplemod」から、世界で唯一のID名へと生まれ変わりました。IDが変わると、不思議と開発のモチベーションも上がるものです。
この作業、地味で面倒に感じるかもしれませんが、MOD開発において避けては通れない道です。これを踏まえてオリジナルのアイテム・ブロックを作成していきましょう。