提供: Minecraft Modding Wiki
2012年3月30日 (金) 22:51時点におけるShift (トーク | 投稿記録)による版 (解説を追加。)
移動先: 案内検索

この記事は"ModLoader"を前提MODとしています。

作成するクラス
mod_hoge
BlockHoge

ここは、ブロックの追加を理解した中級者向けのチュートリアルです。

全体の完成形

mod_hogeクラス作成

mod_***クラスを作成します。

mod_hogeソース

package net.minecraft.src;

public class mod_hoge extends BaseMod{

    public static Block oreHoge;
    public int blockID;
    public String fileToOverride;
    public String textureFilePath;
    public static int imageIDTop, imageIDSide ;
    
    public mod_hoge()
    {
    }
    public void load()
    {
    	blockID = 120;
    	fileToOverride = "/terrain.png";
    	textureFilePathtop = "/block/hogetop.png";
    	textureFilePathside = "/block/hogeside.png";

    /*
     BlockHogeクラスから新規BlockのIDとテクスチャファイルを指定
     blockID:追加するBlockのIDを指定 ここでは120として定義
     fileToOverride:GUIインベントリを使用しない場合は"/terrain.png"
             GUIインベントリを使用する場合は"/gui/items.png"
     textureFilePath:テクスチャの参照ファイルパスを指定
    */
    	oreHoge = new BlockHoge(blockID, 0);
      imageIDTop = ModLoader.addOverride(fileToOverride, textureFilePathtop);
      imageIDSide = ModLoader.addOverride(fileToOverride, textureFilePathside);
    /*
     setHardness:対象Blockの硬さをFloatで指定 デフォルトは3F
    */
    	oreHoge.setHardness(3F);
    /*
     setBlockName:対象Blockの名前を指定
    */
    	oreHoge.setBlockName("oreHoge");
    /*
     setResistance:対象Blockの爆破耐性をFloatで指定 デフォルトは5F
    */
    	oreHoge.setResistance(5F);
    /*
     setStepSound:対象Blockの上を歩いた際の音を指定
     下記では石の上を歩いた場合と同じ音を参照
    */
    	oreHoge.setStepSound(Block.soundStoneFootstep);
    /*
     setLightValue:対象ブロックを発光させる場合、明るさをFloatで指定
    */
    	oreHoge.setLightValue(1.0F);
    /*
     ModLoader.registerBlock:指定したBlockデータを登録します。
    */
    	ModLoader.registerBlock(oreHoge);
    /*
     ModLOader.AddName:Minecraftで表示させるBlockの名前を指定
    */
        ModLoader.AddName(oreHoge, "Hoge Ore");
    }
    public String getVersion()
    {
            return "1.0.0";
    }
}

BlockHogeクラス作成

BlockHogeクラスを作成します。 Blockクラスを継承して作成します。

package net.minecraft.src;

import java.util.Random;

public class BlockHoge extends Block
{
  /*
  親クラスを初期化する必要があるため定義
  */
  public BlockHoge(int i, int j)
  {
    /*
    Material.rock:石と同じ処理をさせる定義をしているだけです。
    */
	super(i, j, Material.rock);
  }

  /*
  ここで複数のテクスチャを指定しています。
  */
    public int getBlockTextureFromSideAndMetadata(int i, int j) {
        {
            if(i == 1)
            {
                return mod_hoge.imageIDTop;
            }
            if(i == 0)
            {
                return mod_hoge.imageIDTop;
            }else
            {
                return mod_hoge.imageIDSide;
            }
        }
	}

    /*
  ブロックが破壊された時にドロップするものを設定
  returnでthis.blockIDなので同じ物をドロップさせています
  */
  public int idDropped(int i, int j,Random random)
    {
        return this.blockID;
    }
    /*
  上記破壊時のドロップアイテムの個数を指定
  returnで1個ドロップするように指定しています。
  */
  public int quantityDropped(Random random)
    {
        return 1;
    }
}

ソースの解説

基本的な所はブロックの追加と変わりませんので、変更するところだけを解説します。

mod_hogeクラス

textureFilePathtop = "/block/hogetop.png";
    	textureFilePathside = "/block/hogeside.png";

ここで、追加するテクスチャの種類を増やしています。

BlockHogeクラス

public int getBlockTextureFromSideAndMetadata(int i, int j) {
        {
            if(i == 1)
            {
                return mod_hoge.imageIDTop;
            }
            if(i == 0)
            {
                return mod_hoge.imageIDTop;
            }else
            {
                return mod_hoge.imageIDSide;
            }
        }
	}

ここが、今回の重要ポイントです。

getBlockTextureFromSideAndMetadata(int i, int j)

これで、ブロックのテクスチャを指定しています。

iの中の数字は、0~5まであり
0が上 1が下 2~5が周りのテクスチャを指定しています。



自分のコメントを追加
Minecraft Modding Wikiはすべてのコメントを歓迎します。匿名で投稿したくない場合は、アカウント作成またはログインしてください。無料です。


  • 確かめていませんが、加筆中なのでまだ入れていないだけかと --59.134.55.116 2012年3月30日 (金) 22:02 (JST)

  • imageIDTop,imageIDSideの宣言が抜けてませんか? public static int imageIDSide;あたりがいるかと --219.99.11.26 2012年3月30日 (金) 21:16 (JST)

解説を追加。