package crazypants.enderio.conduit.item.filter;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import com.enderio.core.api.client.gui.IResourceTooltipProvider;
import com.enderio.core.client.handlers.SpecialTooltipHandler;
import com.enderio.core.common.util.ChatUtil;
import com.enderio.core.common.util.ItemUtil;
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;
import crazypants.enderio.conduit.item.FilterRegister;
public class ItemExistingItemFilter extends Item implements IItemFilterUpgrade, IResourceTooltipProvider {
public static ItemExistingItemFilter create() {
ItemExistingItemFilter result = new ItemExistingItemFilter();
result.init();
return result;
}
protected ItemExistingItemFilter() {
setCreativeTab(EnderIOTab.tabEnderIO);
setUnlocalizedName(ModObject.itemExistingItemFilter.unlocalisedName);
setHasSubtypes(true);
setMaxDamage(0);
setMaxStackSize(64);
}
protected void init() {
GameRegistry.registerItem(this, ModObject.itemExistingItemFilter.unlocalisedName);
}
@Override
public IItemFilter createFilterFromStack(ItemStack stack) {
IItemFilter filter = new ExistingItemFilter();
if(stack.stackTagCompound != null && stack.stackTagCompound.hasKey("filter")) {
filter.readFromNBT(stack.stackTagCompound.getCompoundTag("filter"));
}
return filter;
}
@Override
public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9, float par10) {
if(world.isRemote) {
return true;
}
if(player.isSneaking()) {
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof IInventory) {
IInventory inv = ItemUtil.getInventory((IInventory) te);
ExistingItemFilter filter = (ExistingItemFilter) createFilterFromStack(item);
String unloc = "item.itemExistingItemFilter." + (filter.mergeSnapshot(inv) ? "filterUpdated" : "filterNotUpdated");
ChatUtil.sendNoSpamUnloc(player, EnderIO.lang, unloc);
FilterRegister.writeFilterToStack(filter, item);
return true;
}
}
return false;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister IIconRegister) {
itemIcon = IIconRegister.registerIcon("enderio:existingItemFilter");
}
@Override
public String getUnlocalizedNameForTooltip(ItemStack stack) {
return getUnlocalizedName();
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
if(FilterRegister.isFilterSet(par1ItemStack)) {
if(SpecialTooltipHandler.showAdvancedTooltips()) {
par3List.add(EnumChatFormatting.ITALIC + EnderIO.lang.localize("itemConduitFilterUpgrade.configured"));
par3List.add(EnumChatFormatting.ITALIC + EnderIO.lang.localize("itemConduitFilterUpgrade.clearConfigMethod"));
}
}
}
}