提供: Minecraft Modding Wiki
ModderKina (トーク | 投稿記録) (→ソースコード: メソッド等の追加) |
ModderKina (トーク | 投稿記録) |
||
98行目: | 98行目: | ||
<source lang = "java"> | <source lang = "java"> | ||
blockSample = new SampleBlock() | blockSample = new SampleBlock() | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
//ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。 | //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。 | ||
GameRegistry.registerBlock(blockSample, "blockSample"); | GameRegistry.registerBlock(blockSample, "blockSample"); | ||
115行目: | 103行目: | ||
blockSampleの変数にSampleBlockのインスタンスを代入。<br> | blockSampleの変数にSampleBlockのインスタンスを代入。<br> | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
===SampleBlock.java=== | ===SampleBlock.java=== | ||
<source lang = "java"> | <source lang = "java"> | ||
− | + | public SampleBlock() { | |
− | + | setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ | |
+ | setBlockName("blockSample");/*システム名の設定*/ | ||
+ | setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定*/ | ||
+ | /*以下のものは消しても結構です*/ | ||
+ | setHardness(1.5F);/*硬さ*/ | ||
+ | setResistance(1.0F);/*爆破耐性*/ | ||
+ | setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/ | ||
+ | /*setBlockUnbreakable();*//*ブロックを破壊不可に設定*/ | ||
+ | /*setTickRandomly(true);*//*ブロックのtick処理をランダムに。デフォルトfalse*/ | ||
+ | /*disableStats();*//*ブロックの統計情報を保存しない*/ | ||
+ | setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ | ||
+ | setLightLevel(1.0F);/*明るさ 1.0F = 15*/ | ||
} | } | ||
</source> | </source> | ||
− | Materialとはブロックの性質として、可燃性であるか、自分自身をドロップするか、ピストンなどで動かすことができるか、マップ上での色、透明(例:葉)か、地面につもる(例:雪)かをまとめて定義したもの。 | + | Materialとはブロックの性質として、可燃性であるか、自分自身をドロップするか、ピストンなどで動かすことができるか、マップ上での色、透明(例:葉)か、地面につもる(例:雪)かをまとめて定義したもの。<br> |
− | 既にMaterial.javaに定義されているものと同じ性質で良ければ、そのまま使える。 | + | 既にMaterial.javaに定義されているものと同じ性質で良ければ、そのまま使える。<br> |
− | ここでは上記の性質について石ブロックと同じものを使うので、Material.rockをそのまま使っている。 | + | ここでは上記の性質について石ブロックと同じものを使うので、Material.rockをそのまま使っている。<br> |
+ | システム名を登録しないと、ゲーム内でブロック名を表示することが出来ない。<br> | ||
+ | このシステム名から、英語や日本語等の翻訳名を指定するには、langファイルに適切に記述する必要が有る。<br> | ||
+ | langファイルの取扱については、[[1.6のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。<br> | ||
+ | ブロックのテクスチャは、'''"src/minecraft/assets/ドメイン名/textures/blocks/登録名"'''に置くこと。<br> | ||
+ | 今回:"src/minecraft/assets/samplemod/textures/blocks/block_sample.png"<br> | ||
+ | ドメイン名は全て小文字にすること。 |
2014年5月23日 (金) 23:11時点における版
この記事は"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() //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。 GameRegistry.registerBlock(blockSample, "blockSample"); } }
- SampleBlock.java
package mods.blocksample; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; public class SampleBlock extends Block { public SampleBlock() { super(Material.rock); setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ setBlockName("blockSample");/*システム名の設定*/ setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定*/ /*以下のものは消しても結構です*/ setHardness(1.5F);/*硬さ*/ setResistance(1.0F);/*爆破耐性*/ setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/ /*setBlockUnbreakable();*//*ブロックを破壊不可に設定*/ /*setTickRandomly(true);*//*ブロックのtick処理をランダムに。デフォルトfalse*/ /*disableStats();*//*ブロックの統計情報を保存しない*/ setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ setLightLevel(1.0F);/*明るさ 1.0F = 15*/ } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float posX, float posY, float posZ){ //ブロックを右クリックした際の動作 return true; } @Override public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player){ //ブロックを左クリックした際の動作 } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock){ //周囲のブロックが更新された際の動作 } @Override public int quantityDropped(int meta, int fortune, Random random){ //ドロップするアイテムを返す return quantityDroppedWithBonus(fortune, random); } @Override public int quantityDropped(Random random){ //ドロップさせる量を返す return 1; } }
解説
SampleBlockCore.java
public static Block blockSample;
追加するブロックを保持しておく変数を宣言
blockSample = new SampleBlock() //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。 GameRegistry.registerBlock(blockSample, "blockSample");
blockSampleの変数にSampleBlockのインスタンスを代入。
SampleBlock.java
public SampleBlock() { setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ setBlockName("blockSample");/*システム名の設定*/ setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定*/ /*以下のものは消しても結構です*/ setHardness(1.5F);/*硬さ*/ setResistance(1.0F);/*爆破耐性*/ setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/ /*setBlockUnbreakable();*//*ブロックを破壊不可に設定*/ /*setTickRandomly(true);*//*ブロックのtick処理をランダムに。デフォルトfalse*/ /*disableStats();*//*ブロックの統計情報を保存しない*/ setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ setLightLevel(1.0F);/*明るさ 1.0F = 15*/ }
Materialとはブロックの性質として、可燃性であるか、自分自身をドロップするか、ピストンなどで動かすことができるか、マップ上での色、透明(例:葉)か、地面につもる(例:雪)かをまとめて定義したもの。
既にMaterial.javaに定義されているものと同じ性質で良ければ、そのまま使える。
ここでは上記の性質について石ブロックと同じものを使うので、Material.rockをそのまま使っている。
システム名を登録しないと、ゲーム内でブロック名を表示することが出来ない。
このシステム名から、英語や日本語等の翻訳名を指定するには、langファイルに適切に記述する必要が有る。
langファイルの取扱については、1.6のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所を参照のこと。
ブロックのテクスチャは、"src/minecraft/assets/ドメイン名/textures/blocks/登録名"に置くこと。
今回:"src/minecraft/assets/samplemod/textures/blocks/block_sample.png"
ドメイン名は全て小文字にすること。