Well, here's the block file now:
public class XailiteBlock extends Block
{
public XailiteBlock(int id)
{
super(id, Material.rock);
this.setCreativeTab(Xailite.xailiteTab);
this.setHardness(5.5F);
}
@SideOnly(Side.CLIENT)
private Icon[] blockTextures;
public void registerIcons(IconRegister iconRegister)
{
blockTextures = new Icon[4]; //Change this according to how many blocks there are
for (int i = 0; i < blockTextures.length; i++)
{
blockTextures[i] = iconRegister.registerIcon("xailite:" + (i == 0 ? "XailiteOre" : i == 1 ? "XailiteBlock" : i == 2 ? "TemperedXailiteOre" : i == 3 ? "RefinedXailiteBlock" : null));
}
}
@Override
public Icon getIcon(int id, int metadata)
{
return blockTextures[metadata];
}
@Override
public void getSubBlocks(int id, CreativeTabs tab, List subBlockList)
{
for (int i = 0; i < blockTextures.length; ++i)
{
subBlockList.add(new ItemStack(id, 1, i));
}
}
@Override
public int damageDropped(int metadata)
{
this.setUnlocalizedName("XailiteBlock|" + metadata);
return metadata;
}
@Override
public boolean isBeaconBase(World worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ)
{
return worldObj.getBlockMetadata(x, y, z) == 1;
}
public String getUnlocalizedName(ItemStack itemStack)
{
return this.getUnlocalizedName() + "Xailite";
}
}
But it doesn't seem to work. And it's definitely the last two blocks having the same unlocalized name.