このページはForge wiki内のBasic Blocks Tutorialの翻訳記事です。多くが意訳で、雑な翻訳であること、見やすさに応じて太字などは独自に変えられている場合がありますのでご注意ください。
目次
Havvy's Minecraft Forge Tutorials(Basic Blocks)
終着点
- Minecraftにおける新しいブロックの追加の基礎を学ぶ
- Dirt,Stone,GlowStoneに似ているものを追加する
- 以下のブロックのメソッドの利用方法について理解する
- setStepSound
- setResistance
- setHardness
- setCreativeTab
- 以下のブロックのメソッドのオーバーライドの利用方法について理解する。
- idDropped
- quantityDropped
前提知識
- Forgeの開発環境が整っていること
- Basic Moddingの理解
基本
ブロックはMinecraftのワールドの大部分を構成しています。プレイヤーやモブ、壁画やアイテム以外はすべてがブロックです。
シンプルなブロックを作ることは、Blockのコンストラクタがデフォルトでpublicなので、アイテムを作ることよりも簡単です。一方で、ブロックは設定しなくてはならないことを多く持っています。すべてのブロックは以下のプロパティを持ちます。
Block ID
ゲーム内では、ブロックに0~4095の一意の値をつけます。500からはじめ1つのブロックにつき1づつ使います。
Texture ID
ユーザーに見せるテクスチャ
Material マテリアルは、次のセクションで解説する様々なプロパティを設定します。
Blast Resistance
クリーパーやTNTなどの爆発をどの程度軽減するか。
Luminance
どの程度そのブロックが明るく輝くか
Hardness
そのブロックを掘るのにどれだけ時間がかかるか
Creative Tab
どのクリエイティブのタブに属するか。
Sounds
エンティティがブロックの上を歩いた時、どのような音が聞こえるか。
Materials
残りのプロパティと比べると、マテリアルは何をセットするか複雑です。ですが、良いニュースなことに、あなたはおそらくマテリアルを作成する必要はありません。マテリアルは以下のプロパティによって設定されます。
- ブロックが燃えるかどうか
- ブロックがそれ自身でドロップされるかどうか
- ブロックがピストンなどで押すことができるかどうか
- マッピングにおけるカラー
- ブロックが雪や葉っぱのように半透明かどうか
- ブロックが雪のように地面をカバーするかどうか
正確なリストは、net.minecraft.src.Materialにて見つけることができます。それらの中から選ぶことは難しいはずがありません。もし、あなたの望むようなマテリアルが存在しなければ、新しく作って使えばいいのです。
GenericBlock
Blockを継承しなくてもブロックをすることは可能ですが、カスタムテクスチャを利用する際は便利です。そのため、以下のクラスをtutorial.generic.packageに追加してください。
package tutorial.generic; import net.minecraft.block.Block; import net.minecraft.block.material.Material; public class GenericBlock extends Block { public GenericBlock (int id, int texture, Material material) { super(id, texture, material); } @Override public String getTextureFile () { return CommonProxy.BLOCK_PNG; } }
このコンストラクタはブロックのコンストラクタに渡しているだけです。Blockに対しての改良は、独自のテクスチャファイルを読み込むためのgetTextureFileに対してのオーバーライドのみです。 残りの設定はbaseModクラス内で行います。
Generic Dirt
ブロッククラスを見てください。Dirtは0.5Fの硬さ、じゃりと同じ音を持っています。ここでは、少しのメソッドしかありません。
public final static Block genericDirt = new GenericBlock(500, 1, Material.ground) .setHardness(0.5F).setStepSound(Block.soundGravelFootstep) .setBlockName("genericDirt").setCreativeTab(CreativeTabs.tabBlock);
見る限り、ブロックIDは500になり、textureは0でgroundマテリアルを利用します。 setHardnessでは、float値を取ります。dirtは0.5Fで、黒曜石は50Fです。硬さについては、[Minecraft Wiki]にて詳しく記述されています。