// Path: src/main/java/com/github/lunatrius/ingameinfo/client/gui/overlay/InfoItem.java
// public class InfoItem extends Info {
//     private static final Minecraft MINECRAFT = Minecraft.getMinecraft();
//     private final ItemStack itemStack;
//     private final boolean large;
//     private final int size;
// 
//     public InfoItem(final ItemStack itemStack) {
//         this(itemStack, false);
//     }
// 
//     public InfoItem(final ItemStack itemStack, final boolean large) {
//         this(itemStack, large, 0, 0);
//     }
// 
//     public InfoItem(final ItemStack itemStack, final boolean large, final int x, final int y) {
//         super(x, y);
//         this.itemStack = itemStack;
//         this.large = large;
//         this.size = large ? 16 : 8;
//         if (large) {
//             this.y = -4;
//         }
//     }
// 
//     @Override
//     public void drawInfo() {
//         if (!this.itemStack.isEmpty()) {
//             GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
//             GlStateManager.enableRescaleNormal();
//             RenderHelper.enableGUIStandardItemLighting();
// 
//             GlStateManager.translate(getX(), getY(), 0);
//             if (!this.large) {
//                 GlStateManager.scale(0.5f, 0.5f, 0.5f);
//             }
// 
//             final RenderItem renderItem = MINECRAFT.getRenderItem();
//             final float zLevel = renderItem.zLevel;
//             renderItem.zLevel = 300;
//             renderItem.renderItemAndEffectIntoGUI(this.itemStack, 0, 0);
// 
//             if (ConfigurationHandler.showOverlayItemIcons) {
//                 renderItem.renderItemOverlayIntoGUI(MINECRAFT.fontRenderer, this.itemStack, 0, 0, "");
//             }
// 
//             renderItem.zLevel = zLevel;
// 
//             if (!this.large) {
//                 GlStateManager.scale(2.0f, 2.0f, 2.0f);
//             }
//             GlStateManager.translate(-getX(), -getY(), 0);
// 
//             RenderHelper.disableStandardItemLighting();
//             GlStateManager.disableRescaleNormal();
//             GlStateManager.disableBlend();
//         }
//     }
// 
//     @Override
//     public int getWidth() {
//         return !this.itemStack.isEmpty() ? this.size : 0;
//     }
// 
//     @Override
//     public int getHeight() {
//         return !this.itemStack.isEmpty() ? this.size : 0;
//     }
// 
//     @Override
//     public String toString() {
//         return String.format("InfoItem{itemStack: %s, x: %d, y: %d, offsetX: %d, offsetY: %d, children: %s}", this.itemStack, this.x, this.y, this.offsetX, this.offsetY, this.children);
//     }
// }
// 
// Path: src/main/java/com/github/lunatrius/ingameinfo/tag/registry/TagRegistry.java
// public class TagRegistry {
//     public static final TagRegistry INSTANCE = new TagRegistry();
// 
//     private Map<String, Tag> stringTagMap = new HashMap<String, Tag>();
// 
//     private void register(final String name, final Tag tag) {
//         if (this.stringTagMap.containsKey(name)) {
//             Reference.logger.error("Duplicate tag key '" + name + "'!");
//             return;
//         }
// 
//         if (name == null) {
//             Reference.logger.error("Tag name cannot be null!");
//             return;
//         }
// 
//         this.stringTagMap.put(name.toLowerCase(Locale.ENGLISH), tag);
//     }
// 
//     public void register(final Tag tag) {
//         register(tag.getName(), tag);
// 
//         for (final String name : tag.getAliases()) {
//             register(name, tag);
//         }
//     }
// 
//     public String getValue(final String name) {
//         final Tag tag = this.stringTagMap.get(name.toLowerCase(Locale.ENGLISH));
//         return tag != null ? tag.getValue() : null;
//     }
// 
//     public List<Tag> getRegisteredTags() {
//         final List<Tag> tags = new ArrayList<Tag>();
//         for (final Map.Entry<String, Tag> entry : this.stringTagMap.entrySet()) {
//             tags.add(entry.getValue());
//         }
//         return tags;
//     }
// 
//     public void init() {
//         TagFormatting.register();
//         TagMisc.register();
//         TagMouseOver.register();
//         TagNearbyPlayer.register();
//         TagPlayerEquipment.register();
//         TagPlayerGeneral.register();
//         TagPlayerPosition.register();
//         TagPlayerPotion.register();
//         TagRiding.register();
//         TagTime.register();
//         TagWorld.register();
// 
//         Reference.logger.info("Registered " + this.stringTagMap.size() + " tags.");
//     }
// }


import com.github.lunatrius.core.entity.EntityHelper;
import com.github.lunatrius.ingameinfo.client.gui.overlay.InfoItem;
import com.github.lunatrius.ingameinfo.tag.registry.TagRegistry;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack;
        }
    }

    public static class Quantity extends TagPlayerEquipment {
        public Quantity(final int slot) {
            super(slot);
        }

        @Override
        public String getValue() {
            final ItemStack itemStack = getItemStack(this.slot);
            if (itemStack.isEmpty()) {
                return String.valueOf(0);
            }

            return String.valueOf(EntityHelper.getItemCountInInventory(player.inventory, itemStack.getItem(), itemStack.getItemDamage()));
        }
    }

    public static class Icon extends TagPlayerEquipment {
        private final boolean large;

        public Icon(final int slot, final boolean large) {
            super(slot);
            this.large = large;
        }

        @Override
        public String getValue() {
            final ItemStack itemStack = getItemStack(this.slot);
// Path: src/main/java/com/github/lunatrius/ingameinfo/client/gui/overlay/InfoItem.java
// public class InfoItem extends Info {
//     private static final Minecraft MINECRAFT = Minecraft.getMinecraft();
//     private final ItemStack itemStack;
//     private final boolean large;
//     private final int size;
// 
//     public InfoItem(final ItemStack itemStack) {
//         this(itemStack, false);
//     }
// 
//     public InfoItem(final ItemStack itemStack, final boolean large) {
//         this(itemStack, large, 0, 0);
//     }
// 
//     public InfoItem(final ItemStack itemStack, final boolean large, final int x, final int y) {
//         super(x, y);
//         this.itemStack = itemStack;
//         this.large = large;
//         this.size = large ? 16 : 8;
//         if (large) {
//             this.y = -4;
//         }
//     }
// 
//     @Override
//     public void drawInfo() {
//         if (!this.itemStack.isEmpty()) {
//             GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
//             GlStateManager.enableRescaleNormal();
//             RenderHelper.enableGUIStandardItemLighting();
// 
//             GlStateManager.translate(getX(), getY(), 0);
//             if (!this.large) {
//                 GlStateManager.scale(0.5f, 0.5f, 0.5f);
//             }
// 
//             final RenderItem renderItem = MINECRAFT.getRenderItem();
//             final float zLevel = renderItem.zLevel;
//             renderItem.zLevel = 300;
//             renderItem.renderItemAndEffectIntoGUI(this.itemStack, 0, 0);
// 
//             if (ConfigurationHandler.showOverlayItemIcons) {
//                 renderItem.renderItemOverlayIntoGUI(MINECRAFT.fontRenderer, this.itemStack, 0, 0, "");
//             }
// 
//             renderItem.zLevel = zLevel;
// 
//             if (!this.large) {
//                 GlStateManager.scale(2.0f, 2.0f, 2.0f);
//             }
//             GlStateManager.translate(-getX(), -getY(), 0);
// 
//             RenderHelper.disableStandardItemLighting();
//             GlStateManager.disableRescaleNormal();
//             GlStateManager.disableBlend();
//         }
//     }
// 
//     @Override
//     public int getWidth() {
//         return !this.itemStack.isEmpty() ? this.size : 0;
//     }
// 
//     @Override
//     public int getHeight() {
//         return !this.itemStack.isEmpty() ? this.size : 0;
//     }
// 
//     @Override
//     public String toString() {
//         return String.format("InfoItem{itemStack: %s, x: %d, y: %d, offsetX: %d, offsetY: %d, children: %s}", this.itemStack, this.x, this.y, this.offsetX, this.offsetY, this.children);
//     }
// }
// 
// Path: src/main/java/com/github/lunatrius/ingameinfo/tag/registry/TagRegistry.java
// public class TagRegistry {
//     public static final TagRegistry INSTANCE = new TagRegistry();
// 
//     private Map<String, Tag> stringTagMap = new HashMap<String, Tag>();
// 
//     private void register(final String name, final Tag tag) {
//         if (this.stringTagMap.containsKey(name)) {
//             Reference.logger.error("Duplicate tag key '" + name + "'!");
//             return;
//         }
// 
//         if (name == null) {
//             Reference.logger.error("Tag name cannot be null!");
//             return;
//         }
// 
//         this.stringTagMap.put(name.toLowerCase(Locale.ENGLISH), tag);
//     }
// 
//     public void register(final Tag tag) {
//         register(tag.getName(), tag);
// 
//         for (final String name : tag.getAliases()) {
//             register(name, tag);
//         }
//     }
// 
//     public String getValue(final String name) {
//         final Tag tag = this.stringTagMap.get(name.toLowerCase(Locale.ENGLISH));
//         return tag != null ? tag.getValue() : null;
//     }
// 
//     public List<Tag> getRegisteredTags() {
//         final List<Tag> tags = new ArrayList<Tag>();
//         for (final Map.Entry<String, Tag> entry : this.stringTagMap.entrySet()) {
//             tags.add(entry.getValue());
//         }
//         return tags;
//     }
// 
//     public void init() {
//         TagFormatting.register();
//         TagMisc.register();
//         TagMouseOver.register();
//         TagNearbyPlayer.register();
//         TagPlayerEquipment.register();
//         TagPlayerGeneral.register();
//         TagPlayerPosition.register();
//         TagPlayerPotion.register();
//         TagRiding.register();
//         TagTime.register();
//         TagWorld.register();
// 
//         Reference.logger.info("Registered " + this.stringTagMap.size() + " tags.");
//     }
// }


// Path: src/main/java/com/github/lunatrius/ingameinfo/tag/TagPlayerEquipment.java
import com.github.lunatrius.core.entity.EntityHelper;
import com.github.lunatrius.ingameinfo.client.gui.overlay.InfoItem;
import com.github.lunatrius.ingameinfo.tag.registry.TagRegistry;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBow;
import net.minecraft.item.ItemStack;

        }
    }

    public static class Quantity extends TagPlayerEquipment {
        public Quantity(final int slot) {
            super(slot);
        }

        @Override
        public String getValue() {
            final ItemStack itemStack = getItemStack(this.slot);
            if (itemStack.isEmpty()) {
                return String.valueOf(0);
            }

            return String.valueOf(EntityHelper.getItemCountInInventory(player.inventory, itemStack.getItem(), itemStack.getItemDamage()));
        }
    }

    public static class Icon extends TagPlayerEquipment {
        private final boolean large;

        public Icon(final int slot, final boolean large) {
            super(slot);
            this.large = large;
        }

        @Override
        public String getValue() {
            final ItemStack itemStack = getItemStack(this.slot);
            final InfoItem item = new InfoItem(itemStack, this.large);