package crazypants.enderio.machine.spawner;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import com.enderio.core.client.handlers.SpecialTooltipHandler;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import crazypants.enderio.EnderIO;
import crazypants.enderio.EnderIOTab;
import crazypants.enderio.ModObject;
public class ItemBrokenSpawner extends Item {
private static final String[] CREATIVE_TYPES = new String[] {
"Skeleton",
"Zombie",
"Spider",
"CaveSpider",
"Blaze",
"Enderman",
"Chicken"
};
public static String getMobTypeFromStack(ItemStack stack) {
if(stack == null || stack.stackTagCompound == null || !stack.stackTagCompound.hasKey("mobType")) {
return null;
}
return stack.stackTagCompound.getString("mobType");
}
public static ItemStack createStackForMobType(String mobType) {
if(mobType == null) {
return null;
}
ItemStack res = new ItemStack(EnderIO.itemBrokenSpawner);
res.stackTagCompound = new NBTTagCompound();
res.stackTagCompound.setString("mobType", mobType);
return res;
}
public static ItemBrokenSpawner create() {
ItemBrokenSpawner result = new ItemBrokenSpawner();
result.init();
return result;
}
protected ItemBrokenSpawner() {
setCreativeTab(EnderIOTab.tabEnderIO);
setUnlocalizedName(ModObject.itemBrokenSpawner.unlocalisedName);
setHasSubtypes(true);
setMaxDamage(0);
setMaxStackSize(64);
}
@Override
public boolean isDamageable() {
return false;
}
protected void init() {
GameRegistry.registerItem(this, ModObject.itemBrokenSpawner.unlocalisedName);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister iIconRegister) {
itemIcon = iIconRegister.registerIcon("enderio:itemBrokenSpawner");
}
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
@SideOnly(Side.CLIENT)
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) {
for(String mobType : CREATIVE_TYPES) {
par3List.add(createStackForMobType(mobType));
}
}
@SuppressWarnings("unchecked")
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if(par1ItemStack != null && par1ItemStack.stackTagCompound != null) {
String mobName = getMobTypeFromStack(par1ItemStack);
if(mobName != null) {
par3List.add(StatCollector.translateToLocal("entity." + mobName + ".name"));
}
if(!SpecialTooltipHandler.showAdvancedTooltips()) {
SpecialTooltipHandler.addShowDetailsTooltip(par3List);
} else {
SpecialTooltipHandler.addDetailedTooltipFromResources(par3List, par1ItemStack);
}
}
}
}