提供: Minecraft Modding Wiki
移動先: 案内検索
(下から三行目の(/minecraft)を消しました)
(不要な処理はなかったけど、MODIDの持ち方を変えた。)
 
(7人の利用者による、間の9版が非表示)
1行目: 1行目:
 
{{前提MOD|reqmod="Minecraft Forge Universal 9.10.0.xxx~"}}
 
{{前提MOD|reqmod="Minecraft Forge Universal 9.10.0.xxx~"}}
 
+
{{チュートリアル難易度|difficulty=0|clear=none}}
 +
{{チュートリアルカテゴリー|difficulty=0|type=Block}}
 +
<p>ワールド上に設置できる簡単なブロックの追加方法</p>
 
==ブロックの追加==
 
==ブロックの追加==
<p>ワールド上に設置できる簡単なブロックな追加方法</p>
+
簡単な無機能ブロックの追加
 
 
 
===ソースコード===
 
===ソースコード===
 
*SampleBlockCore.java
 
*SampleBlockCore.java
18行目: 19行目:
 
import cpw.mods.fml.common.registry.LanguageRegistry;
 
import cpw.mods.fml.common.registry.LanguageRegistry;
  
@Mod(modid="BlockSampleMod", name="BlockSampleMod", version="1.0")
+
@Mod(modid=SampleBlockCore.MOD_ID, name="BlockSampleMod", version="1.0")
 
public class SampleBlockCore
 
public class SampleBlockCore
 
{
 
{
 +
        public static final String MOD_ID = "BlockSampleMod";
 
public static Block blockSample;
 
public static Block blockSample;
 
public static int blockSampleID = 4087;
 
public static int blockSampleID = 4087;
62行目: 64行目:
 
this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択
 
this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択
 
this.setUnlocalizedName("blockSample"); //システム名の設定
 
this.setUnlocalizedName("blockSample"); //システム名の設定
this.func_111022_d("block_sample"); //ブロックのテクスチャの指定
+
this.setTextureName("samplemod:block_sample"); //ブロックのテクスチャの指定
 
//いらないものは消してください
 
//いらないものは消してください
 
this.setHardness(1.5F); //硬さ
 
this.setHardness(1.5F); //硬さ
119行目: 121行目:
 
</source>
 
</source>
 
blockSampleの変数にBlockSampleのインスタンスを代入。<br>
 
blockSampleの変数にBlockSampleのインスタンスを代入。<br>
一つ目の引数は、ブロックID、二つ目はそのブロックの素材。(ここでは石)
+
一つ目の引数は、ブロックID、二つ目はそのブロックのMaterial。
 +
Materialとはブロックの性質として、可燃性であるか、自分自身をドロップするか、ピストンなどで動かすことができるか、マップ上での色、透明(例:葉)か、地面につもる(例:雪)かをまとめて定義したもの。
 +
既にMaterial.javaに定義されているものと同じ性質で良ければ、そのまま使える。
 +
ここでは上記の性質について石ブロックと同じものを使うので、Material.rockをそのまま使っている。
  
 
===BlockSample.java===
 
===BlockSample.java===
126行目: 131行目:
 
this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択
 
this.setCreativeTab(CreativeTabs.tabBlock);//クリエイティブタブの選択
 
this.setUnlocalizedName("blockSample"); //システム名の設定
 
this.setUnlocalizedName("blockSample"); //システム名の設定
this.func_111022_d("block_sample"); //ブロックのテクスチャの指定
+
this.setTextureName("samplemod:block_sample"); //ブロックのテクスチャの指定(<ドメイン名>:<登録名>)
 
//いらないものは消してください
 
//いらないものは消してください
 
this.setHardness(1.5F); //硬さ
 
this.setHardness(1.5F); //硬さ
134行目: 139行目:
 
</source>
 
</source>
 
システム名は登録しないと、表示名が登録できません。<br>
 
システム名は登録しないと、表示名が登録できません。<br>
ブロックのテクスチャは、'''"assets/textures/blocks/登録名"'''においてください。<br>
+
ブロックのテクスチャは、'''"src/minecraft/assets/ドメイン名/textures/blocks/登録名"'''においてください。<br>
今回:"assets/minecraft/textures/blocks/block_sample.png"<br>
+
今回:"src/minecraft/assets/samplemod/textures/blocks/block_sample.png"<br>
 +
ドメイン名は全て小文字にしてください。<br>
 
明るさは1.0Fでレベル15の光レベルです。
 
明るさは1.0Fでレベル15の光レベルです。

2015年12月11日 (金) 22:53時点における最新版

この記事は"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=SampleBlockCore.MOD_ID, name="BlockSampleMod", version="1.0")
public class SampleBlockCore
{
        public static final String MOD_ID = "BlockSampleMod";
	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の光レベルです。