提供: Minecraft Modding Wiki
移動先: 案内検索
2行目: 2行目:
  
 
==無機能ブロックの追加==
 
==無機能ブロックの追加==
 何の機能も無い, しかしワールドに実際に設置できるブロックを追加する. これはブロックを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する.
+
<p>
 +
何の機能も無い, しかしワールドに実際に設置できるブロックを追加する. これはブロックを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する.
 +
</p>
  
 
===ソースコード===
 
===ソースコード===
69行目: 71行目:
  
 
==解説==
 
==解説==
 +
<p>
 
[[無機能アイテムの追加]]で説明した項目はここでは説明しないので注意.  
 
[[無機能アイテムの追加]]で説明した項目はここでは説明しないので注意.  
 +
</p>
  
===BlockSampleCore===
+
===BlockSampleCoreクラス===
====BlockSampleCoreクラス====
 
<source lang = "java">
 
public class BlockSampleCore
 
{
 
public static Block blockSample;
 
 
@Mod.Init
 
public void init(FMLInitializationEvent event)
 
{
 
blockSample = (new BlockSample(1300, 20)).setBlockName("sampleblock").setCreativeTab(CreativeTabs.tabBlock);
 
 
GameRegistry.registerBlock(blockSample);
 
 
LanguageRegistry.addName(blockSample, "Sample Block");
 
LanguageRegistry.instance().addNameForObject(blockSample, "ja_JP", "サンプルブロック");
 
 
GameRegistry.addShapelessRecipe(
 
new ItemStack(blockSample, 1),
 
new Object[]
 
{
 
Block.dirt, Block.dirt
 
});
 
}
 
}
 
</source>
 
----
 
 
<source lang = "java">
 
<source lang = "java">
 
public static Block blockSample;
 
public static Block blockSample;
 
</source>
 
</source>
:新しいブロックの宣言
+
<blockquote>
<br/>
+
新しいブロックの宣言
 +
</blockquote>
 +
 
  
 
<source lang = "java">
 
<source lang = "java">
 
blockSample = (new BlockSample(1300, 20)).setBlockName("sampleblock").setCreativeTab(CreativeTabs.tabBlock);
 
blockSample = (new BlockSample(1300, 20)).setBlockName("sampleblock").setCreativeTab(CreativeTabs.tabBlock);
 
</source>
 
</source>
:Blockを継承したBlockSampleのインスタンスを生成する. BlockSampleの引数はblockId, terrainIdであり, ブロックID1300, Itemと異なり-256する必要はなく, Minecraft 1.2から追加された拡張分4096IDも利用可能. ただし, 既存のItemIDと被るIDは利用できないので注意.
+
<blockquote>
:terrainIdは「terrain.pngの左上から右に数えて20番目」すなわち原木の側面のテクスチャを指す. アイテムと異なり直接指定する必要がある.  
+
Blockを継承したBlockSampleのインスタンスを生成する. BlockSampleの引数はblockId, terrainIdであり, ブロックID1300, Itemと異なり-256する必要はなく, Minecraft 1.2から追加された拡張分4096IDも利用可能. ただし, 既存のItemIDと被るIDは利用できないので注意.
:*setBlockName
+
terrainIdは「terrain.pngの左上から右に数えて20番目」すなわち原木の側面のテクスチャを指す. アイテムと異なり直接指定する必要がある.  
 +
*setBlockName
 
:setItemNameと同等, ブロックの内部名を明記するメソッド.
 
:setItemNameと同等, ブロックの内部名を明記するメソッド.
:*setCreativeTab
+
*setCreativeTab
 
:アイテムのときと同じように, クリティエイティブモードのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabBlockは一番左上のブロック全般タブに追加.
 
:アイテムのときと同じように, クリティエイティブモードのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabBlockは一番左上のブロック全般タブに追加.
<br/>
+
</blockquote>
 +
 
  
 
<source lang = "java">
 
<source lang = "java">
 
GameRegistry.registerBlock(blockSample);
 
GameRegistry.registerBlock(blockSample);
 
</source>
 
</source>
:アイテムと異なり, ブロックはこのメソッドを通して登録する必要がある.  
+
<blockquote>
 +
アイテムと異なり, ブロックはこのメソッドを通して登録する必要がある.  
 +
</blockquote>
  
====BlockSample.java====
+
====BlockSampleクラス====
 
<source lang = "java">
 
<source lang = "java">
 
public class BlockSample extends Block
 
public class BlockSample extends Block
131行目: 115行目:
 
}
 
}
 
</source>
 
</source>
:Blockを継承したBlockSampleクラスを作る. 基本的なことはアイテムと一緒だが, 引数を変えてある. 引数のMaterial.woodはブロックの'''材質'''. ここではテクスチャに合わせて木にしている.  
+
<blockquote>
 +
Blockを継承したBlockSampleクラスを作る. 基本的なことはアイテムと一緒だが, 引数を変えてある. 引数のMaterial.woodはブロックの'''材質'''. ここではテクスチャに合わせて木にしている.  
 +
</blockquote>
  
 
==実際の挙動==
 
==実際の挙動==
 +
<p>
 
上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである.
 
上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである.
 +
</p>

2012年10月24日 (水) 17:33時点における版

この記事は"Minecraft Forge4.3x"を前提MODとしています。

無機能ブロックの追加

何の機能も無い, しかしワールドに実際に設置できるブロックを追加する. これはブロックを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する.

ソースコード

  • SampleBlockCore.java
package mods.blocksample;

import net.minecraft.src.*;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.network.NetworkMod;

import cpw.mods.fml.common.event.FMLInitializationEvent;

import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(
	modid = "BlockSampleMod",
	name  = "Block Sample Mod",
	version = "1.0.0"
)
@NetworkMod(
	clientSideRequired = true,
	serverSideRequired = false
)
public class BlockSampleCore
{
	public static Block blockSample;
	
	@Mod.Init
	public void init(FMLInitializationEvent event)
	{
		blockSample = (new BlockSample(1300, 20)).setBlockName("sampleblock").setCreativeTab(CreativeTabs.tabBlock);
		
		GameRegistry.registerBlock(blockSample);
		
		LanguageRegistry.addName(blockSample, "Sample Block");
		LanguageRegistry.instance().addNameForObject(blockSample, "ja_JP", "サンプルブロック");
		
		GameRegistry.addShapelessRecipe(
			new ItemStack(blockSample, 1),
				new Object[]
				{
					Block.dirt, Block.dirt
				});
	}
}
  • BlockSample.java
package mods.blocksample;

import net.minecraft.src.*;

public class BlockSample extends Block
{
	public BlockSample(int blockId, int terrainId)
	{
		super(blockId, terrainId, Material.wood);
	}

}

解説

無機能アイテムの追加で説明した項目はここでは説明しないので注意.

BlockSampleCoreクラス

public static Block blockSample;

新しいブロックの宣言


blockSample = (new BlockSample(1300, 20)).setBlockName("sampleblock").setCreativeTab(CreativeTabs.tabBlock);

Blockを継承したBlockSampleのインスタンスを生成する. BlockSampleの引数はblockId, terrainIdであり, ブロックID1300, Itemと異なり-256する必要はなく, Minecraft 1.2から追加された拡張分4096IDも利用可能. ただし, 既存のItemIDと被るIDは利用できないので注意. terrainIdは「terrain.pngの左上から右に数えて20番目」すなわち原木の側面のテクスチャを指す. アイテムと異なり直接指定する必要がある.

  • setBlockName
setItemNameと同等, ブロックの内部名を明記するメソッド.
  • setCreativeTab
アイテムのときと同じように, クリティエイティブモードのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabBlockは一番左上のブロック全般タブに追加.


GameRegistry.registerBlock(blockSample);

アイテムと異なり, ブロックはこのメソッドを通して登録する必要がある.

BlockSampleクラス

public class BlockSample extends Block
{
	public BlockSample(int blockId, int terrainId)
	{
		super(blockId, terrainId, Material.wood);
	}

}

Blockを継承したBlockSampleクラスを作る. 基本的なことはアイテムと一緒だが, 引数を変えてある. 引数のMaterial.woodはブロックの材質. ここではテクスチャに合わせて木にしている.

実際の挙動

上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである.