提供: Minecraft Modding Wiki
細 (スペース追加) |
ModderKina (トーク | 投稿記録) 細 (→ソースコード) |
||
(6人の利用者による、間の12版が非表示) | |||
2行目: | 2行目: | ||
{{チュートリアル難易度|difficulty=0|clear=none}} | {{チュートリアル難易度|difficulty=0|clear=none}} | ||
{{チュートリアルカテゴリー |type=Block| difficulty=0}} | {{チュートリアルカテゴリー |type=Block| difficulty=0}} | ||
− | <p> | + | <p>ワールド上に設置できる簡単な無機能ブロックの追加方法</p> |
==ブロックの追加== | ==ブロックの追加== | ||
+ | 簡単な無機能ブロックの追加 | ||
===ソースコード=== | ===ソースコード=== | ||
*SampleBlockCore.java | *SampleBlockCore.java | ||
15行目: | 16行目: | ||
import cpw.mods.fml.common.registry.GameRegistry; | import cpw.mods.fml.common.registry.GameRegistry; | ||
− | @Mod(modid= | + | @Mod(modid=SampleBlockCore.MOD_ID, name="BlockSampleMod", version="1.0") |
public class SampleBlockCore | public class SampleBlockCore | ||
{ | { | ||
+ | public static final String MOD_ID = "BlockSampleMod"; | ||
public static Block blockSample; | public static Block blockSample; | ||
34行目: | 36行目: | ||
<source lang = "java"> | <source lang = "java"> | ||
package mods.blocksample; | package mods.blocksample; | ||
+ | |||
+ | import java.util.Random; | ||
import net.minecraft.block.Block; | import net.minecraft.block.Block; | ||
41行目: | 45行目: | ||
import net.minecraft.world.World; | import net.minecraft.world.World; | ||
import cpw.mods.fml.relauncher.SideOnly; | import cpw.mods.fml.relauncher.SideOnly; | ||
− | import cpw.mods.fml.relauncher. | + | import cpw.mods.fml.relauncher.Side; |
import net.minecraft.client.renderer.texture.IIconRegister; | import net.minecraft.client.renderer.texture.IIconRegister; | ||
import net.minecraft.util.IIcon; | import net.minecraft.util.IIcon; | ||
57行目: | 61行目: | ||
setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ | setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ | ||
setBlockName("blockSample");/*システム名の設定*/ | setBlockName("blockSample");/*システム名の設定*/ | ||
− | setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定( | + | setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定(複数指定の場合は消してください)*/ |
/*以下のものは消しても結構です*/ | /*以下のものは消しても結構です*/ | ||
setHardness(1.5F);/*硬さ*/ | setHardness(1.5F);/*硬さ*/ | ||
67行目: | 71行目: | ||
setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ | setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/ | ||
setLightLevel(1.0F);/*明るさ 1.0F = 15*/ | setLightLevel(1.0F);/*明るさ 1.0F = 15*/ | ||
+ | setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);/*当たり判定*/ | ||
} | } | ||
96行目: | 101行目: | ||
return 1; | return 1; | ||
} | } | ||
+ | |||
@Override | @Override | ||
@SideOnly(Side.CLIENT) | @SideOnly(Side.CLIENT) | ||
101行目: | 107行目: | ||
{ | { | ||
this.TopIcon = par1IconRegister.registerIcon("samplemod:block_sample"); | this.TopIcon = par1IconRegister.registerIcon("samplemod:block_sample"); | ||
− | this.SideIcon = par1IconRegister.registerIcon("samplemod: | + | this.SideIcon = par1IconRegister.registerIcon("samplemod:block_sample_side"); |
} | } | ||
111行目: | 117行目: | ||
return TopIcon; | return TopIcon; | ||
} | } | ||
− | + | else | |
{ | { | ||
return SideIcon; | return SideIcon; | ||
− | |||
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
144行目: | 146行目: | ||
setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ | setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/ | ||
setBlockName("blockSample");/*システム名の設定*/ | setBlockName("blockSample");/*システム名の設定*/ | ||
− | setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定*/ | + | setBlockTextureName("samplemod:block_sample");/*ブロックのテクスチャの指定(複数指定の場合は消してください)*/ |
/*以下のものは消しても結構です*/ | /*以下のものは消しても結構です*/ | ||
setHardness(1.5F);/*硬さ*/ | setHardness(1.5F);/*硬さ*/ | ||
162行目: | 164行目: | ||
このシステム名から、英語や日本語等の翻訳名を指定するには、langファイルに適切に記述する必要が有る。<br> | このシステム名から、英語や日本語等の翻訳名を指定するには、langファイルに適切に記述する必要が有る。<br> | ||
langファイルの取扱については、[[1.6のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。<br> | langファイルの取扱については、[[1.6のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。<br> | ||
− | ブロックのテクスチャは、'''"src/ | + | ブロックのテクスチャは、'''"src/main/resources/assets/ドメイン名/textures/blocks/登録名"'''に置くこと。<br> |
− | 今回:"src/ | + | 今回:"src/main/resources/assets/samplemod/textures/blocks/block_sample(_side).png"<br> |
ドメイン名は全て小文字にすること。 | ドメイン名は全て小文字にすること。 | ||
1.7のリソースを置く場所は、[[1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。 | 1.7のリソースを置く場所は、[[1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。 |
2016年4月17日 (日) 06:31時点における最新版
この記事は"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=SampleBlockCore.MOD_ID, name="BlockSampleMod", version="1.0") public class SampleBlockCore { public static final String MOD_ID = "BlockSampleMod"; public static Block blockSample; @EventHandler public void preInit(FMLPreInitializationEvent event) { //ブロックのインスタンス生成 blockSample = new SampleBlock(); //ブロックの登録。登録文字列はMOD内で被らなければ何でも良い。 GameRegistry.registerBlock(blockSample, "blockSample"); } }
- SampleBlock.java
package mods.blocksample; import java.util.Random; 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; import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.Side; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.util.IIcon; public class SampleBlock extends Block { @SideOnly(Side.CLIENT) private IIcon TopIcon; @SideOnly(Side.CLIENT) private IIcon SideIcon; 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*/ setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);/*当たり判定*/ } @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; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister par1IconRegister) { this.TopIcon = par1IconRegister.registerIcon("samplemod:block_sample"); this.SideIcon = par1IconRegister.registerIcon("samplemod:block_sample_side"); } @SideOnly(Side.CLIENT) public IIcon getIcon(int par1, int par2) { if(par1 == 0 || par1 == 1) { return TopIcon; } else { return SideIcon; } } }
解説[編集]
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/main/resources/assets/ドメイン名/textures/blocks/登録名"に置くこと。
今回:"src/main/resources/assets/samplemod/textures/blocks/block_sample(_side).png"
ドメイン名は全て小文字にすること。
1.7のリソースを置く場所は、1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所を参照のこと。