⛩ 開発環境の概要
ノリと勢いだけで書いているので足りないものがあったり、続くのかどうかも怪しいですが、何かの参考になれば幸いです。
🌸 環境
・Minecraft 1.12.2 (現在最新)
・Minecraft forge 1.12.2 (13.20.0.2282) (現在最新)
・Ecripse (Pleiades Ecripse4.7 Oxygen) (新しいっぽいので)
・Windows 10
・Java 8
2017/4/15:
・Forgeを2214から2282へちょっぴりアップ(影響なし)
2017/11/30:
・Ecripseを4.6から4.7へアップ(影響なし)
・Minecraftを1.11.2から1.12.2へアップ(Forgeを12へアップが必要)
・それに伴いForgeを1.12.2-14.23.1.2555へアップ(影響なし)
⛩ 開発環境のセットアップ
🌸 Eclipseのインストール
###🏮 Eclipseをダウンロード
http://mergedoc.osdn.jp/
からEclipse 4.7 Oxygen Pleiades All in Oneをクリック
Javaの列から自分の環境(32/64)(できればFullがJava開発環境も含まれているのでトラブル少なそう)のDownloadをクリック(1.4GBほどあるので注意)
ダウンロードしたpleiades-4.7.1-java-win-64bit-jre_20171019を展開(約1.7GB)
展開されたフォルダのpleiades\eclipse\eclipse.exeを実行して起動できるか確認(Ecripseランチャーが起動してワークスペースを聞かれるので、とりあえずキャンセル)(※初回起動は時間がかかる)
🌸 MDKのインストールとセットアップ
###🏮 minecraft forgeの開発キットをダウンロード
https://files.minecraftforge.net/
最初から最新バージョンのページが表示されているので、
Download LatestからMdkをクリックしてダウンロード(5秒後に出るSKIPをクリック)
(右のDownload Recommendedは安定バージョンなので、開発版によるバグを避けたい場合はこちらを選ぶといいと思います)
###🏮 ファイルの解凍
デスクトップなどに、適当なフォルダを作り、
ダウンロードしたforge-1.12.2-14.23.1.2556-mdk.zipをそこで展開。(ファイルがその階層にばらまかれるので注意)
###🏮 セットアップ
コマンドプロンプト(cmd.exe)を管理者権限で開き、展開したフォルダへ移動。
(コマンドプロンプトを管理権限で開く方法:コルタナやアプリの検索ウィンドウで「cmd」で検索して、右クリックから管理者として実行で起動できる)
gradlew setupDecompWorkspace eclipse
と入力して環境に必要なファイルを構築
数分後、「BUILD SUCCESSFUL」と出れば成功
「BUILD FAILED」が出た場合は
gradlew --refresh-dependencies
を実行して依存ファイルの再作成お行い、もう一度試してみる。
###🏮 Eclipseでワークスペースを開く
Eclipseを起動して(pleiades\eclipse\eclipse.exe)、
ワークスペースの参照からmdkを展開したフォルダに作成されたecripseフォルダを指定して起動で開く。
パッケージエクスプローラーにMDKExampleというサンプルMODが入っています。
###🏮 サンプルのMDKExampleを実行するためのJavaランタイム環境の設定
パッケージエクスプローラーにある、MDKExample
を選択して、
アイコンメニューの実行ボタン(▶)の▼から、実行の構成を選択。
実行の構成ウィンドウが表示されるので、左のJavaアプリケーションからClientを選択(クライアントデバッグ用の構成)(※2つあるけど、一番上だけで大丈夫っぽい?心配なら2つとも同じ設定にします。)
右に表示されたタブからJREを選択して、ランタイムJREの設定を、[プロジェクトの実行環境'JavaSE-1.6'(P)(java6)]から実行環境(X):に変更して、CDC-1.1/Foundation-1.1(java8)
を選択(java8ならたぶん何でも大丈夫)
変更したら右下の[適用(V)]で設定を保存しておく。
同様に、Javaアプリケーション内のServer
も同じようにJREの設定をする。
設定が終わったら[閉じる]で閉じてOK。
🌸 MDKサンプルの実行(クライアント)
###🏮 サンプルのMDKExampleを実行してみる
アイコンメニューの実行ボタン(▶)の▼から、1Clientを実行。
(これでクライアント側のテストを実行することができます)
パッケージエクスプローラーのプロジェクトを選択していないと怒られるので、選択してから実行してください。
スタート画面が出たところ。[Mods]ボタンが出現していて、左下にForgeやMinecraftのバージョンなどが表示されていれば成功
[Mods]ボタンをクリックするとExample Modが読み込まれているのがわかる。
###🏮 このサンプルMODのやっていること
Eclipseの左下にあるコンソールタブを少し上にスクロールしてみると、このような一文が出力されていますが、実はやっていることはこれだけで、MOD初期化時にコンソールに文字を表示するいわゆるHello Worldのようなものです。
[11:29:00] [main/INFO] [STDOUT]: [com.example.examplemod.ExampleMod:init:18]: DIRT BLOCK >> tile.dirt
ソースは、パッケージエクスプローラーからMDKExampleをたどって、src/main/java
のcom.example.examplemoc
パッケージに入っているExampleMod.java
になります。
ダブルクリックして開いてみると右側にソースが表示され、System.out.println(~と文字を表示しているのがわかります。)(※土ブロックのローカライズしていない名前を表示しています)
こちらを好きに変えてやれば、コンソールへ好きな文字を出力するMODができたことになります。(※編集するとき、起動しているClientは一度終了しておく)
アイコンメニューの実行ボタン(▶)の▼から、1Clientを実行
したところ。ちゃんと表示されていますね。
🌸 MDKサンプルの実行(サーバー)
###🏮 サーバーの初回起動
アイコンメニューの実行ボタン(▶)の▼から、2Serverを実行
すると、何やらコンソールにメッセージが出てサーバーが終了します。
これはEURAというソフトウェア使用許諾契約に同意しないと起動しないよーと言ってるので、
https://account.mojang.com/documents/minecraft_eula
こちらの同意書を読んで、同意できるばあい。EURAの設定を行います。
###🏮 EURAの同意設定
パッケージエクスプローラーからrun
フォルダに初回起動時に生成されたeura.txtがあるのでダブルクリックで開きます。
初期ではeula=false
となっているので、これをtrueにして保存(ctrl+s)します。
###🏮 サーバーの起動
アイコンメニューの実行ボタン(▶)の▼から、1Serverを実行
(※最近実行された順に並んでいるだけなので数字は気にしなくてOKです)
サーバーログの上のほうを見てみると、ちゃんとサーバーでもMODが動作しているのを確認できます。
いくつかの(指定されたファイルが見つかりません。)と出る場合はサーバー管理用の(ホワイトリス用のファイルとか)が見つからないので生成しましたよ。ってことなので次回起動からは出なくなると思います。
###🏮 サーバーへクライアントから接続
いま起動したサーバーが動いている状態でEclipseからクライアントを起動して、接続できるか試してみます。
[Multiplayer]から[Add Server]して、Server Addressに127.0.0.1
を設定して[Done]。
登録されたサーバーに緑色のチェックがついて接続可能になっていればOKです。
ただ、このままだとFaild to login: Invalid session (Try restarting your game)
と出てサーバに入れません。
これはサーバーの設定でログインしていないユーザーがサーバーに入ることを許していないためで、開発時のクライアントはログインしていないユーザーとして接続されます。
サーバーの設定を変更するために、サーバーログの下のコマンド欄に、
stop
と入力してサーバーを終了します。
###🏮 サーバーの設定(未認証ユーザーの許可)
パッケージエクスプローラーのrun
にサーバーの設定ファイルがいくつか生成されていますが、その中のserver.properties
をダブルクリックして開きます。
25行目あたりのonline-mode=true
が公式サーバーに接続してユーザー認証を行うか?の設定なので、これをfalse
に変更します。
※この設定は開発サーバーのみで、本番サーバーではやらないでください(無法地帯になります)
保存したら、サーバーをもう一度立ち上げて、クライアントから接続してみてください。
サーバー側にはPlayer 192
という名前で入っていることがわかります。
この名前はクライアントを起動したときに毎回新しく設定されるので、個人を特定して許可するようなMODを作る場合は起動ごとに変わるのでちょっと大変になりますが、複数のアカウントを持たずに許可系のテストができるともいえるので、工夫して作成していけると思います。
⛩ 作成したMODの配布ファイルを作成
コマンドプロンプトからMDKを展開したフォルダへ移動し、
gradlew build
と実行することでパッケージが作成されます。(BUILD SUCCESSFUL
と出ればOK)
「MDKフォルダ\build\libs」に2つのjarファイルができています。
modid-1.0.jar
modid-1.0-sources.jar
配布する場合は-sourcesが含まれていないものを配布します。
つまり、このjarファイルをmodsフォルダに入れればインストールできるということですね!
⛩ オリジナルのMODを作成
つづけ... ?