概要
何の機能もない基本的なブロックを追加する。
ソースコード
package tutorial.aluminiummod;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
@Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0")
public class AluminiumMod {
public static Item aluminium;
//追加するブロックの宣言
public static Block blockAluminium;
@EventHandler
public void perInit(FMLPreInitializationEvent event) {
aluminium = new Item()
.setCreativeTab(CreativeTabs.tabMaterials)
.setUnlocalizedName("aluminium")
.setTextureName("aluminiummod:aluminium");
GameRegistry.registerItem(aluminium, "aluminium");
//Blockを継承したクラスのインスタンスを生成し、代入する。
blockAluminium = new AluminiumBlock(Material.rock)
//システム名の登録
.setBlockName("blockAluminium")
//テクスチャ名の登録
.setBlockTextureName("aluminiummod:aluminium_block");
//GameRegistryへの登録
GameRegistry.registerBlock(blockAluminium, "blockAluminium");
}
}
package tutorial.aluminiummod;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
public class AluminiumBlock extends Block {
public AluminiumBlock(Material material) {
super(material);
//クリエイティブタブの登録
this.setCreativeTab(CreativeTabs.tabBlock);
//硬さの設定
this.setHardness(5.0F);
//爆破耐性の設定
this.setResistance(10.0F);
//ブロックの上を歩いた時の音を登録する。
this.setStepSound(Block.soundTypeMetal);
//回収するのに必要なツールを設定する。
this.setHarvestLevel("pickaxe", 2);
//明るさの設定
this.setLightLevel(0.0F);
}
}
解説
Block
minecraftのブロックはすべてこのクラスを継承している。
modで追加するブロックもこのクラスを継承することになる。
コンストラクタ(Material material)
そのブロックのマテリアルを設定する。
Materialにまとめれているので確認されたし。
Block setBlockName(String name)
ブロックのシステム名を登録するメソッド。
Block setBlockTextureName(String name)
ブロックのテクスチャを登録するメソッド。
アイテムと同様。
Block setCreativeTab(CreativeTabs tab)
ブロックをクリエイティブタブに登録するメソッド。
アイテムと同様。
Block setHardness(float hardness)
ブロックの硬さを設定する。
数値を上げると硬くなる。
黒曜石は50.0F。金・ラピスラズリ以外の圧縮ブロックが5.0F。net.minecraft.block.Blockを参照。
Block setResistance(float resistance)
ブロックの爆破耐性を設定する。
数値を上げると耐えられる爆発力が高くなる。
黒曜石は2000.0F。圧縮ブロックは10.0F。こちらもnet.minecraft.block.Blockを参照。
Block setStepSound(StepSound sound)
ブロックの上を歩いたり、破壊したりしたときになる音の種類を設定する。
void setHarvestLevel(String type, int level)
typeで適正ツールの種類を指定、levelでレベルを指定する。
レベルは高いほど要求するツールが強力なものになる。
Block setLightLevel(float level)
ブロックの光度を設定する。
ここで渡した値に15をかけたものが光源レベルになる。
0.0~1.0以外は無効。
GameRegistry
Block registerBlock(Block block, String name)
GameRegistryに追加ブロックを登録するメソッド。
使用例
オファレンブロックを追加する部分。
メタデータなどを使っている箇所は省略した。
+
|
オファレンMOD |
package nahama.ofalenmod;
/*略*/
/**@author Akasata Nahama*/
@Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION)
public class OfalenModCore {
public static final String MODID = "OfalenMod";
public static final String MODNAME = "Ofalen Mod";
public static final String VERSION = "[1.7.10]1.0.0";
/*略*/
/**最初に行われる処理。アイテム・ブロックの追加などを行う*/
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
/*略*/
//ブロックを設定するメソッドを実行
OfalenModBlockCore.registerBlock();
/*略*/
}
/*略*/
}
package nahama.ofalenmod.core;
/*略*/
public class OfalenModBlockCore {
/*略*/
public static Block blockOfalen;
/*略*/
/**ブロックを設定する*/
public static void registerBlock () {
/*略*/
blockOfalen = new OfalenBlock()
.setBlockName("blockOfalen")
.setBlockTextureName("ofalenmod:ofalen_block-");
GameRegistry.registerBlock(blockOfalen, ItemOfalenBlock.class, "blockOfalen");
/*略*/
}
}
package nahama.ofalenmod.block;
/*略*/
public class OfalenBlock extends Block {
/*略*/
public OfalenBlock() {
super(Material.rock);
this.setCreativeTab(OfalenModCore.tabOfalen);
this.setHardness(7.5F);
this.setResistance(15.0F);
this.setStepSound(Block.soundTypeMetal);
this.setLightLevel(1.0F);
this.setHarvestLevel("pickaxe", 3);
}
/*略*/
}
|
このままテストプレイをしてみると、テクスチャがない状態ではピンクと黒のデフォルトテクスチャになってしまう。
また、名前も、tile.blockAluminium.nameとなる。
これらの解決方法は次回。
コメント
この項目に関する質問などをどうぞ。
最終更新:2015年07月11日 16:38