提供: Minecraft Modding Wiki
移動先: 案内検索
(新規作成)
 
(Blockクラスのコンストラクタがprotectedだったので、継承クラスを作成)
10行目: 10行目:
  
 
import net.minecraft.block.Block;
 
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
 
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.Mod.EventHandler;
 
import cpw.mods.fml.common.Mod.EventHandler;
25行目: 24行目:
 
{
 
{
 
//ブロックのインスタンス生成
 
//ブロックのインスタンス生成
blockSample = new Block(Material.rock)
+
blockSample = new SampleBlock()
 
.setCreativeTab(CreativeTabs.tabBlock)/*クリエイティブタブの選択*/
 
.setCreativeTab(CreativeTabs.tabBlock)/*クリエイティブタブの選択*/
 
.setUnlocalizedName("blockSample")/*システム名の設定*/
 
.setUnlocalizedName("blockSample")/*システム名の設定*/
42行目: 41行目:
 
 
 
}
 
}
 +
}
 +
</source>
 +
*SampleBlock.java
 +
<source lang = "java">
 +
package mods.blocksample;
 +
 +
import net.minecraft.block.Block;
 +
import net.minecraft.block.material.Material;
 +
 +
public class SampleBlock extends Block {
 +
 +
    public SampleBlock() {
 +
        super(Material.rock);
 +
    }
 
}
 
}
 
</source>
 
</source>

2014年5月23日 (金) 22:37時点における版

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

ブロックの追加

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

ソースコード

  • SampleBlockCore.java
package mods.blocksample;

import net.minecraft.block.Block;
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="BlockSampleMod", name="BlockSampleMod", version="1.0")
public class SampleBlockCore
{
	public static Block blockSample;

	@EventHandler
	public void preInit(FMLPreInitializationEvent event)
	{
		//ブロックのインスタンス生成
		blockSample = new SampleBlock()
		.setCreativeTab(CreativeTabs.tabBlock)/*クリエイティブタブの選択*/
		.setUnlocalizedName("blockSample")/*システム名の設定*/
		.setTextureName("samplemod:block_sample")/*ブロックのテクスチャの指定*/
		/*いらないものは消してください*/
		.setHardness(1.5F)/*硬さ*/
		.setResistance(1.0F)/*爆破耐性*/
		.setStepSound(Block.soundStoneFootstep)/*ブロックの上を歩いた時の音*/
		/*.setBlockUnbreakable()*//*ブロックを破壊不可に設定*/
		/*.setTickRandomly(true)*//*ブロックのtick処理をランダムに。デフォルトfalse*/
		/*.disableStats()*//*ブロックの統計情報を保存しない*/
		.setLightOpacity(1)/*ブロックの透過係数。デフォルト0(不透過)*/
		.setLightValue(1.0F);/*明るさ 1.0F = 15*/
		//ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
		GameRegistry.registerBlock(blockSample, "blockSample");
		
	}
}
  • SampleBlock.java
package mods.blocksample;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;

public class SampleBlock extends Block {

    public SampleBlock() {
        super(Material.rock);
    }
}

解説

SampleBlockCore.java

public static Block blockSample;

追加するブロックを保持しておく変数を宣言

blockSample = new Block(Material.rock)
.setCreativeTab(CreativeTabs.tabBlock)/*クリエイティブタブの選択*/
.setUnlocalizedName("blockSample")/*システム名の設定*/
.setTextureName("samplemod:block_sample")/*ブロックのテクスチャの指定*/
/*いらないものは消してください*/
.setHardness(1.5F)/*硬さ*/
.setResistance(1.0F)/*爆破耐性*/
.setStepSound(Block.soundStoneFootstep)/*ブロックの上を歩いた時の音*/
/*.setBlockUnbreakable()*//*ブロックを破壊不可に設定*/
/*.setTickRandomly(true)*//*ブロックのtick処理をランダムに。デフォルトfalse*/
/*.disableStats()*//*ブロックの統計情報を保存しない*/
.setLightOpacity(1)/*ブロックの透過係数。デフォルト0(不透過)*/
.setLightValue(1.0F);/*明るさ 1.0F = 15*/
//ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。
GameRegistry.registerBlock(blockSample, "blockSample");

blockSampleの変数にBlockのインスタンスを代入。引数はそのブロックのMaterial。
Materialとはブロックの性質として、可燃性であるか、自分自身をドロップするか、ピストンなどで動かすことができるか、マップ上での色、透明(例:葉)か、地面につもる(例:雪)かをまとめて定義したもの。 既にMaterial.javaに定義されているものと同じ性質で良ければ、そのまま使える。 ここでは上記の性質について石ブロックと同じものを使うので、Material.rockをそのまま使っている。

システム名を登録しないと、ゲーム内でブロック名を表示することが出来ない。 このシステム名から、英語や日本語等の翻訳名を指定するには、langファイルに適切に記述する必要が有る。 langファイルの取扱については、1.6のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所を参照のこと。
ブロックのテクスチャは、"src/minecraft/assets/ドメイン名/textures/blocks/登録名"に置くこと。
今回:"src/minecraft/assets/samplemod/textures/blocks/block_sample.png"
ドメイン名は全て小文字にすること。