提供: Minecraft Modding Wiki
細 |
|||
(他の1人の利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
{{前提MOD|reqmod="Minecraft Forge4.3x"}} | {{前提MOD|reqmod="Minecraft Forge4.3x"}} | ||
+ | {{forge}} | ||
+ | {{legacy}} | ||
==無機能ブロックの追加== | ==無機能ブロックの追加== | ||
− | + | <p> | |
+ | 何の機能も無い, しかしワールドに実際に設置できるブロックを追加する. これはブロックを追加するための基礎であり, ここで使われるメソッドはこれ以降のチュートリアルにも頻出する. | ||
+ | </p> | ||
===ソースコード=== | ===ソースコード=== | ||
71行目: | 75行目: | ||
[[無機能アイテムの追加]]で説明した項目はここでは説明しないので注意. | [[無機能アイテムの追加]]で説明した項目はここでは説明しないので注意. | ||
− | + | ===BlockSampleCoreクラス=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang = "java"> | <source lang = "java"> | ||
public static Block blockSample; | public static Block blockSample; | ||
</source> | </source> | ||
− | + | <blockquote> | |
− | < | + | 新しいブロックの宣言 |
+ | </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> | ||
− | + | <blockquote> | |
− | + | Blockを継承したBlockSampleのインスタンスを生成する. BlockSampleの引数はblockId, terrainIdであり, ブロックID1300, Itemと異なり-256する必要はなく, Minecraft 1.2から追加された拡張分4096IDも利用可能. ただし, 既存のItemIDと被るIDは利用できないので注意. | |
− | + | terrainIdは「terrain.pngの左上から右に数えて20番目」すなわち原木の側面のテクスチャを指す. アイテムと異なり直接指定する必要がある. | |
+ | *setBlockName | ||
:setItemNameと同等, ブロックの内部名を明記するメソッド. | :setItemNameと同等, ブロックの内部名を明記するメソッド. | ||
− | + | *setCreativeTab | |
:アイテムのときと同じように, クリティエイティブモードのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabBlockは一番左上のブロック全般タブに追加. | :アイテムのときと同じように, クリティエイティブモードのインベントリタブのどこに追加するかを決めるメソッド. CreativeTabs.tabBlockは一番左上のブロック全般タブに追加. | ||
− | < | + | </blockquote> |
<source lang = "java"> | <source lang = "java"> | ||
GameRegistry.registerBlock(blockSample); | GameRegistry.registerBlock(blockSample); | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | アイテムと異なり, ブロックはこのメソッドを通して登録する必要がある. | ||
+ | </blockquote> | ||
− | ==== | + | ====BlockSampleクラス==== |
<source lang = "java"> | <source lang = "java"> | ||
public class BlockSample extends Block | public class BlockSample extends Block | ||
131行目: | 114行目: | ||
} | } | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | Blockを継承したBlockSampleクラスを作る. 基本的なことはアイテムと一緒だが, 引数を変えてある. 引数のMaterial.woodはブロックの'''材質'''. ここではテクスチャに合わせて木にしている. | ||
+ | </blockquote> | ||
==実際の挙動== | ==実際の挙動== | ||
上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである. | 上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである. |
2019年9月30日 (月) 22:14時点における最新版
この記事は"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はブロックの材質. ここではテクスチャに合わせて木にしている.
実際の挙動[編集]
上記のコードをコンパイルし, 実行するとクリエイティブのブロックタブの最後にアイテムが追加される. 右クリックで実際に設置することができるが, 一回殴るとアイテム化してしまうし, テクスチャも原木と異なり全部同じテクスチャである.