// 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.util.math.MBlockPos;
import com.github.lunatrius.ingameinfo.tag.registry.TagRegistry;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.EnumSkyBlock;
import java.util.Locale;
            return String.valueOf(player.isSprinting());
        }
    }

    public static class Invisible extends TagPlayerGeneral {
        @Override
        public String getValue() {
            return String.valueOf(player.isInvisible());
        }
    }

    public static class Eating extends TagPlayerGeneral {
        @Override
        public String getValue() {
            // TODO: remove or fix
            // return String.valueOf(player.isEating());
            return String.valueOf(false);
        }
    }

    public static void register() {
        TagRegistry.INSTANCE.register(new Light().setName("light"));
        TagRegistry.INSTANCE.register(new LightEye().setName("lighteye"));
        TagRegistry.INSTANCE.register(new LightNoSun().setName("lightnosun"));
        TagRegistry.INSTANCE.register(new LightNoSunEye().setName("lightnosuneye"));
        TagRegistry.INSTANCE.register(new LightSun().setName("lightsun"));
        TagRegistry.INSTANCE.register(new LightSunEye().setName("lightsuneye"));
        TagRegistry.INSTANCE.register(new Score().setName("score"));
        TagRegistry.INSTANCE.register(new GameMode().setName("gamemode"));
        TagRegistry.INSTANCE.register(new GameModeId().setName("gamemodeid"));
// 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/TagPlayerGeneral.java
import com.github.lunatrius.core.util.math.MBlockPos;
import com.github.lunatrius.ingameinfo.tag.registry.TagRegistry;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.EnumSkyBlock;
import java.util.Locale;

            return String.valueOf(player.isSprinting());
        }
    }

    public static class Invisible extends TagPlayerGeneral {
        @Override
        public String getValue() {
            return String.valueOf(player.isInvisible());
        }
    }

    public static class Eating extends TagPlayerGeneral {
        @Override
        public String getValue() {
            // TODO: remove or fix
            // return String.valueOf(player.isEating());
            return String.valueOf(false);
        }
    }

    public static void register() {
        TagRegistry.INSTANCE.register(new Light().setName("light"));
        TagRegistry.INSTANCE.register(new LightEye().setName("lighteye"));
        TagRegistry.INSTANCE.register(new LightNoSun().setName("lightnosun"));
        TagRegistry.INSTANCE.register(new LightNoSunEye().setName("lightnosuneye"));
        TagRegistry.INSTANCE.register(new LightSun().setName("lightsun"));
        TagRegistry.INSTANCE.register(new LightSunEye().setName("lightsuneye"));
        TagRegistry.INSTANCE.register(new Score().setName("score"));
        TagRegistry.INSTANCE.register(new GameMode().setName("gamemode"));
        TagRegistry.INSTANCE.register(new GameModeId().setName("gamemodeid"));
        TagRegistry.INSTANCE.register(new Health().setName("health").setAliases("healthpoints"));