« Minecraft MOD開発 1 | トップページ | Minecraftレベルデザイン考 »

2014年3月 9日 (日)

Minecraft MOD開発 2

気を取り直して環境構築をやり直す。

こちらからforge-1.6.4-9.11.1.965-src.zipをダウンロードして解凍。

install.cmdを実行する。

MCPをダウンロードしたりして、膨大なログを吐いて終わった。
1時間半くらいかかった。

前回と同じように\forge-1.6.4-9.11.1.965-src\forge\mcp\src\minecraft\net\minecraft\block\BlockStone.javaを

        return Block.grass.blockID;
と修正して、\forge-1.6.4-9.11.1.965-src\forge\mcpのrecompile.bat, startclient.batを実行したら、石ブロックを破壊した時に草ブロックになるのが確認できた。

minecraft本体のソースは読むことができるようになったが、今回はMODをデコンパイルしたい。
興味があるのは、EnderIOである。
EnderIO-1.6.4-0.11.3.330.jarを7-zipで解凍する。
\forge-1.6.4-9.11.1.965-src\forge\mcp\jars\minecraft_server.1.6.4.jarを7-zipで開く。
ここに先ほど解凍したEnderIOのファイルを入れ、META-INFを削除するという旧バージョンでのMOD導入手順を行った。
cleanup.batしてからdecompile.batをすると、エラーが出るもののデコンパイルできた。

\forge-1.6.4-9.11.1.965-src\forge\mcp\src\minecraft_server\crazypants\enderio\machine\solar\BlockSolarPanel.javaというファイルがあり、これがEndierIOの太陽光パネルを定義しているらしい。
class TileEntitySolarPanelにはreceiveEnergyやextractEnergyというメソッドがあり、Redstone Fluxエネルギーのやりとりを記述しているように見える。
このクラスはIInternalPowerReceptorとIPowerEmitterをインターフェースとして実装している。
この2つのインターフェースは\forge-1.6.4-9.11.1.965-src\forge\mcp\src\minecraft_server\crazypants\enderio\powerにある。
このディレクトリにはRedstoneFluxPowerReceptor.javaというファイルもあり、いかにもRFの送受信に関わっていそうだ。
IInternalPowerReceptor.javaはcofh.api.energy.IEnergyHandlerをインポートしてみる。
\cofh\api\energyはEnderIO-1.6.4-0.11.3.330.jar、Minechem-5.0.4.jar、CoFHCore-2.0.0.2.jarに共通して含まれている。
Team CoFHはThemal Expansionの開発者なので、Redstone Fluxの仕組みは彼らが主導して開発し、EnderIOとMineChemがAPIを利用して共有したのだろう。

\cofh\api\energyにはEnergyStorage.java、IEnergyContainerItem.java、IEnergyHandler.java、IEnergyStorage.java、ItemEnergyContainer.java、TileEnergyHandler.javaの6つのファイルがある。
全部合わせても8KBほどなので、読めるだろう。
ここを理解すれば、Redstone Fluxを使うアイテムを自作できるのだと思う。

« Minecraft MOD開発 1 | トップページ | Minecraftレベルデザイン考 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1499066/55305395

この記事へのトラックバック一覧です: Minecraft MOD開発 2:

« Minecraft MOD開発 1 | トップページ | Minecraftレベルデザイン考 »