Блок с метадатой

390
7
27
Создал блок с метадатой - все хорошо, но только добавил метод getRenderType() - иконка блока в панели стала для всех одинаковая, а с текстурой все нормально. В чем дело?

Код:
package block;

import static net.minecraftforge.common.EnumPlantType.Plains;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import main.GMInfo;
import main.GothicMod;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Icon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.IPlantable;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockPlant extends Block {

    public static final String[] metadata = new String[] {
        
        "wildBerry",
        "meadowBerry",
        "elderBerry",
        "meadowMountaineer",
        "swampGrass",
        "snepperGrass",
        "curativeGrass",
        "curativePlant",
        "curativeRoot",
        "kingsSorrel",
        "solarScarlet",
        "dragonRoot"
        
    };

    @SideOnly(Side.CLIENT)
    private Icon[] icon_array;
    
    public BlockPlant(int id) {
        
        super(id, Material.grass);
        setCreativeTab(GothicMod.GMTab);
        setUnlocalizedName("plant");
        setBlockBounds(0, 0, 0, 1.0F, 1.0F, 1.0F);
        
    }
    
    public int quantityDropped(Random random) {
        
        return 0;
        
    }
    //
    public int getRenderType() {
        
        return 1;
        
    }
    
    public boolean isOpaqueCube() {
        
        return false;
        
    }
    //
    @Override 
    public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int meta, int fortune) {
        
        ArrayList<ItemStack> ret = super.getBlockDropped(world, x, y, z, meta, fortune);
        ret.add(new ItemStack(BlockNormal.plant, meta));
        return ret;

    }

    public int idPicked(World world, int x, int y, int z) {
        
        return 0;
        
    }

    public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
        
        return new ItemStack(world.getBlockId(x, y, z), 1, world.getBlockMetadata(x, y, z));
        
    }

    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack is) {
        
        world.setBlockMetadataWithNotify(x, y, z, is.getItemDamage(), 3);
        
    }

    @SideOnly(Side.CLIENT)
    public Icon getIcon(int side, int metadata) {
        
        if (metadata >= 0 && metadata < BlockPlant.metadata.length) {
            
            return icon_array[metadata];
            
        }
        
        return super.getIcon(side, metadata);
        
    }

    @SideOnly(Side.CLIENT)
    public void getSubBlocks(int id, CreativeTabs table, List list) {
        
        for (int j = 0; j < metadata.length; ++j) {
            
            list.add(new ItemStack(id, 1, j));
            
        }
        
    }
    
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister ir) {
        
        super.registerIcons(ir);
        icon_array = new Icon[metadata.length];
        
        for (int i = 0; i < metadata.length; ++i) {
            
            icon_array[i] = ir.registerIcon(GMInfo.MODID.toLowerCase() + ":" + metadata[i]);
            
        }
        
    }

}
 

timaxa007

Модератор
5,831
409
672
Ты ему даёшь ид который ему может не подойти. Для этих ид может быть свой рендер в мире в инвентаре.
 
Сверху