提供: Minecraft Modding Wiki
2014年10月5日 (日) 13:22時点におけるShift (トーク | 投稿記録)による版
移動先: 案内検索

この記事は"Minecraft Forge Universal 9.10.0.xxx~"を前提MODとしています。

Wood pickaxe.png
初心者向けのチュートリアルです。
C block.png
Blockに関係のあるチュートリアルです。

ワールド上に設置できる簡単なブロックの追加方法

ブロックの追加

ソースコード

  • 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の光レベルです。