package universalteam.universalcore.item;
import com.google.common.collect.Maps;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ItemParts extends Item
{
public List<Integer> itemList = new ArrayList<Integer>();
public Map<Integer, ItemEntry> itemMap = new HashMap<Integer, ItemEntry>();
public Map<String, IIcon> icons = Maps.newHashMap();
public String domain;
public boolean hasTexture = false;
public ItemParts(String domain, CreativeTabs creativeTab)
{
this.setHasSubtypes(true);
this.setCreativeTab(creativeTab);
this.domain = domain;
}
public ItemStack addItem(int meta, String name, String iconName, int rarity, boolean register, boolean hasTexture)
{
if (this.itemList.contains(meta))
{
return null;
}
this.itemList.add(meta);
this.itemMap.put(meta, new ItemEntry(name, iconName, rarity));
this.hasTexture = hasTexture;
ItemStack stack = new ItemStack(this, 1, meta);
if (register)
{
GameRegistry.registerCustomItemStack(name, stack);
}
return stack;
}
public ItemStack addItem(int meta, String name, String iconName, int rarity)
{
return addItem(meta, name, iconName, rarity, true, true);
}
public ItemStack addItem(int meta, String name, String iconName)
{
return addItem(meta, name, iconName, 0);
}
@Override
public String getUnlocalizedName(ItemStack stack)
{
int meta = stack.getItemDamage();
if (!this.itemList.contains(meta))
{
return "item.invalid";
}
return "item." + (this.itemMap.get(meta)).name;
}
@SideOnly(Side.CLIENT)
@Override
public EnumRarity getRarity(ItemStack stack)
{
int meta = stack.getItemDamage();
if (!(itemList.contains(meta)))
{
return EnumRarity.common;
}
return EnumRarity.values()[(this.itemMap.get(meta)).rarity];
}
@SideOnly(Side.CLIENT)
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public void getSubItems(Item item, CreativeTabs tab, List list)
{
for (int i = 0; i < itemList.size(); ++i)
{
list.add(new ItemStack(item, 1, this.itemList.get(i)));
}
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister register)
{
if (!hasTexture)
{
return;
}
for (int i = 0; i < itemList.size(); i++)
{
ItemEntry item = (this.itemMap.get(this.itemList.get(i)));
icons.put(item.name, register.registerIcon(domain + ":" + item.iconName));
}
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIconFromDamage(int damage)
{
if (!this.itemMap.containsKey(damage))
{
return null;
}
ItemEntry item = (this.itemMap.get(this.itemList.get(damage)));
return icons.get(item.name);
}
public class ItemEntry
{
public String name;
public String iconName;
public int rarity;
public ItemEntry(String name, String iconName, int rarity)
{
this.name = name;
this.iconName = iconName;
this.rarity = rarity;
}
}
}