提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
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]]
 

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)