デバッグができるところまでできたのでいったんまとめ。今後も何かあれば追記予定。あ、ちなみに決まり文句ですが、modの導入その他ここに書かれていることは自己責任でお願いしますね。
環境
- OS: Windows10
- Jdk: openjdk version "15.0.2" 2021-01-19
※16.xでもいいかもだけどgradleやらなにやら色々変わってしまって心配だったので今回は15で。 - IDE: Eclipse IDE for Java Developers (Version 4.19.0)
- Buildship(Eclipseのgradleプラグイン): 3.0
- Minecraft: Java版 1.16.5
- Forge: 1.16.5
※Java,Eclipseやプラグイン関連のセットアップはこの記事の対象外なので別途調べてくださいませ
ダウンロードからEclipseへのインポートまで
Minecraftのダウンロード
公式サイトからJava版を購入してくださいませ。
https://www.minecraft.net/ja-jp/
必ずJava版を購入してください。それ以外ではmodは使えないので。。間違えて買うと後悔します。
forgeのインストール
こちらも公式サイトから。
https://files.minecraftforge.net/net/minecraftforge/forge/
バージョンを選んで「Installer」を選んでダウンロード。今回は1.16.5。「Latest」を選ぶこともできるけど、Mdkは「Latest」を選んだことで色々エラーを吐きまくって困ったので「Recommended」を選ぶのが無難。変なサイトが開くけどこれは広告で、しばらく待つと矢印のところに「Skip」というボタンが現れるのでそこからダウンロードできます。
マイクラを起動して「起動構成」を開く。
「forge」を選んで「プレイ」。
「Mods」トップ画面に表示されていればOK。Mdk(Mode Development Kit)のダウンロード
先ほどと同じforgeの公式サイトから、同じバージョンのMdkをダウンロードする。
ダウンロードされたzipファイルを解凍すると、build.gradleやLICENSE.txtといったファイルが出入っているのがわかるはず。MdkのEclipseへのインポート
回答されたMdkのフォルダをどこか適当なところにコピりる。コピった場所がmodの開発フォルダになるので、まぁ、Eclipseのワークスペースとして使っているフォルダ配下が無難だろうね。
好きなフォルダ名に変える。これがのちにEclipse上のプロジェクト名になります コピったフォルダにコマンドプロンプトで移動して、以下のコマンドでEclipse用の環境ファイルを吐き出させる。これが結構時間がかかった。。。(私の環境で初回だと10分ぐらい。。)C:\eclipse-workspace\munecraftmod>gradlew genEclipseRuns
BUILD SUCCESSFUL in xxxxx
が表示されればインポート準備完了。Eclipseにインポートします。メニューのImportから「Existing Gradle Project」でインポート。Buildshipが入っていないとこのメニューは出ないっす。(私の環境は日本語化していないのでこの記事もメニューの説明は英語。。)
forge1.16.5はgradleが6.8.1より新しくないとビルドできません。ただ、gradle 7.0はJDK自体も16にしないとダメだったりするので、6.8.1とJDk15が無難かなぁ、と思ってその組み合わせにしました。
念のためRefresh Gradle Projectをしてインポートは完了。お疲れ様です。
環境整備
ここから、modのビルドやデバッグができるように環境を整備していきます。まずはサンプルのmodをそのままビルドしてマイクラに登録できるか確認してみよう。
まずはインポートしたプロジェクトのGradle Tasksからbuildを実行。
こちらもBUILD SUCCESSFUL in xxxxx
が出れば成功。build\libs\modid-1.0.jar
が生成されました。buildフォルダはデフォルトのフィルタで表示されなくなっているのでフィルタの設定を変えるかExplorer等で確認してね。
一度マイクラを起動します。gradleのrunClient
タスクをたたくことで起動できます。
トップ画面で「Mods」を選んで表示された画面の左下の「Open mods folder」ボタンを押すとExplorerが起動。ここがbuildしたmodファイルを置く場所。
開いたExplorerの場所にbuildの下にできてたbuild\libs\modid-1.0.jar
をコピー。マイクラを一度終了してもっかいrunClient
をするとmodを読み込んでマイクラが起動。EclipseのConsoleにログが出ますが、その中にサンプルのmodが出力したログを見つけられればおめでとうございます。無事にビルドしたサンプルのmodが読み込まれました。
下の例だと20:46:08にHELLO FROM PREINIT
のログが出力されてます。これって今回ビルドしたmodが出力してるものなので無事にロードされた模様。おめでとう!
ここまで確認したらコピーしたmodid-1.0.jar
は削除しておいてください。そのままでも特に問題は出ないはずだけど、後々何等か競合とか悪さをする可能性があるのと、後の手順を踏むことで毎回自分でコピーする必要はなくなるので。
(省略)
[20:46:08] [Thread-0/DEBUG] [ne.mi.co.ForgeConfig/FORGEMOD]: Forge config just got changed on the file system!
[20:46:08] [Thread-0/DEBUG] [ne.mi.fm.co.ConfigFileTypeHandler/CONFIG]: Config file forge-common.toml changed, sending notifies
[20:46:08] [Thread-0/DEBUG] [ne.mi.co.ForgeConfig/FORGEMOD]: Forge config just got changed on the file system!
[20:46:08] [Worker-Main-5/INFO] [co.ex.ex.ExampleMod/]: HELLO FROM PREINIT</font>
[20:46:08] [Worker-Main-5/INFO] [co.ex.ex.ExampleMod/]: DIRT BLOCK >> minecraft:dirt
[20:46:08] [Forge Version Check/INFO] [ne.mi.fm.VersionChecker/]: [forge] Starting version check at https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
[20:46:11] [Forge Version Check/DEBUG] [ne.mi.fm.VersionChecker/]: [forge] Received version check data:
(省略)
デバッグ環境を整える
デバッグ環境を整えるために、gradleのタスク経由ではなくEclipseのRunからマイクラを起動できるようにする。FileメニューのImportを選び「Run/Debug」>「Launch Configurations」を選ぶ。
「Browse...」で作ったプロジェクトのルートフォルダを選択。出てきたリストにすべてチェックを入れてFinish。
Runメニューにある「Run Configurations...」を選ぶ。
Java Applicationのところに「runClient」ができているのでそれを選択してRun。無事にマイクラが起動すればOK。コンソールはまたログが出ているはず。ここまでやると自分でmodのjarファイルをコピーしなくてもEclipseのrunが自動的に開発中のmodのバイナリをMinecraftに読み込ませてくれるようになります。ちなみにEclipseから起動したMinecraftが読み込むバイナリは`[project_home]/bin`配下です。今後何かトラブったらここに期待通りのファイルができているかなど確認するとよいでしょう。では、いざデバッグを。サンプルのmodにBreak Pointをつけて、上で作ったRun Configurationをデバッグモードで起動。ワクワク。。
っしゃあああぁぁああぁぁぁぁ。ちゃんとBreak Pointで止まったね。これでデバッグの準備も完了!!!(ここまでたどり着くのに相当苦労した。。。)
リンク集
必要ソフトウェア
modの導入、開発にほぼ必須となるForgeの公式サイト
リファレンス
Mod開発のイロハをよくまとめてくださっているサイト。かなり参考にさせてもらってます。
こちらも少し古いですがmod開発関連の記事を掲載されていて参考にしています。
Forgeの導入方法やデバッグ方法が書いてあるのでいずれ参照。情報がだいぶ古そうなので、
今の環境での内容を整理していずれ記事にしたい。。
英語だけど環境構築の方法が書かれているブログ。最初からこれが見つけられれば早かったかも。。
英語で読める人はこちらもどうぞ。