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

2014年3月11日 (火)

Minecraft MOD開発 3

forge-1.6.4-9.11.1.965-srcをNAS(しかもRAID5)に置いていたので、コンパイルが猛烈に遅かった。C:\に置き直す。

install.cmdを実行する。30分くらいで終わった。(ログ)

今回はMine Factory Reloaded 2に興味がある。PowerCrystalsCore-1.1.8-9.jarMineFactoryReloaded-2.7.5-352.jarをダウンロードして解凍し、7-zipでC:\forge-1.6.4-9.11.1.965-src\forge\mcp\jars\minecraft_server.1.6.4.jarへ入れる。

PowerCrystalsCore-1.1.8-9.jarには以下のディレクトリが含まれる。MFR2はエネルギーにThermal ExpansionのRedstone Fluxを使うので、そのためのプログラムがcofh以下にあるのだろう。PowerCrystalsが開発したコアAPIはpowercrystals以下にあると考えられる。

META-INF
assets
cofh
powercrystals
pcc_at.cfg

powercrystalsの下にはcoreディレクトリがあり、以下のディレクトリが含まれる。GUIを提供する機能もあるようなので、私がMODを開発するときはこれを使うことも検討しよう。

asm
at
block
gui
inventory
mod
net
oredict
position
random
render
updater
util
CoreCore.class
CoreLoader.class

この状態でstartclient.batを実行してクリエイティブモードを開始しても、MFR2のアイテムが見あたらなかった。startclient.batはminecraft_server.1.6.4.jarを実行しているのではないのだろうか?

目当てはMFR2のソースコードなので、decompile.batを実行する。4コアCPUでCPU使用率がほぼ25%になるので、計算能力がボトルネックなのだろう。大量のエラーを吐いてデコンパイルは失敗したが、C:\forge-1.6.4-9.11.1.965-src\forge\mcp\src\minecraft_server\powercrystals\minefactoryreloaded下にソースファイルが生成された。

ディープストレージユニット関係のソースがgithubで見つかった。getSizeInventoryが常に3を返すことから、インベントリのうち1つで格納しているブロックのIDを保持し、残り2つで格納数を32bit(最大値: 約20億)を保持していると推測される。

フォーラムで説明されているmergeItemStackの動作は参考になる。

実環境で実行してみたら、ディープストレージユニットには本当にインベントリが3つあるな。3つのインベントリに別のアイテムを置くことができて、右下のアイテムだけが20億個まで格納できるようだ。


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

コメント

コメントを書く

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

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

トラックバック

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

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

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