2016/4/29 記述 Minecraft1.9版 MCP(Mod Coder Pack)を使ってMinecraftを逆コンパイルしよう。 ※検証wikiにそぐわないと判断されたら、本ページごと削除してください。 ・JDKインストール 例:Java SE Development Kit 8u91 ・JDKのパスを通す 環境変数 PathにJDKのbinを追加する。 例:C:\Program Files (x86)\Java\jdk1.8.0_91\bin など。 ※既存のパス壊すとか、ミスらないように注意 ・MCPをダウンロード MCP 9.24(beta1) MCP公式サイトにはMinecraft 1.8までのMCPしか配置されていない。 Minecraft1.9の物はbeta中のようである MCP開発者Twitterから(+Mojangの中の人でもある(?)) https://twitter.com/seargedp/status/705970418486788096 http://www.mediafire.com/download/3ww1inazlkamkcc/mcp924-beta1.zip ・MCPを解凍する 配置先はパスの長さなどを考慮し、ドライブルートなどが良い 以降の例は E:\mcp924-beta1\ に解凍したとして解説する ・minecraft_server jarをダウンロード・配置 https://minecraft.net/download 画面下部のMultiplayer Serverからダウンロードする。 ※が、現時点の最新版(minecraft_server.1.9.2.jar)だとMCPが未対応(後述)のため、1.9を落とすこと。 https://s3.amazonaws.com/Minecraft.Download/versions/1.9/minecraft_server.1.9.jar ファイル名をminecraft_server.jarに変更し E:\mcp924-beta1\jars\に配置する ・デコンパイル時のヒープの割り当てを変更する 筆者の環境ではJAVAデフォルトの300Mではデコンパイル時にOutOfMemoryErrorが発生したため、 以下のようにヒープの割り当てを1Gに設定することで解消した。 E:\mcp924-beta1\conf\mcp.cfg 174行目 修正前:CmdFernflower = %s -jar %s -din=1 -rbr=1 -dgs=1 -asc=1 -rsy=1 -iec=1 -jvn=1 -log=WARN {extra} {indir} {outdir} 修正後:CmdFernflower = %s -Xms1G -Xmx1G -jar %s -din=1 -rbr=1 -dgs=1 -asc=1 -rsy=1 -iec=1 -jvn=1 -log=WARN {extra} {indir} {outdir} ・デコンパイル E:\mcp924-beta1\decompile.batを起動する 全てが上手くいけば、 E:\mcp924-beta1\srcにソースが出力される。 あとは煮るなり焼くなり(ライセンスの範囲内で) ・メモ E:\mcp924-beta1\docs\README-MCP.TXTは読めれば読むこと。 クライアント側のlibraries,assets,versionsも配置する必要があるが、 自動的に%APPDATA%\.minecraftから取得するので、 バニラの通常インストールであれば考慮不要 ※%APPDATA%\.minecraft\versions\1.9 E:\mcp924-beta1\logsにデコンパイル時のログが出力されるためトラブルシューティングに使用する。 "Decompile failed"で止まる場合、JVMの例外はログに出力されないため ログに出力されるデコンパイルコマンドを直接コマンドプロンプトで再実行すると、例外が見れる。 #OutOfMemoryErrorの時がそうだった 最新版である1.9.2のデコンパイルは 設定を変更して実施しても難読化の解除等でエラーとなる(ぽ) (E:\mcp924-beta1\conf\version.cfg)