提供: Minecraft Modding Wiki
2012年12月3日 (月) 06:27時点におけるTakanasayo (トーク | 投稿記録)による版 (作成)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索
この記事は執筆中です。加筆してくださる人を募集しています。

ForgeModLoader(MinecraftForge)にはModLoaderの機能が含まれているが、一部のMODが正常に機能しない。
これはForgeで新たに追加されたメソッドが、既存のメソッドを呼ばなくなってしまった事に起因する。

このページでは、実際に使われなくなったメソッドを公開する。

Block.class

float blockStrength(EntityPlayer par1EntityPlayer)

このメソッドは、ブロックの破壊速度を返す。
規定値はcanHarvestBlockを参照し、ツールの種類に合わせた破壊速度を返す。

このメソッドはForge環境では非推奨アノテーションが付与されており、他から参照されない。
代わりに

float blockStrength(World world, EntityPlayer player, int x, int y, int z)

もしくは

float blockStrength(EntityPlayer player, int meta)

を使う事が推奨されている。

blockStrength(EntityPlayer par1EntityPlayer) がオーバーライドされたMODは、Forgeでは正常に動作しない。


Block.func_50074_q()

このメソッドは、シルクタッチで回収可能かどうかを返す。
規定値は、renderAsNormalBlock() && !isBlockContainer を返す。

Forge環境では canSilkHarvest() となっているが、これは他から参照されない。
にもかかわらず、非推奨アノテーションも付与されていない。
代わりに

boolean canSilkHarvest(World world, EntityPlayer player, int x, int y, int z, int metadata)

を使う必要がある。

func_50074_q()がオーバーライドされたMODは、Forgeでは正常に動作しない。

対応するForgeのバージョン

筆者が確認したところ、[1.2.5]Forge3.3.7_135 ~ [1.4.5]Forge6.4.0_397 まで一切修正されていない。
ModLoader用のMODをMinecraftForgeに移植する際には注意が必要である。

対応方法

ModLoaderとForgeの両対応のMODを作りたいなら、これらのメソッドを両方定義してやる必要がある。
片方だけでは、もう一方で動かなくなるので注意しよう。