I have the same problem.
I'm using in 1.7.10 IICon to have one item that is multiple items depending on the metadata.
this saved me time because the items all have the same function. only a different name and texture
private int itemCount = Ref.CRAFTITEMS.length;
@SideOnly
(Side.CLIENT)
private IIcon[] icons;
public CraftItem() {
super();
setCreativeTab(PurpleStuffMod.purpleStuffTab);
setHasSubtypes(true);
setMaxDamage(0);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
int i = MathHelper.clamp_int(stack.getItemDamage(), 0, itemCount);
return Ref.CRAFTITEMS[i];
}
@Override
@SideOnly
(Side.CLIENT)
public void registerIcons(IIconRegister register) {
icons = new IIcon[itemCount];
for (int i = 0; i < icons.length; i++) {
icons[i] = register.registerIcon(Ref.Texture_Path + Ref.CRAFTITEMS[i]);
}
}
@Override
@SideOnly
(Side.CLIENT)
public IIcon getIconFromDamage(int dmg) {
return icons[dmg];
}
@Override
@SideOnly
(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (int i = 0; i < itemCount; i++) {
list.add(new ItemStack(this, 1, i));
}
}