提供: Minecraft Modding Wiki
移動先: 案内検索
(ページの作成:「{{前提MOD|reqmod="Minecraft Forge4.3x"}} ==ソースコード== *SampleBlockCore.java <source lang = "java"> package mods.blocksample; import net.minecraft.src.*; ...」)
 
 
(他の1人の利用者による、間の5版が非表示)
1行目: 1行目:
 
{{前提MOD|reqmod="Minecraft Forge4.3x"}}
 
{{前提MOD|reqmod="Minecraft Forge4.3x"}}
 +
{{forge}}
 +
{{legacy}}
  
==ソースコード==
+
==無機能ブロックの追加==
 +
<p>
 +
何の機能も無い, しかしワールドに実際に設置できるブロックを追加する. これはブロックを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する.
 +
</p>
 +
 
 +
===ソースコード===
 
*SampleBlockCore.java
 
*SampleBlockCore.java
 
<source lang = "java">
 
<source lang = "java">
66行目: 73行目:
  
 
==解説==
 
==解説==
'''[[無機能アイテムの追加]]'''で説明した項目はここでは説明しないので注意.  
+
[[無機能アイテムの追加]]で説明した項目はここでは説明しないので注意.  
  
===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
128行目: 114行目:
 
}
 
}
 
</source>
 
</source>
:Blockを継承したBlockSampleクラスを作る. 基本的なことはアイテムと一緒だが, 引数を変えてある. 引数のMaterial.woodはブロックの'''材質'''. ここではテクスチャに合わせて木にしている.
+
<blockquote>
 +
Blockを継承したBlockSampleクラスを作る. 基本的なことはアイテムと一緒だが, 引数を変えてある. 引数のMaterial.woodはブロックの'''材質'''. ここではテクスチャに合わせて木にしている.  
 +
</blockquote>
  
 
==実際の挙動==
 
==実際の挙動==
 
上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである.
 
上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである.

2019年9月30日 (月) 22:14時点における最新版

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

Iron pickaxe.png
Minecraft Forgeのチュートリアルです。
Attention.pngWarning: このページは非常に古い内容を含んでいます。もしかするとまだ動作するかも知れませんが、大抵の場合はベースとなる概念や実装、体裁が大きく変わっているため、大幅な変更が必要になります。

無機能ブロックの追加[編集]

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

ソースコード[編集]

  • 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はブロックの材質. ここではテクスチャに合わせて木にしている.

実際の挙動[編集]

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