この記事は執筆中です。加筆してくださる人を募集しています。 |
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を作りたいなら、これらのメソッドを両方定義してやる必要がある。
片方だけでは、もう一方で動かなくなるので注意しよう。