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