提供: Minecraft Modding Wiki
この記事は"Minecraft Forge Universal 9.10.0.xxx~"を前提MODとしています。 |
ワールド上に設置できる簡単なブロックの追加方法
ブロックの追加
簡単な無機能ブロックの追加
ソースコード
- SampleBlockCore.java
package mods.blocksample; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid="BlockSampleMod", name="BlockSampleMod", version="1.0") public class SampleBlockCore { public static Block blockSample; public static int blockSampleID = 4087; @EventHandler public void init(FMLInitializationEvent event) { //表示名の登録 LanguageRegistry.addName(blockSample, "Sample Block"); LanguageRegistry.instance().addNameForObject(blockSample, "ja_JP", "サンプル ブロック"); } @EventHandler public void preInit(FMLPreInitializationEvent event) { //ブロックの登録 blockSample = new BlockSample(blockSampleID, Material.rock); GameRegistry.registerBlock(blockSample, "blockSample"); } }
- BlockSample
package mods.blocksample; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; public class BlockSample extends Block { public BlockSample(int par1, Material par2Material) { super(par1, par2Material); this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択 this.setUnlocalizedName("blockSample"); //システム名の設定 this.setTextureName("samplemod:block_sample"); //ブロックのテクスチャの指定 //いらないものは消してください this.setHardness(1.5F); //硬さ this.setResistance(1.0F); //爆破耐性 this.setStepSound(Block.soundStoneFootstep); //ブロックの音 this.setLightValue(1.0F); //明るさ 1.0F = 15 } /* * 以下おまけ * 特に機能がなければ消してしまってください */ @Override public int idDropped(int metadata, Random rand, int fortune) { //ブロックを壊した時にドロップするもの return this.blockID; } @Override public int quantityDropped(Random rand) { //ブロックを壊した時にドロップする量 return 1; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float disX, float disY, float disZ) { //ブロックが右クリックされた時 return false; } }
解説
SampleBlockCore.java
public static Block blockSample; public static int blockSampleID = 4087;
追加するブロックを保持しておく変数と、ブロックのIDを保持しておく変数を宣言
LanguageRegistry.addName(blockSample, "Sample Block"); LanguageRegistry.instance().addNameForObject(blockSample, "ja_JP", "サンプル ブロック");
ゲーム中に表示される名前の登録。
2つめの引数に"ja_JP"を指定することで日本語名称の登録
blockSample = new BlockSample(blockSampleID, Material.rock); GameRegistry.registerBlock(blockSample, "blockSample");
blockSampleの変数にBlockSampleのインスタンスを代入。
一つ目の引数は、ブロックID、二つ目はそのブロックのMaterial。
Materialとはブロックの性質として、可燃性であるか、自分自身をドロップするか、ピストンなどで動かすことができるか、マップ上での色、透明(例:葉)か、地面につもる(例:雪)かをまとめて定義したもの。
既にMaterial.javaに定義されているものと同じ性質で良ければ、そのまま使える。
ここでは上記の性質について石ブロックと同じものを使うので、Material.rockをそのまま使っている。
BlockSample.java
super(par1, par2Material); this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択 this.setUnlocalizedName("blockSample"); //システム名の設定 this.setTextureName("samplemod:block_sample"); //ブロックのテクスチャの指定(<ドメイン名>:<登録名>) //いらないものは消してください this.setHardness(1.5F); //硬さ this.setResistance(1.0F); //爆破耐性 this.setStepSound(Block.soundStoneFootstep); //ブロックの音 this.setLightValue(1.0F); //明るさ 1.0F = 15
システム名は登録しないと、表示名が登録できません。
ブロックのテクスチャは、"src/minecraft/assets/ドメイン名/textures/blocks/登録名"においてください。
今回:"src/minecraft/assets/samplemod/textures/blocks/block_sample.png"
ドメイン名は全て小文字にしてください。
明るさは1.0Fでレベル15の光レベルです。