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

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

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
1行目: 1行目:
{{前提MOD|reqmod="Minecraft Forge Universal 9.10.0.xxx~"}}
+
jじいいじうしjすmjみあいあいしいmしいんづ
{{チュートリアル難易度|difficulty=1|clear=none}}
 
{{チュートリアルカテゴリー|difficulty=0|type=Block}}
 
 
 
==植物の追加==
 
BlockBushとIGrowableを使って作物を追加する。<br>
 
種や作物のアイテムの追加は省略。
 
===ソースコード===
 
*SampleBushCore.java
 
<source lang="java">
 
package mods.plant;
 
 
 
import net.minecraft.block.Block;
 
import net.minecraft.block.material.Material;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.Mod.EventHandler;
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
 
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
 
import cpw.mods.fml.common.registry.GameRegistry;
 
import cpw.mods.fml.common.registry.LanguageRegistry;
 
 
 
@Mod(modid = "BushSampleMod", name = "BushSampleMod", version = "0.0.0")
 
public class SampleBushCore {
 
    public static Block sampleBush;
 
    public static int sampleBushID = 4078;
 
 
 
    @EventHandler
 
    public void init(FMLInitializationEvent event) {
 
        // ローカライズ
 
        LanguageRegistry.addName(sampleBush, "Sample Bush");
 
        LanguageRegistry.instance().addNameForObject(sampleBush, "ja_JP", "サンプル 植物");
 
    }
 
 
 
    @EventHandler
 
    public void preInit(FMLPreInitializationEvent event) {
 
        sampleBush = new BlockSampleBush(sampleBushID);
 
        GameRegistry.registerBlock(sampleBush, "sampleBush");
 
    }
 
}
 
</source>
 
*BlockSampleBush.java
 
<source lang="java">
 
package mods.plant;
 
 
 
import cpw.mods.fml.relauncher.Side;
 
import cpw.mods.fml.relauncher.SideOnly;
 
 
 
import java.util.Random;
 
 
 
import net.minecraft.block.BlockBush;
 
import net.minecraft.block.IGrowable;
 
import net.minecraft.block.material.Material;
 
import net.minecraft.client.renderer.texture.IIconRegister;
 
import net.minecraft.creativetab.CreativeTabs;
 
import net.minecraft.init.Blocks;
 
import net.minecraft.item.Item;
 
import net.minecraft.util.IIcon;
 
import net.minecraft.world.ColorizerGrass;
 
import net.minecraft.world.IBlockAccess;
 
import net.minecraft.world.World;
 
 
 
public class BlockSampleBush extends BlockBush implements IGrowable {
 
    @SideOnly(Side.CLIENT)
 
    private IIcon[] icon;
 
 
 
    public BlockSampleBush(int id) {
 
        super(id);
 
        setCreativeTab(CreativeTabs.tabBlock);
 
        setUnlocalizedName("bush.block.plant");
 
        setTextureName("samplebushmod:bush");
 
        // たまに成長するようにする。
 
        setTickRandomly(true);
 
        setStepSound(soundTypeGrass);
 
    }
 
 
 
    @Override
 
    protected boolean canPlaceBlockOn(Block parBlock)
 
    {
 
        return parBlock == Blocks.farmland;
 
    }
 
 
 
    @Override
 
    public void updateTick(World world, int x, int y, int z, Random random) {
 
        super.updateTick(world, x, y, z, random);
 
 
 
        int growStage = world.getBlockMetadata(x, y, z); // メタデータ=成長段階
 
        growStage++;
 
        if (growStage > 6) { // 0が1段階目なのでこうなる
 
            growStage = 6; // バグ防止
 
        }
 
        world.setBlockMetadataWithNotify(x, y, z, growStage);
 
    }
 
 
 
    @Override
 
    // 完全成長しているか確認するメソッド (7段階目が完全成長)
 
    public boolean func_149851_a(World parWorld, int parX, int parY, int parZ, boolean p_149851_5_) {
 
        return parWorld.getBlockMetadata(parX, parY, parZ) != 7;
 
    }
 
 
 
    @Override
 
    // 骨粉処理
 
    public boolean func_149852_a(World p_149852_1_, Random parRand, int p_149852_3_, int p_149852_4_, int p_149852_5_) {
 
        return true;
 
    }
 
 
 
    @Override
 
    // 骨粉処理
 
    public void func_149853_b(World parWorld, Random parRand, int parX, int parY, int parZ) {
 
        incrementGrowStage(parWorld, parRand, parX, parY, parZ);
 
    }
 
 
 
    @Override
 
    public int getRenderType() { return 1; // 描画タイプ:1はクロステクスチャ }
 
 
 
    @Override
 
    @SideOnly(Side.CLIENT)
 
    public IIcon getIcon(int side, int metadata) { return icon[metadata]; }
 
 
 
    @Override
 
    // ドロップする個数
 
    public int quantityDropped(int metadata, int fortune, Random random) {
 
        return metadata == 6 ? random.nextInt() + 1 : 1; // 完全成長ならランダム、それ以外なら1つ
 
    }
 
 
 
    @Override
 
    // ドロップするアイテム
 
    public Item getItemDropped(int metadata, Random random, int fortune) {
 
        return /* ここに種や収穫物等*/ ;
 
    }
 
 
 
    @Override
 
    @SideOnly(Side.CLIENT)
 
    public void registerBlockIcons(IIconRegister parIIconRegister)
 
    {
 
          iIcon = new IIcon[7];
 
          // 全成長段階のテクスチャを登録
 
          iIcon[0] = parIIconRegister.registerIcon("samplebushmod:bush_stage_0");
 
          iIcon[1] = parIIconRegister.registerIcon("samplebushmod:bush_stage_0");
 
          iIcon[2] = parIIconRegister.registerIcon("samplebushmod:bush_stage_1");
 
          iIcon[3] = parIIconRegister.registerIcon("samplebushmod:bush_stage_1");
 
          iIcon[4] = parIIconRegister.registerIcon("samplebushmod:bush_stage_2");
 
          iIcon[5] = parIIconRegister.registerIcon("samplebushmod:bush_stage_2");
 
          iIcon[6] = parIIconRegister.registerIcon("samplebushmod:bush_stage_3");
 
          iIcon[7] = parIIconRegister.registerIcon("samplebushmod:bush_stage_3");
 
    }
 
}
 
</source>
 
 
 
==解説==
 
===SampleBushCore.java===
 
このModのエントリポイント。作物のブロックの追加をしている。
 
===BlockSampleBush.java===
 
作物のブロック。
 
<source lang="java">
 
setTickRandomly(true);
 
</source>
 
でランダムにupdateTickを呼び、そこで
 
<source lang="java">
 
int growStage = world.getBlockMetadata(x, y, z); // メタデータ=成長段階
 
growStage++;
 
if (growStage > 6) { // 0が1段階目なのでこうなる
 
    growStage = 6; // バグ防止
 
}
 
world.setBlockMetadataWithNotify(x, y, z, growStage);
 
</source>
 
で成長させる。
 

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

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

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