提供: Minecraft Modding Wiki
移動先: 案内検索
(一行コメント)
(解説を追加。)
1行目: 1行目:
 
{{前提MOD|reqmod="ModLoader"}}
 
{{前提MOD|reqmod="ModLoader"}}
{{Stb}}
 
 
作成するクラス<br/>
 
作成するクラス<br/>
 
mod_hoge<br/>
 
mod_hoge<br/>
7行目: 6行目:
 
ここは、[[ブロックの追加]]を理解した中級者向けのチュートリアルです。<br />
 
ここは、[[ブロックの追加]]を理解した中級者向けのチュートリアルです。<br />
  
==ソースの解説==
+
==全体の完成形==
  
 
===mod_hogeクラス作成===
 
===mod_hogeクラス作成===
22行目: 21行目:
 
     public String fileToOverride;
 
     public String fileToOverride;
 
     public String textureFilePath;
 
     public String textureFilePath;
 +
    public static int imageIDTop, imageIDSide ;
 
      
 
      
 
     public mod_hoge()
 
     public mod_hoge()
140行目: 140行目:
 
</source>
 
</source>
  
 +
==ソースの解説==
 +
 +
基本的な所は[[ブロックの追加]]と変わりませんので、変更するところだけを解説します。<br />
 +
 +
===mod_hogeクラス===
 +
 +
<source lang="java">
 +
 +
    textureFilePathtop = "/block/hogetop.png";
 +
    textureFilePathside = "/block/hogeside.png";
 +
 +
</source>
 +
 +
ここで、追加するテクスチャの種類を増やしています。<br />
 +
 +
===BlockHogeクラス===
 +
 +
<source lang="java">
 +
 +
    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;
 +
            }
 +
        }
 +
}
 +
 +
</source>
 +
 +
ここが、今回の重要ポイントです。<br />
 +
 +
<source lang="java">
 +
 +
getBlockTextureFromSideAndMetadata(int i, int j)
 +
 +
</source>
 +
 +
これで、ブロックのテクスチャを指定しています。
 +
 +
iの中の数字は、0~5まであり<br />
 +
0が上 1が下 2~5が周りのテクスチャを指定しています。
  
  
147行目: 196行目:
 
----
 
----
 
* imageIDTop,imageIDSideの宣言が抜けてませんか?  public static int imageIDSide;あたりがいるかと --[[特別:投稿記録/219.99.11.26|219.99.11.26]] 2012年3月30日 (金) 21:16 (JST)
 
* imageIDTop,imageIDSideの宣言が抜けてませんか?  public static int imageIDSide;あたりがいるかと --[[特別:投稿記録/219.99.11.26|219.99.11.26]] 2012年3月30日 (金) 21:16 (JST)
 +
 +
解説を追加。 

2012年3月30日 (金) 22:51時点における版

この記事は"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)

解説を追加。