最新版 |
編集中の文章 |
147行目: |
147行目: |
| MinecraftForge.setBlockHarvestLevel(genericDirt, "shovel", 0); | | MinecraftForge.setBlockHarvestLevel(genericDirt, "shovel", 0); |
| </source> | | </source> |
− |
| |
− | ==テクスチャ==
| |
− | テクスチャについては、アイテムとブロックで共通なことが多いので[[Icons and Textures]]を御覧ください。
| |
− |
| |
− | ==Generic Ore==
| |
− | Dirtに似せたGeneric Dirtを作りましたが、別のブロックを作ります。もし、ここまで読んで疲れたのなら、ここらで一度休憩しましょう。
| |
− |
| |
− | GenericOreは[[Basic items]]チュートリアルで作ったGeneric Ingotをドロップする鉱石です。もし、そのチュートリアルをやっていないなら、Generic.genericIngotをItem.ingot.Ironと置き換えるか、Basic itemsチュートリアルをやってください。
| |
− | Generic鉱石はダイアモンドよりも強いです。ダイアモンドよりも高い硬さを持つので、ダイアモンドのピッケルでしか掘れないでしょう。
| |
− |
| |
− | ではGeneric鉱石を作りましょう。以下がGeneric鉱石のコードです。
| |
− |
| |
− | <source lang="java">
| |
− | package tutorial.generic;
| |
− |
| |
− | import net.minecraft.block.material.Material;
| |
− | import net.minecraft.block.Block;
| |
− |
| |
− | public class GenericOre extends Block {
| |
− | public GenericOre(int id, int texture, Material material) {
| |
− | super(id, texture, material);
| |
− | }
| |
− |
| |
− | @Override
| |
− | public String getTextureFile () {
| |
− | return CommonProxy.BLOCK_PNG;
| |
− | }
| |
− | }
| |
− | </source>
| |
− | 鉱石への設定はサブクラス化したコンストラクタにおいても可能です。
| |
− | 以下のように追加できます。
| |
− | <source lang="java">
| |
− | setHardness(4.0F); // ダイアモンドよりも33%硬い
| |
− | setStepSound(Block.soundStoneFootstep);
| |
− | setBlockName("genericOre");
| |
− | setCreativeTab(CreativeTabs.tabBlock);
| |
− | </source>
| |
− |
| |
− | そして、GenericのBasemodクラスに言って、以下のフィールドを追加してください。
| |
− | <source lang="java">
| |
− | public final static Block genericOre = new GenericOre(501, 1, Material.iron);
| |
− | </source>
| |
− |
| |
− | さらに、以下の3つのメソッドをBaseModクラスのロードメソッドに追加してください。
| |
− | <source lang="java">
| |
− | LanguageRegistry.addName(genericOre, "Genreric Ore");
| |
− | MinecraftForge.setBlockHarvestLevel(genericOre, "pickaxe", 3);
| |
− | GameRegistry.registerBlock(genericOre, "genericOre");
| |
− | </source>
| |
− | もし、これらの一部でも理解していないならば、GenericDirtのセクションを参照してください。
| |
− |
| |
− | ==鉱石のドロップ==
| |
− | このアイテムが壊された時、アイテムをドロップするかは言及していません。収穫レベルが低いツールで、収穫することはできません。例えば、Generic鉱石はダイアモンドのピッケルでは収穫出来ますが、他の行為では何も出て来ません。
| |
− |
| |
− | ブロックが壊れた時に常にドロップはしてほしくありません。ダイアモンドやレッドストーンやGeneric Ingotのようにドロップして欲しい時もあります。ブロックはidDroppedで、ドロップをするかを設定します。idDroppedは以下の様な書式を持ちます。
| |
− | <source lang="java">
| |
− | public int idDropped(int metadata, Random random, int zero);
| |
− | </source>
| |
− | 最初の引数は、ブロックのメタデータです。ブロックでは、常に0となります。二番目の引数は乱数です。IndustrialCraftのようにばらばらになるか、ブロックになるかを指定したい場合に使います。3番目の引数は常に0となります。ドロップしたいアイテムのIDを返り値として返してください。何もドロップさせたくない場合は、-1を返します。
| |
− | Generic鉱石はそれ自身がドロップしない鉱石なので、Minecraftの他のインゴットと同様に精錬する必要があります。しかし、それが面倒であるならば、以下のようにGeneric.Ingotをドロップすることができます。
| |
− | <source lang="java">
| |
− | public int idDropped(int par1, Random random, int zero) {
| |
− | return Generic.genericIngot.itemID;
| |
− | }
| |
− | </source>
| |
− |
| |
− | ==完成形==
| |
− | ===Generic Class===
| |
− | <source lang="java">
| |
− | package tutorial.generic;
| |
− |
| |
− |
| |
− | import net.minecraft.block.Block;
| |
− | import net.minecraft.creativetab.CreativeTabs;
| |
− | import net.minecraft.item.Item;
| |
− | import net.minecraft.item.ItemStack;
| |
− | import net.minecraft.block.material.Material;
| |
− | import net.minecraftforge.common.ForgeHooks;
| |
− | import net.minecraftforge.common.MinecraftForge;
| |
− | import cpw.mods.fml.common.Mod;
| |
− | import cpw.mods.fml.common.Mod.Init;
| |
− | import cpw.mods.fml.common.Mod.Instance;
| |
− | import cpw.mods.fml.common.Mod.PostInit;
| |
− | import cpw.mods.fml.common.Mod.PreInit;
| |
− | import cpw.mods.fml.common.SidedProxy;
| |
− | import cpw.mods.fml.common.event.FMLInitializationEvent;
| |
− | import cpw.mods.fml.common.event.FMLPostInitializationEvent;
| |
− | import cpw.mods.fml.common.event.FMLPreInitializationEvent;
| |
− | import cpw.mods.fml.common.network.NetworkMod;
| |
− | import cpw.mods.fml.common.registry.GameRegistry;
| |
− | import cpw.mods.fml.common.registry.LanguageRegistry;
| |
− |
| |
− | @Mod(modid="Generic", name="Generic", version="0.0.0")
| |
− | @NetworkMod(clientSideRequired=true, serverSideRequired=false)
| |
− | public class Generic {
| |
− | // GenericIngotに関するアイテムのチュートリアルをご覧ください。
| |
− | public final static Item genericIngot = new GenericItem(5001)
| |
− | .setMaxStackSize(16).setIconIndex(1).setItemName("specificItem");
| |
− |
| |
− | public final static Block genericDirt = new GenericBlock(500, 0, Material.ground)
| |
− | .setHardness(0.5F).setStepSound(Block.soundGravelFootstep)
| |
− | .setBlockName("genericDirt").setCreativeTab(CreativeTabs.tabDeco);
| |
− | public final static Block genericOre = new GenericOre(501, 1);
| |
− |
| |
− | @Instance("Generic")
| |
− | public static Generic instance;
| |
− |
| |
− | @SidedProxy(clientSide="tutorial.generic.client.ClientProxy",
| |
− | serverSide="tutorial.generic.CommonProxy")
| |
− | public static CommonProxy proxy;
| |
− |
| |
− | @PreInit
| |
− | public void preInit(FMLPreInitializationEvent event) {
| |
− | // Stub Method
| |
− | }
| |
− |
| |
− | @Init
| |
− | public void load(FMLInitializationEvent event) {
| |
− | // GenericIngotに対するアイテムのチュートリアルをご覧ください。
| |
− | LanguageRegistry.addName(genericIngot, "Generic Ingot");
| |
− |
| |
− | LanguageRegistry.addName(genericDirt, "Generic Dirt");
| |
− | MinecraftForge.setBlockHarvestLevel(genericDirt, "shovel", 0);
| |
− | GameRegistry.registerBlock(genericDirt, "genericDirt");
| |
− |
| |
− | LanguageRegistry.addName(genericOre, "Generic Ore");
| |
− | MinecraftForge.setBlockHarvestLevel(genericOre, "pickaxe", 3);
| |
− | GameRegistry.registerBlock(genericOre, "genericOre");
| |
− | // ブロックの基本設定はここで終わりです。
| |
− |
| |
− | proxy.registerRenderers();
| |
− | }
| |
− |
| |
− | @PostInit
| |
− | public void postInit(FMLPostInitializationEvent event) {
| |
− | // Stub Method
| |
− | }
| |
− | }
| |
− | </source>
| |
− | ===GenericBlock Class===
| |
− | <source lang="java">
| |
− | package tutorial.generic;
| |
− |
| |
− | import net.minecraft.block.Block;
| |
− | import net.minecraft.block.material.Material;
| |
− |
| |
− | public class GenericBlock extends Block {
| |
− |
| |
− | public GenericBlock (int id, int texture, Material material) {
| |
− | super(id, texture, material);
| |
− | }
| |
− |
| |
− | @Override
| |
− | public String getTextureFile () {
| |
− | return CommonProxy.BLOCK_PNG;
| |
− | }
| |
− |
| |
− | }
| |
− | </source>
| |
− | ===GenericOre Class===
| |
− | <source lang="java">
| |
− | package tutorial.generic;
| |
− |
| |
− | import java.util.Random;
| |
− | import net.minecraft.block.Block;
| |
− | import net.minecraft.block.BlockOre;
| |
− | import net.minecraft.creativetab.CreativeTabs;
| |
− | import net.minecraft.block.material.Material;
| |
− |
| |
− | public class GenericOre extends BlockOre {
| |
− | public GenericOre(int id, int texture, Material material) {
| |
− | super(id, texture, material);
| |
− |
| |
− | setHardness(4.0F); //ダイアモンドより33%硬い
| |
− | setStepSound(Block.soundStoneFootstep);
| |
− | setBlockName("genericOre");
| |
− | setCreativeTab(CreativeTabs.tabBlock);
| |
− | }
| |
− |
| |
− | @Override
| |
− | public String getTextureFile () {
| |
− | return CommonProxy.BLOCK_PNG;
| |
− | }
| |
− |
| |
− | public int idDropped(int par1, Random random, int par2) {
| |
− | return Generic.genericIngot.itemID;
| |
− | }
| |
− | }
| |
− | </source>
| |
− |
| |
− | ==次に何をしましょう?==
| |
− | *[[Crafting and Smelting]](クラフティングと精錬)
| |
− | *[[Basic items]]
| |
− | *[[Icons and Textures]]
| |
− |
| |
− | 上記のものが終わったら、以下のことを続けて行うことができます。
| |
− | *[[Metadata Based Subblocks]]
| |
− | *[[Plants]]
| |