- 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]);
}
}
}