package fox.spiteful.forbidden.items.baubles;
import baubles.api.BaublesApi;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import fox.spiteful.forbidden.Forbidden;
import fox.spiteful.forbidden.compat.Compat;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.common.items.baubles.ItemAmuletVis;
import vazkii.botania.api.item.ICosmeticAttachable;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.List;
@Optional.Interface(iface = "vazkii.botania.api.item.ICosmeticAttachable", modid = "Botania")
public class ItemSubCollar extends ItemAmuletVis implements ICosmeticAttachable {
public IIcon icon;
DecimalFormat myFormatter = new DecimalFormat("#######.##");
public ItemSubCollar(){
super();
maxStackSize = 1;
setCreativeTab(Forbidden.tab);
}
@Override
public String getUnlocalizedName(ItemStack stack) {
return "item." + "SubCollar";
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister ir) {
icon = ir.registerIcon("forbidden:collar");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int par1) {
return icon;
}
@Override
public boolean canEquip(ItemStack itemstack, EntityLivingBase player) {
return true;
}
public int getMaxVis(ItemStack stack) {
return 25000;
}
@Override
public EnumRarity getRarity(ItemStack itemstack) {
return EnumRarity.rare;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) {
list.add(EnumChatFormatting.GOLD + StatCollector.translateToLocal("item.capacity.text") + " " + this.getMaxVis(stack) / 100);
if(stack.hasTagCompound()) {
Iterator count = Aspect.getPrimalAspects().iterator();
while(count.hasNext()) {
Aspect aspect = (Aspect)count.next();
if(stack.stackTagCompound.hasKey(aspect.getTag())) {
String amount = this.myFormatter.format((double)((float)stack.stackTagCompound.getInteger(aspect.getTag()) / 100.0F));
list.add("\u00a7" + aspect.getChatcolor() + aspect.getName() + EnumChatFormatting.RESET + " x " + amount);
}
}
if(stack.stackTagCompound.hasKey("owner"))
list.add(StatCollector.translateToLocal("tooltip.collar.owner") + " " + stack.stackTagCompound.getString("owner"));
if(Compat.botan && GuiScreen.isShiftKeyDown() && getCosmeticItem(stack) != null)
list.add(String.format(StatCollector.translateToLocal("botaniamisc.hasCosmetic"), getCosmeticItem(stack).getDisplayName()).replaceAll("&", "\u00a7"));
}
}
/**
* Returns true if the item can be used on the given entity, e.g. shears on sheep.
*/
@Override
public boolean itemInteractionForEntity(ItemStack itemstack, EntityPlayer player, EntityLivingBase entity)
{
if (entity.worldObj.isRemote)
{
return false;
}
if (entity instanceof EntityPlayer)
{
EntityPlayer sub = (EntityPlayer)entity;
IInventory baubles = BaublesApi.getBaubles(sub);
if(baubles.getStackInSlot(0) == null) {
if(!itemstack.hasTagCompound()){
NBTTagCompound tag = new NBTTagCompound();
itemstack.setTagCompound(tag);
}
itemstack.stackTagCompound.setString("owner", player.getDisplayName());
baubles.setInventorySlotContents(0, itemstack.copy());
itemstack.stackSize = 0;
sub.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("message.collar.placescollar").replace("%s", player.getDisplayName())));
player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("message.collar.youplacecollar").replace("%s", sub.getDisplayName())));
return true;
}
else
player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("message.collar.alreadywearing").replace("%s", sub.getDisplayName())));
}
return false;
}
@SideOnly(Side.CLIENT)
@Override
public void getSubItems(Item item, CreativeTabs xCreativeTabs, List list) {
list.add(new ItemStack(item, 1, 0));
}
@Override
public ItemStack getCosmeticItem(ItemStack stack) {
if(stack == null || stack.getTagCompound() == null)
return null;
if(!stack.getTagCompound().hasKey("cosmeticItem"))
return null;
NBTTagCompound cosmetic = stack.getTagCompound().getCompoundTag("cosmeticItem");
return ItemStack.loadItemStackFromNBT(cosmetic);
}
@Override
public void setCosmeticItem(ItemStack stack, ItemStack cosmetic) {
if(stack == null)
return;
NBTTagCompound cmp = new NBTTagCompound();
if(cosmetic != null)
cosmetic.writeToNBT(cmp);
NBTTagCompound tag = stack.getTagCompound();
if(tag == null){
tag = new NBTTagCompound();
stack.setTagCompound(tag);
}
tag.setTag("cosmeticItem", cmp);
}
}