Modding

※現在Modding関連ページをMinecraft Modding Wikiに移植するかどうか検討中です。 Wiki運営掲示板でこれについてのご意見を募集しています。

Modding(MOD作成)に関してメモ程度にまとめ。

Javaの知識がある程度必要。全くの素人でもすこしずつ慣れていけば作れるはずです。

MOD製作に関する情報交換、質問などのためのIRCチャンネルでは Modding初心者のサポートも行なっています。

サーバ:irc.friend-chat.jp

チャンネル名:#minecraftmoddingJP

ぜひ利用してみてください。

この記事は Minecraft 1.3.2 , MCP 7.2 , ModLoader 1.3.2の時点 で書かれたものです。

目次


MOD作成に必要なソフト・ツール一覧

ツール名 コメント
JDK Minecraft自体がJavaで作られているので必須。
Mod Coder Pack(MCP) プログラムのデコンパイル&再コンパイルを行うツール群。
Forgeが主流となる前は必須であったが、Forge主流の現在はバニラMODを作る場合やCoreMODを作る場合以外に利用されることはあまり無い。
ただ、ForgeはMCPを利用して構築されているためMCP無しにForgeが生まれないことを忘れてはならない。
フォーラム
MinecraftForge
解説
一般的なMOD作成において要求頻度の高い様々な拡張機能を提供する便利なAPI群。
ただし、Forgeが提供しない特殊なModを作る場合にCoreMODを使いこなせないと
その難易度が障害となり自由度に限界が生じるのが難点。
Forge主流の現在においてMod作成には無くてはならない環境である。
Eclipse 有名なJava開発環境であり無料かつ高機能なソフト。あるとかなり便利なので入れておくことを推奨する。
ただし、Minecraft1個起動してメモリがいっぱいになるようではあまりおすすめはできない(結構メモリを消費するため)


クライアントMODの作成の大まかな流れ

ModLoaderとの統合を行った場合の作成方法についてメインに書いてゆく。

0.データの準備

ModLoader を導入する場合は、事前に用意する minecraft.jar に多少の違いがあるので注意が必要。

ModLoader を導入しない場合

  MOD を入れていない状態 minecraft.jar, minecraft_server.jar を用意する。

ModLoader を導入する場合

  ModLoader だけを入れた minecraft.jar を用意する。
  minecraft_server.jar は、 MOD を入れていない状態 のものを用意する。
 必ず minecraft.jar, MCP, ModLoader の対応バージョンを合わせること。

1.MCPのインストール(Windows の場合)

  1. JDKのインストール&パスを通す。( JREではなくJDK )→参考
  2. Minecraft Code Pack(MCP)を入手して、適当な場所に解凍。(ここでは仮にmcpのフォルダを MCPROOT/ とする)
    • 日本語を含んだパスだと不具合が出る場合あり。デスクトップやマイドキュメントの中は避けたほうが良い。
  3. minecraft_server.jar を公式から落としてきて、MCPROOT/jars にコピー。
  4. %appdata%\.minecraft/bin を、まるごと MCPROOT/jars にコピー。
  5. %appdata%\.minecraft/resource を、まるごと MCPROOT/jars にコピー。
  6. decompile.bat をダブルクリックすると、デコンパイルが始まる。ソースは MCPROOT/src の中に展開される。
    • この時点で失敗する場合は、minecraft.jar, minecraft_server.jar, MCP のいずれかのバージョンが合っていない可能性がある。
    • macの場合は、ターミナルでMCPROOT/へ移動した後./decompile.shと入力してdecompile.shを実行する。
  7. ModLoaderを導入した場合は、MCPROOT/src/minecraft/net/minecraft/srcフォルダ内に BaseMod.java, ModLoader.java も展開される。(ModLoader 導入成功)

    デコンパイル時に以下のエラーメッセージが出るが気にしなくてもよい。
    1 out of 1hunk FAILED -- saving rejects to file 'net\minecraft\src\RenderBlocks.#'

  デコンパイル後
 ModLoaderを使う場合、ModLoaderの配布ページからDecompile Fixesを落として、それを解凍した中にあるMLProp.javaファイル1行目を
  //package net.minecraft.src; → package net.minecraft.src;  と変更する
 そしてそのMLProp.javaを、MCPROOT/src/minecraft/net/minecraft/srcフォルダ内に上書きしてください

(※下のコメントより抜粋→1.6以降はMCPでのデコンパイル方法が変わってます。.minecraftフォルダにあるassets、libraries、versionsをMCPROOT/jarsに入れます。minecraft_server.1.6.x.jarも同じフォルダにいれます。今までのようなbinとresourceは必要ありません。(不要なら削除を))

2.ソースファイルの作成

 既存のクラスを変更する場合は MCPROOT/src/minecraft/net/minecraft/src/ 内にあるソースコードを変更する。
 自作のクラスを追加する場合も、このフォルダに追加する。
 クラスをパッケージ分けすることもできるがModLoaderを使用するときにmod_Hogeのクラスは必ずnet.minecraft.srcに入れること。
 でないとエラーをはくかmodが読み込まれない。
 最初の内は無理をせず BlockXXX.java や ItemXXX.java などをコピーして練習すると感触をつかみやすい。
 欲しい機能がある場合は、その機能を持つソースを覗いてみよう。(爆発を起こしたい→クリーパーのソースを見る…など)

 既存のクラスを変更すると、他の MOD と競合することがあるので、レシピの追加などは ModLoader を使ったほうが無難。
 ModLoaderを使用する場合は、BaseModを継承したクラスを作成する。
 その際クラス名の先頭に"mod_"というプレフィックスをつけること。(つけないと ModLoader から認識されません)

  cleanup.bat を実行すると、decompile 時に生成されたフォルダ以下が全て削除されます。
  ソースコードは必ずバックアップを取ることを推奨 します。

3.リソースの作成と配置

 自作のテクスチャを使用する場合は、作成して好きな場所に保存しておくこと。

 自作のリソースは MCPROOT/bin/minecraft/ に配置する。
 公式のファイルとの区別がつきやすいようなフォルダ名・ファイル名にするのが良い。
 (例 : MCPROOT/bin/minecraft/mod/sample.png など)
 (Eclipseを使用する場合は必ず mcp以外の場所 にバックアップを取り、リソースはMCPROOT/eclipse/Client/bin/に配置する)

  cleanup.batを実行すると、decompile時に生成されたフォルダ以下が全て削除されます。
  リソースのマスターデータは別のフォルダにバックアップをすることを推奨 します。

4.コンパイル

 recompile.batを実行する。
 エラーが出た場合は、コマンドプロンプトに詳細が表示されるので原因を取り除く。
 コンパイルに失敗した場合、テストプレイを実行できない。
 (Eclipseを使用する場合でテストプレイをする場合はこの作業はいらない)

5.動作テスト

 startclient.bat を実行すると、変更を加えた状態でテストを行える。
 テストプレイ時は MCPROOT/jars/ が .minecraft/ に相当し、セーブファイルは MCPROOT/jars/saves に作成される。
 (Eclipseを使用する場合この方法以外を使用する(後述))

 テストのためのアイテムやブロックがないときは、既存のセーブデータのコピーによって対処するといいだろう。
 動作テストで満足できないときは、1に戻ってやり直そう。

6.配布ファイルの出力

 配布するファイルを出力する場合は MCPROOT/reobfuscate.bat を実行する。
 ファイル作成に成功すると MCPROOT/reobf に配布する class ファイルとリソースデータが出力される。
 (Eclipseを使用する場合、先にrecompile.batを起動しリコンパイルしてからreobfuscate.batを起動する。)

7.自作MODを実際に導入して最終テスト

 実際に minecraft.jar に導入してテストを行う。
 ModLoaderを使った場合はclassファイル群をzip化しmodsフォルダにいれる。

 もちろん minecraft.jar内の META-INFフォルダ は削除すること。

 最後に起動テストをして完了。
 うまくいったら好きな場所に公開してみよう。


Eclipseでの開発


1.解凍と起動

先に上の動作の1のデコパイル作業をMCP上で行う
ここからEclipseの日本語版をDLし適当な位置に解凍する。
(このとき、Windowsのパスの長さの制限(以下MAX_PATH)である260文字を超えると解凍時にエラーが出る。
エラーが出た場合、解凍時のディレクトリパスをMAX_PATHを超えないような場所にすること)

解凍が完了したら、eclipse.exeを実行(このとき、eclipse -clean.batの実行をおすすめする)
ワークスペース・ランチャーが起動するのでMCPROOT/eclipse/を指定して「OK」を押す

2.mod作成

modを作成していて、間違った文を書くと

という風に波下線が表示される。

テストプレイは

をクリックするとできる。

Eclipseでのコメント // や /* */などを使って日本語を打たないでください 文字化けでMCP上で読み込めないことが多いです。
また、先に日本語で書いてあるコメントも読み込むと文字化けしてしまうことが多いため、注意が必要
日本語を打ちたい場合は保存時に文字コードをMS932にするかEclipseの設定>一般>ワークスペース>エンコードの文字コードをMS932にしてください。

バッチファイル一覧

  • decompile     minecraft.jar、minecraft_server.jar をデコンパイルして、ソースファイルを src フォルダに出力する
  • recompile     src フォルダにあるソースファイルをコンパイルし、minecraft.jar、minecraft_server.jar を作成する
  • getchangedsrc     MCPROOT/modsrcフォルダに変更したMODのソースが出力される おもにソース配布用
  • startclient     コンパイルされた minecraft.jar を実行し、ゲームを実行する
  • startserver     コンパイルされた minecraft_server.jar を実行し、サーバーを立てる
  • reobfuscate     実行ファイルから差分ファイルを割り出し、配布用の class ファイルとリソースを出力する
  • cleanup     デコンパイルで作成されたフォルダを全て削除する (削除されたファイルは元に戻せないので注意)
  • updatemd5     ファイルのMD5を更新する
  • updatemcp     MCP本体のアップデート

具体例

関連リンク

編集用コメント

コメント欄はMirahezeへの移行に伴い削除されます。
今後はMinecraft Japan Wiki提供Discordサーバーをご利用ください。

コメントログ

最終更新:2021年01月22日 20:08