org.spongepowered.granite.registry.GraniteGameRegistry.java Source code

Java tutorial

Introduction

Here is the source code for org.spongepowered.granite.registry.GraniteGameRegistry.java

Source

/*
 * This file is part of Granite, licensed under the MIT License (MIT).
 *
 * Copyright (c) SpongePowered <http://github.com/SpongePowered>
 * Copyright (c) contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package org.spongepowered.granite.registry;

import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import net.minecraft.block.Block;
import net.minecraft.entity.boss.EntityDragonPart;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.effect.EntityWeatherEffect;
import net.minecraft.entity.item.EntityPainting;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.projectile.EntityEgg;
import net.minecraft.entity.projectile.EntityFishHook;
import net.minecraft.init.Blocks;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFishFood;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.tileentity.TileEntityBanner;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.world.EnumDifficulty;
import net.minecraft.world.WorldProviderEnd;
import net.minecraft.world.WorldProviderHell;
import net.minecraft.world.WorldProviderSurface;
import net.minecraft.world.biome.BiomeGenBase;
import org.apache.commons.lang3.NotImplementedException;
import org.spongepowered.api.GameDictionary;
import org.spongepowered.api.GameProfile;
import org.spongepowered.api.GameRegistry;
import org.spongepowered.api.attribute.Attribute;
import org.spongepowered.api.attribute.AttributeBuilder;
import org.spongepowered.api.attribute.AttributeCalculator;
import org.spongepowered.api.attribute.AttributeModifierBuilder;
import org.spongepowered.api.attribute.Operation;
import org.spongepowered.api.block.BlockType;
import org.spongepowered.api.block.tile.TileEntityType;
import org.spongepowered.api.block.tile.data.BannerPatternShape;
import org.spongepowered.api.block.tile.data.BannerPatternShapes;
import org.spongepowered.api.block.tile.data.NotePitch;
import org.spongepowered.api.block.tile.data.SkullType;
import org.spongepowered.api.effect.particle.ParticleEffectBuilder;
import org.spongepowered.api.effect.particle.ParticleType;
import org.spongepowered.api.effect.particle.ParticleTypes;
import org.spongepowered.api.effect.sound.SoundType;
import org.spongepowered.api.effect.sound.SoundTypes;
import org.spongepowered.api.entity.EntityInteractionType;
import org.spongepowered.api.entity.EntityInteractionTypes;
import org.spongepowered.api.entity.EntityType;
import org.spongepowered.api.entity.EntityTypes;
import org.spongepowered.api.entity.hanging.art.Art;
import org.spongepowered.api.entity.hanging.art.Arts;
import org.spongepowered.api.entity.living.animal.HorseColor;
import org.spongepowered.api.entity.living.animal.HorseColors;
import org.spongepowered.api.entity.living.animal.HorseStyle;
import org.spongepowered.api.entity.living.animal.HorseStyles;
import org.spongepowered.api.entity.living.animal.HorseVariant;
import org.spongepowered.api.entity.living.animal.HorseVariants;
import org.spongepowered.api.entity.living.animal.OcelotType;
import org.spongepowered.api.entity.living.animal.OcelotTypes;
import org.spongepowered.api.entity.living.animal.RabbitType;
import org.spongepowered.api.entity.living.animal.RabbitTypes;
import org.spongepowered.api.entity.living.monster.SkeletonType;
import org.spongepowered.api.entity.living.monster.SkeletonTypes;
import org.spongepowered.api.entity.living.villager.Career;
import org.spongepowered.api.entity.living.villager.Profession;
import org.spongepowered.api.entity.living.villager.Professions;
import org.spongepowered.api.entity.player.gamemode.GameMode;
import org.spongepowered.api.entity.player.gamemode.GameModes;
import org.spongepowered.api.item.CoalType;
import org.spongepowered.api.item.CoalTypes;
import org.spongepowered.api.item.CookedFish;
import org.spongepowered.api.item.CookedFishes;
import org.spongepowered.api.item.DyeColor;
import org.spongepowered.api.item.DyeColors;
import org.spongepowered.api.item.Enchantment;
import org.spongepowered.api.item.Enchantments;
import org.spongepowered.api.item.FireworkEffectBuilder;
import org.spongepowered.api.item.Fish;
import org.spongepowered.api.item.Fishes;
import org.spongepowered.api.item.GoldenApple;
import org.spongepowered.api.item.GoldenApples;
import org.spongepowered.api.item.ItemType;
import org.spongepowered.api.item.ItemTypes;
import org.spongepowered.api.item.inventory.ItemStackBuilder;
import org.spongepowered.api.item.merchant.TradeOfferBuilder;
import org.spongepowered.api.item.recipe.RecipeRegistry;
import org.spongepowered.api.potion.PotionEffectBuilder;
import org.spongepowered.api.potion.PotionEffectType;
import org.spongepowered.api.potion.PotionEffectTypes;
import org.spongepowered.api.status.Favicon;
import org.spongepowered.api.text.Texts;
import org.spongepowered.api.text.chat.ChatType;
import org.spongepowered.api.text.chat.ChatTypes;
import org.spongepowered.api.text.format.TextColor;
import org.spongepowered.api.text.format.TextColors;
import org.spongepowered.api.text.format.TextStyle;
import org.spongepowered.api.text.format.TextStyles;
import org.spongepowered.api.text.selector.ArgumentType;
import org.spongepowered.api.text.selector.SelectorType;
import org.spongepowered.api.text.selector.SelectorTypes;
import org.spongepowered.api.text.translation.Translation;
import org.spongepowered.api.text.translation.locale.Locales;
import org.spongepowered.api.util.Direction;
import org.spongepowered.api.util.annotation.NonnullByDefault;
import org.spongepowered.api.util.rotation.Rotation;
import org.spongepowered.api.util.rotation.Rotations;
import org.spongepowered.api.world.DimensionType;
import org.spongepowered.api.world.DimensionTypes;
import org.spongepowered.api.world.biome.BiomeType;
import org.spongepowered.api.world.biome.BiomeTypes;
import org.spongepowered.api.world.difficulty.Difficulties;
import org.spongepowered.api.world.difficulty.Difficulty;
import org.spongepowered.api.world.gamerule.DefaultGameRules;
import org.spongepowered.granite.effect.particle.GraniteParticleType;
import org.spongepowered.granite.effect.sound.GraniteSoundType;
import org.spongepowered.granite.entity.GraniteEntityInteractionType;
import org.spongepowered.granite.entity.GraniteEntityType;
import org.spongepowered.granite.entity.living.animal.GraniteHorseColor;
import org.spongepowered.granite.entity.living.animal.GraniteHorseStyle;
import org.spongepowered.granite.entity.living.animal.GraniteHorseVariant;
import org.spongepowered.granite.entity.living.animal.GraniteOcelotType;
import org.spongepowered.granite.entity.living.animal.GraniteRabbitType;
import org.spongepowered.granite.entity.living.monster.GraniteSkeletonType;
import org.spongepowered.granite.entity.living.villager.GraniteCareer;
import org.spongepowered.granite.entity.living.villager.GraniteProfession;
import org.spongepowered.granite.entity.player.gamemode.GraniteGameMode;
import org.spongepowered.granite.item.GraniteCoalType;
import org.spongepowered.granite.item.GraniteGoldenApple;
import org.spongepowered.granite.potion.GranitePotionEffectType;
import org.spongepowered.granite.rotation.GraniteRotation;
import org.spongepowered.granite.text.GraniteTextFactory;
import org.spongepowered.granite.text.chat.GraniteChatType;
import org.spongepowered.granite.text.format.GraniteTextColor;
import org.spongepowered.granite.text.format.GraniteTextStyle;
import org.spongepowered.granite.text.selector.GraniteSelectorType;
import org.spongepowered.granite.world.GraniteDimensionType;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Collection;
import java.util.Locale;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;

import javax.inject.Singleton;

@NonnullByDefault
@Singleton
public class GraniteGameRegistry implements GameRegistry {

    private final Map<String, Art> arts = Maps.newHashMap();
    private final Map<String, BannerPatternShape> bannerPatternShapes = Maps.newHashMap();
    private final Map<String, BiomeType> biomeTypes = Maps.newHashMap();
    private final Map<String, BlockType> blockTypes = Maps.newHashMap();
    private final Map<String, Career> careers = Maps.newHashMap();
    private final Map<String, ChatType> chatTypes = Maps.newHashMap();
    private final Map<String, CoalType> coalTypes = Maps.newHashMap();
    private final Map<String, CookedFish> cookedFishes = Maps.newHashMap();
    private final Map<String, String> defaultGameRules = Maps.newHashMap();
    private final Map<String, Difficulty> difficulties = Maps.newHashMap();
    private final Map<String, DimensionType> dimensionTypes = Maps.newHashMap();
    private final Map<Direction, EnumFacing> directions = Maps.newHashMap();
    private final Map<String, DyeColor> dyeColors = Maps.newHashMap();
    private final Map<String, Enchantment> enchantments = Maps.newHashMap();
    private final Map<String, EntityInteractionType> entityInteractionTypes = Maps.newHashMap();
    private final Map<String, EntityType> entityTypes = Maps.newHashMap();
    private final Map<String, Fish> fishes = Maps.newHashMap();
    private final Map<String, GameMode> gameModes = Maps.newHashMap();
    private final Map<String, GoldenApple> goldenApples = Maps.newHashMap();
    private final Map<String, HorseColor> horseColors = Maps.newHashMap();
    private final Map<String, HorseStyle> horseStyles = Maps.newHashMap();
    private final Map<String, HorseVariant> horseVariants = Maps.newHashMap();
    private final Map<String, ItemType> itemTypes = Maps.newHashMap();
    private final Map<String, Locale> locales = Maps.newHashMap();
    private final Map<String, NotePitch> notePitches = Maps.newHashMap();
    private final Map<String, OcelotType> ocelotTypes = Maps.newHashMap();
    private final Map<String, ParticleType> particleTypes = Maps.newHashMap();
    private final Map<String, PotionEffectType> potionEffectTypes = Maps.newHashMap();
    private final Map<String, Profession> professions = Maps.newHashMap();
    private final Map<String, RabbitType> rabbitTypes = Maps.newHashMap();
    private final Map<String, Rotation> rotations = Maps.newHashMap();
    private final Map<String, SelectorType> selectorTypes = Maps.newHashMap();
    private final Map<String, SkeletonType> skeletonTypes = Maps.newHashMap();
    private final Map<String, SkullType> skullTypes = Maps.newHashMap();
    private final Map<String, SoundType> soundTypes = Maps.newHashMap();
    private final Map<String, TextColor> textColors = Maps.newHashMap();
    private final Map<String, TextStyle> textStyles = Maps.newHashMap();
    private final Map<String, Translation> translations = Maps.newHashMap();

    public EnumFacing getNotchDirection(Direction direction) {
        return this.directions.get(direction);
    }

    @Override
    public Optional<BlockType> getBlock(String id) {
        return Optional.fromNullable(this.blockTypes.get(id));
    }

    @Override
    public Collection<BlockType> getBlocks() {
        return ImmutableList.copyOf(this.blockTypes.values());
    }

    @Override
    public Optional<ItemType> getItem(String id) {
        return Optional.fromNullable(this.itemTypes.get(id));
    }

    @Override
    public Collection<ItemType> getItems() {
        return ImmutableList.copyOf(this.itemTypes.values());
    }

    @Override
    public Optional<TileEntityType> getTileEntityType(String id) {
        throw new NotImplementedException("");
    }

    @Override
    public Collection<TileEntityType> getTileEntityTypes() {
        throw new NotImplementedException("");
    }

    @Override
    public Optional<BiomeType> getBiome(String id) {
        return Optional.fromNullable(this.biomeTypes.get(id));
    }

    @Override
    public Collection<BiomeType> getBiomes() {
        return ImmutableList.copyOf(this.biomeTypes.values());
    }

    @Override
    public ItemStackBuilder getItemBuilder() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public TradeOfferBuilder getTradeOfferBuilder() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public PotionEffectBuilder getPotionEffectBuilder() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<ParticleType> getParticleType(String name) {
        return Optional.fromNullable(this.particleTypes.get(name));
    }

    @Override
    public Collection<ParticleType> getParticleTypes() {
        return ImmutableList.copyOf(this.particleTypes.values());
    }

    @Override
    public ParticleEffectBuilder getParticleEffectBuilder(ParticleType particle) {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<SoundType> getSound(String name) {
        return Optional.fromNullable(this.soundTypes.get(name));
    }

    @Override
    public Collection<SoundType> getSounds() {
        return ImmutableList.copyOf(this.soundTypes.values());
    }

    @Override
    public Optional<EntityType> getEntity(String id) {
        return Optional.fromNullable(this.entityTypes.get(id));
    }

    @Override
    public Collection<EntityType> getEntities() {
        return ImmutableList.copyOf(this.entityTypes.values());
    }

    @Override
    public Optional<Art> getArt(String id) {
        return Optional.fromNullable(this.arts.get(id));
    }

    @Override
    public Collection<Art> getArts() {
        return ImmutableList.copyOf(this.arts.values());
    }

    @Override
    public Optional<DyeColor> getDye(String id) {
        return Optional.fromNullable(this.dyeColors.get(id));
    }

    @Override
    public Collection<DyeColor> getDyes() {
        return ImmutableList.copyOf(this.dyeColors.values());
    }

    @Override
    public Optional<HorseColor> getHorseColor(String id) {
        return Optional.fromNullable(this.horseColors.get(id));
    }

    @Override
    public Collection<HorseColor> getHorseColors() {
        return ImmutableList.copyOf(this.horseColors.values());
    }

    @Override
    public Optional<HorseStyle> getHorseStyle(String id) {
        return Optional.fromNullable(this.horseStyles.get(id));
    }

    @Override
    public Collection<HorseStyle> getHorseStyles() {
        return ImmutableList.copyOf(this.horseStyles.values());
    }

    @Override
    public Optional<HorseVariant> getHorseVariant(String id) {
        return Optional.fromNullable(this.horseVariants.get(id));
    }

    @Override
    public Collection<HorseVariant> getHorseVariants() {
        return ImmutableList.copyOf(this.horseVariants.values());
    }

    @Override
    public Optional<OcelotType> getOcelotType(String id) {
        return Optional.fromNullable(this.ocelotTypes.get(id));
    }

    @Override
    public Collection<OcelotType> getOcelotTypes() {
        return ImmutableList.copyOf(this.ocelotTypes.values());
    }

    @Override
    public Optional<RabbitType> getRabbitType(String id) {
        return Optional.fromNullable(this.rabbitTypes.get(id));
    }

    @Override
    public Collection<RabbitType> getRabbitTypes() {
        return ImmutableList.copyOf(this.rabbitTypes.values());
    }

    @Override
    public Optional<SkeletonType> getSkeletonType(String id) {
        return Optional.fromNullable(this.skeletonTypes.get(id));
    }

    @Override
    public Collection<SkeletonType> getSkeletonTypes() {
        return ImmutableList.copyOf(this.skeletonTypes.values());
    }

    @Override
    public Optional<Career> getCareer(String id) {
        return Optional.fromNullable(this.careers.get(id));
    }

    @Override
    public Collection<Career> getCareers() {
        return ImmutableList.copyOf(this.careers.values());
    }

    @Override
    public Collection<Career> getCareers(Profession profession) {
        return getCareers().stream().filter(career -> career.getProfession() == profession)
                .collect(Collectors.toList());
    }

    @Override
    public Optional<Profession> getProfession(String id) {
        return Optional.fromNullable(this.professions.get(id));
    }

    @Override
    public Collection<Profession> getProfessions() {
        return ImmutableList.copyOf(this.professions.values());
    }

    @Override
    public Collection<GameMode> getGameModes() {
        return ImmutableList.copyOf(this.gameModes.values());
    }

    @Override
    public Collection<PotionEffectType> getPotionEffects() {
        return ImmutableList.copyOf(this.potionEffectTypes.values());
    }

    @Override
    public Optional<Enchantment> getEnchantment(String id) {
        return Optional.fromNullable(this.enchantments.get(id));
    }

    @Override
    public Collection<Enchantment> getEnchantments() {
        return ImmutableList.copyOf(this.enchantments.values());
    }

    @Override
    public Collection<String> getDefaultGameRules() {
        return ImmutableList.copyOf(this.defaultGameRules.keySet());
    }

    @Override
    public Optional<DimensionType> getDimensionType(String name) {
        return Optional.fromNullable(this.dimensionTypes.get(name));
    }

    @Override
    public Collection<DimensionType> getDimensionTypes() {
        return ImmutableList.copyOf(this.dimensionTypes.values());
    }

    @Override
    public Optional<Rotation> getRotationFromDegree(int degrees) {
        for (Rotation rotation : getRotations()) {
            if (rotation.getAngle() == degrees) {
                return Optional.fromNullable(rotation);
            }
        }
        return Optional.absent();
    }

    @Override
    public Collection<Rotation> getRotations() {
        return ImmutableList.copyOf(this.rotations.values());
    }

    @Override
    public GameProfile createGameProfile(UUID uuid, String name) {
        return (GameProfile) new com.mojang.authlib.GameProfile(uuid, name);
    }

    @Override
    public Favicon loadFavicon(String raw) throws IOException {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Favicon loadFavicon(File file) throws IOException {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Favicon loadFavicon(URL url) throws IOException {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Favicon loadFavicon(InputStream in) throws IOException {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Favicon loadFavicon(BufferedImage image) throws IOException {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<NotePitch> getNotePitch(String name) {
        return Optional.fromNullable(this.notePitches.get(name));
    }

    @Override
    public Collection<NotePitch> getNotePitches() {
        return ImmutableList.copyOf(this.notePitches.values());
    }

    @Override
    public Optional<SkullType> getSkullType(String name) {
        return Optional.fromNullable(this.skullTypes.get(name));
    }

    @Override
    public Collection<SkullType> getSkullTypes() {
        return ImmutableList.copyOf(this.skullTypes.values());
    }

    @Override
    public Optional<BannerPatternShape> getBannerPatternShape(String name) {
        return Optional.fromNullable(this.bannerPatternShapes.get(name));
    }

    @Override
    public Optional<BannerPatternShape> getBannerPatternShapeById(String id) {
        for (BannerPatternShape bannerPatternShape : getBannerPatternShapes()) {
            if (bannerPatternShape.getId().equals(id)) {
                return Optional.fromNullable(bannerPatternShape);
            }
        }
        return Optional.absent();
    }

    @Override
    public Collection<BannerPatternShape> getBannerPatternShapes() {
        return ImmutableList.copyOf(this.bannerPatternShapes.values());
    }

    @Override
    public GameDictionary getGameDictionary() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public RecipeRegistry getRecipeRegistry() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Collection<Difficulty> getDifficulties() {
        return ImmutableList.copyOf(this.difficulties.values());
    }

    @Override
    public Optional<Difficulty> getDifficulty(String name) {
        return Optional.fromNullable(this.difficulties.get(name));
    }

    @Override
    public Collection<EntityInteractionType> getEntityInteractionTypes() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<EntityInteractionType> getEntityInteractionType(String name) {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<Attribute> getAttribute(String name) {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Collection<Attribute> getAttributes() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<Operation> getOperation(String name) {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Collection<Operation> getOperations() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public AttributeModifierBuilder getAttributeModifierBuilder() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public AttributeCalculator getAttributeCalculator() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public AttributeBuilder getAttributeBuilder() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<CoalType> getCoalType(String name) {
        return Optional.fromNullable(this.coalTypes.get(name));
    }

    @Override
    public Collection<CoalType> getCoalTypes() {
        return ImmutableList.copyOf(this.coalTypes.values());
    }

    @Override
    public Optional<Fish> getFishType(String name) {
        return Optional.fromNullable(this.fishes.get(name));
    }

    @Override
    public Collection<Fish> getFishTypes() {
        return ImmutableList.copyOf(this.fishes.values());
    }

    @Override
    public Optional<CookedFish> getCookedFishType(String name) {
        return Optional.fromNullable(this.cookedFishes.get(name));
    }

    @Override
    public Collection<CookedFish> getCookedFishTypes() {
        return ImmutableList.copyOf(this.cookedFishes.values());
    }

    @Override
    public Optional<GoldenApple> getGoldenAppleType(String name) {
        return Optional.fromNullable(this.goldenApples.get(name));
    }

    @Override
    public Collection<GoldenApple> getGoldenAppleTypes() {
        return ImmutableList.copyOf(this.goldenApples.values());
    }

    @Override
    public FireworkEffectBuilder getFireworkEffectBuilder() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<TextColor> getTextColor(String name) {
        return Optional.fromNullable(this.textColors.get(name));
    }

    @Override
    public Collection<TextColor> getTextColors() {
        return ImmutableList.copyOf(this.textColors.values());
    }

    @Override
    public Optional<TextStyle> getTextStyle(String name) {
        return Optional.fromNullable(this.textStyles.get(name));
    }

    @Override
    public Collection<TextStyle> getTextStyles() {
        return ImmutableList.copyOf(this.textStyles.values());
    }

    @Override
    public Optional<ChatType> getChatType(String name) {
        return Optional.fromNullable(this.chatTypes.get(name));
    }

    @Override
    public Collection<ChatType> getChatTypes() {
        return ImmutableList.copyOf(this.chatTypes.values());
    }

    @Override
    public Optional<SelectorType> getSelectorType(String name) {
        return Optional.fromNullable(this.selectorTypes.get(name));
    }

    @Override
    public Collection<SelectorType> getSelectorTypes() {
        return ImmutableList.copyOf(this.selectorTypes.values());
    }

    @Override
    public Optional<ArgumentType<?>> getArgumentType(String name) {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Collection<ArgumentType<?>> getArgumentTypes() {
        throw new NotImplementedException("TODO");
    }

    @Override
    public Optional<Locale> getLocale(String name) {
        return Optional.fromNullable(this.locales.get(name));
    }

    @Override
    public Optional<Locale> getLocaleById(String id) {
        for (Locale locale : getLocales()) {
            String localeString = locale.getLanguage() + "_" + locale.getCountry();
            if (localeString.equals(id)) {
                return Optional.fromNullable(locale);
            }
        }
        return Optional.absent();
    }

    @Override
    public Collection<Locale> getLocales() {
        return ImmutableList.copyOf(this.locales.values());
    }

    @Override
    public Optional<Translation> getTranslationById(String id) {
        // TODO: this.translations.values() is temporary until getTranslations is added.
        for (Translation translation : this.translations.values()) {
            if (translation.getId().equals(id)) {
                return Optional.fromNullable(translation);
            }
        }
        return Optional.absent();
    }

    private void registerArts() {
        RegistryHelper.mapFields(Arts.class, new Function<String, Art>() {
            @Override
            public Art apply(String fieldName) {
                Art art = (Art) (Object) EntityPainting.EnumArt.valueOf(fieldName);
                GraniteGameRegistry.this.arts.put(art.getName(), art);
                return art;
            }
        });
    }

    private void registerBannerPatterns() {
        RegistryHelper.mapFields(BannerPatternShapes.class, new Function<String, BannerPatternShape>() {
            @Override
            public BannerPatternShape apply(String input) {
                BannerPatternShape bannerPattern = BannerPatternShape.class
                        .cast(TileEntityBanner.EnumBannerPattern.valueOf(input));
                GraniteGameRegistry.this.bannerPatternShapes.put(bannerPattern.getName(), bannerPattern);
                return bannerPattern;
            }
        });
    }

    private void registerBiomes() {
        BiomeGenBase[] biomeArray = BiomeGenBase.getBiomeGenArray();
        this.biomeTypes.put("OCEAN", (BiomeType) BiomeGenBase.ocean);
        this.biomeTypes.put("PLAINS", (BiomeType) BiomeGenBase.plains);
        this.biomeTypes.put("DESERT", (BiomeType) BiomeGenBase.desert);
        this.biomeTypes.put("EXTREME_HILLS", (BiomeType) BiomeGenBase.extremeHills);
        this.biomeTypes.put("FOREST", (BiomeType) BiomeGenBase.forest);
        this.biomeTypes.put("TAIGA", (BiomeType) BiomeGenBase.taiga);
        this.biomeTypes.put("SWAMPLAND", (BiomeType) BiomeGenBase.swampland);
        this.biomeTypes.put("RIVER", (BiomeType) BiomeGenBase.river);
        this.biomeTypes.put("HELL", (BiomeType) BiomeGenBase.hell);
        this.biomeTypes.put("SKY", (BiomeType) BiomeGenBase.sky);
        this.biomeTypes.put("FROZEN_OCEAN", (BiomeType) BiomeGenBase.frozenOcean);
        this.biomeTypes.put("FROZEN_RIVER", (BiomeType) BiomeGenBase.frozenRiver);
        this.biomeTypes.put("ICE_PLAINS", (BiomeType) BiomeGenBase.icePlains);
        this.biomeTypes.put("ICE_MOUNTAINS", (BiomeType) BiomeGenBase.iceMountains);
        this.biomeTypes.put("MUSHROOM_ISLAND", (BiomeType) BiomeGenBase.mushroomIsland);
        this.biomeTypes.put("MUSHROOM_ISLAND_SHORE", (BiomeType) BiomeGenBase.mushroomIslandShore);
        this.biomeTypes.put("BEACH", (BiomeType) BiomeGenBase.beach);
        this.biomeTypes.put("DESERT_HILLS", (BiomeType) BiomeGenBase.desertHills);
        this.biomeTypes.put("FOREST_HILLS", (BiomeType) BiomeGenBase.forestHills);
        this.biomeTypes.put("TAIGA_HILLS", (BiomeType) BiomeGenBase.taigaHills);
        this.biomeTypes.put("EXTREME_HILLS_EDGE", (BiomeType) BiomeGenBase.extremeHillsEdge);
        this.biomeTypes.put("JUNGLE", (BiomeType) BiomeGenBase.jungle);
        this.biomeTypes.put("JUNGLE_HILLS", (BiomeType) BiomeGenBase.jungleHills);
        this.biomeTypes.put("JUNGLE_EDGE", (BiomeType) BiomeGenBase.jungleEdge);
        this.biomeTypes.put("DEEP_OCEAN", (BiomeType) BiomeGenBase.deepOcean);
        this.biomeTypes.put("STONE_BEACH", (BiomeType) BiomeGenBase.stoneBeach);
        this.biomeTypes.put("COLD_BEACH", (BiomeType) BiomeGenBase.coldBeach);
        this.biomeTypes.put("BIRCH_FOREST", (BiomeType) BiomeGenBase.birchForest);
        this.biomeTypes.put("BIRCH_FOREST_HILLS", (BiomeType) BiomeGenBase.birchForestHills);
        this.biomeTypes.put("ROOFED_FOREST", (BiomeType) BiomeGenBase.roofedForest);
        this.biomeTypes.put("COLD_TAIGA", (BiomeType) BiomeGenBase.coldTaiga);
        this.biomeTypes.put("COLD_TAIGA_HILLS", (BiomeType) BiomeGenBase.coldTaigaHills);
        this.biomeTypes.put("MEGA_TAIGA", (BiomeType) BiomeGenBase.megaTaiga);
        this.biomeTypes.put("MEGA_TAIGA_HILLS", (BiomeType) BiomeGenBase.megaTaigaHills);
        this.biomeTypes.put("EXTREME_HILLS_PLUS", (BiomeType) BiomeGenBase.extremeHillsPlus);
        this.biomeTypes.put("SAVANNA", (BiomeType) BiomeGenBase.savanna);
        this.biomeTypes.put("SAVANNA_PLATEAU", (BiomeType) BiomeGenBase.savannaPlateau);
        this.biomeTypes.put("MESA", (BiomeType) BiomeGenBase.mesa);
        this.biomeTypes.put("MESA_PLATEAU_FOREST", (BiomeType) BiomeGenBase.mesaPlateau_F);
        this.biomeTypes.put("MESA_PLATEAU", (BiomeType) BiomeGenBase.mesaPlateau);
        this.biomeTypes.put("SUNFLOWER_PLAINS", (BiomeType) biomeArray[BiomeGenBase.plains.biomeID + 128]);
        this.biomeTypes.put("DESERT_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.desert.biomeID + 128]);
        this.biomeTypes.put("FLOWER_FOREST", (BiomeType) biomeArray[BiomeGenBase.forest.biomeID + 128]);
        this.biomeTypes.put("TAIGA_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.taiga.biomeID + 128]);
        this.biomeTypes.put("SWAMPLAND_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.swampland.biomeID + 128]);
        this.biomeTypes.put("ICE_PLAINS_SPIKES", (BiomeType) biomeArray[BiomeGenBase.icePlains.biomeID + 128]);
        this.biomeTypes.put("JUNGLE_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.jungle.biomeID + 128]);
        this.biomeTypes.put("JUNGLE_EDGE_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.jungleEdge.biomeID + 128]);
        this.biomeTypes.put("COLD_TAIGA_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.coldTaiga.biomeID + 128]);
        this.biomeTypes.put("SAVANNA_MOUNTAINS", (BiomeType) biomeArray[BiomeGenBase.savanna.biomeID + 128]);
        this.biomeTypes.put("SAVANNA_PLATEAU_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.savannaPlateau.biomeID + 128]);
        this.biomeTypes.put("MESA_BRYCE", (BiomeType) biomeArray[BiomeGenBase.mesa.biomeID + 128]);
        this.biomeTypes.put("MESA_PLATEAU_FOREST_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.mesaPlateau_F.biomeID + 128]);
        this.biomeTypes.put("MESA_PLATEAU_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.mesaPlateau.biomeID + 128]);
        this.biomeTypes.put("BIRCH_FOREST_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.birchForest.biomeID + 128]);
        this.biomeTypes.put("BIRCH_FOREST_HILLS_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.birchForestHills.biomeID + 128]);
        this.biomeTypes.put("ROOFED_FOREST_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.roofedForest.biomeID + 128]);
        this.biomeTypes.put("MEGA_SPRUCE_TAIGA", (BiomeType) biomeArray[BiomeGenBase.megaTaiga.biomeID + 128]);
        this.biomeTypes.put("EXTREME_HILLS_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.extremeHills.biomeID + 128]);
        this.biomeTypes.put("EXTREME_HILLS_PLUS_MOUNTAINS",
                (BiomeType) biomeArray[BiomeGenBase.extremeHillsPlus.biomeID + 128]);
        this.biomeTypes.put("MEGA_SPRUCE_TAIGA_HILLS",
                (BiomeType) biomeArray[BiomeGenBase.megaTaigaHills.biomeID + 128]);
        RegistryHelper.mapFields(BiomeTypes.class, this.biomeTypes);
    }

    private void registerBlocks() {
        while (Block.blockRegistry.iterator().hasNext()) {
            Block block = (Block) Block.blockRegistry.iterator().next();
            this.blockTypes.put(block.getLocalizedName(), (BlockType) block);
        }
        RegistryHelper.mapFields(ItemTypes.class, this.itemTypes);
    }

    private void registerCareersAndProfessions() {
        this.professions.put("FARMER", new GraniteProfession("farmer"));
        this.professions.put("LIBRARIAN", new GraniteProfession("librarian"));
        this.professions.put("PRIEST", new GraniteProfession("priest"));
        this.professions.put("BLACKSMITH", new GraniteProfession("blacksmith"));
        this.professions.put("BUTCHER", new GraniteProfession("butcher"));
        RegistryHelper.mapFields(Professions.class, this.professions);

        this.careers.put("FARMER", new GraniteCareer("farmer", this.professions.get("FARMER")));
        this.careers.put("FISHERMAN", new GraniteCareer("fisherman", this.professions.get("FARMER")));
        this.careers.put("SHEPHERD", new GraniteCareer("shepherd", this.professions.get("FARMER")));
        this.careers.put("FLETCHER", new GraniteCareer("fletcher", this.professions.get("FARMER")));
        this.careers.put("LIBRARIAN", new GraniteCareer("librarian", this.professions.get("LIBRARIAN")));
        this.careers.put("CLERIC", new GraniteCareer("cleric", this.professions.get("PRIEST")));
        this.careers.put("ARMORER", new GraniteCareer("armor", this.professions.get("BLACKSMITH")));
        this.careers.put("WEAPON_SMITH", new GraniteCareer("weapon", this.professions.get("BLACKSMITH")));
        this.careers.put("TOOL_SMITH", new GraniteCareer("tool", this.professions.get("BLACKSMITH")));
        this.careers.put("BUTCHER", new GraniteCareer("butcher", this.professions.get("BUTCHER")));
        this.careers.put("LEATHERWORKER", new GraniteCareer("leatherworker", this.professions.get("BUTCHER")));
        RegistryHelper.mapFields(Professions.class, this.careers);
    }

    private void registerCoalTypes() {
        this.coalTypes.put("COAL", new GraniteCoalType("COAL"));
        this.coalTypes.put("CHARCOAL", new GraniteCoalType("CHARCOAL"));
        RegistryHelper.mapFields(CoalTypes.class, this.coalTypes);
    }

    private void registerChatTypes() {
        this.chatTypes.put("CHAT", new GraniteChatType((byte) 0));
        this.chatTypes.put("SYSTEM", new GraniteChatType((byte) 1));
        this.chatTypes.put("ACTION_BAR", new GraniteChatType((byte) 2));
        RegistryHelper.mapFields(ChatTypes.class, this.chatTypes);
    }

    private void registerDefaultGameRules() {
        this.defaultGameRules.put("COMMAND_BLOCK_OUTPUT", "commandBlockOutput");
        this.defaultGameRules.put("DO_DAYLIGHT_CYCLE", "doDaylightCycle");
        this.defaultGameRules.put("DO_ENTITY_DROPS", "doEntityDrops");
        this.defaultGameRules.put("DO_FIRE_TICK", "doFireTick");
        this.defaultGameRules.put("DO_MOB_LOOT", "doMobLoot");
        this.defaultGameRules.put("DO_MOB_SPAWNING", "doMobSpawning");
        this.defaultGameRules.put("DO_TILE_DROPS", "doTileDrops");
        this.defaultGameRules.put("KEEP_INVENTORY", "keepInventory");
        this.defaultGameRules.put("LOG_ADMIN_COMMANDS", "logAdminCommands");
        this.defaultGameRules.put("MOB_GRIEFING", "mobGriefing");
        this.defaultGameRules.put("NATURAL_REGENERATION", "naturalRegeneration");
        this.defaultGameRules.put("RANDOM_TICK_SPEED", "randomTickSpeed");
        this.defaultGameRules.put("REDUCED_DEBUG_INFO", "reducedDebugInfo");
        this.defaultGameRules.put("SEND_COMMAND_FEEDBACK", "sendCommandFeedback");
        this.defaultGameRules.put("SHOW_DEATH_MESSAGES", "showDeathMessages");
        RegistryHelper.mapFields(DefaultGameRules.class, this.defaultGameRules);
    }

    private void registerDifficalties() {
        this.difficulties.put("PEACEFUL", (Difficulty) (Object) EnumDifficulty.PEACEFUL);
        this.difficulties.put("EASY", (Difficulty) (Object) EnumDifficulty.EASY);
        this.difficulties.put("NORMAL", (Difficulty) (Object) EnumDifficulty.NORMAL);
        this.difficulties.put("HARD", (Difficulty) (Object) EnumDifficulty.HARD);
        RegistryHelper.mapFields(Difficulties.class, this.difficulties);
    }

    private void registerDimensionTypes() {
        this.dimensionTypes.put("NETHER", new GraniteDimensionType("NETHER", true, WorldProviderHell.class));
        this.dimensionTypes.put("OVERWORLD",
                new GraniteDimensionType("OVERWORLD", true, WorldProviderSurface.class));
        this.dimensionTypes.put("END", new GraniteDimensionType("END", true, WorldProviderEnd.class));
        RegistryHelper.mapFields(DimensionTypes.class, this.dimensionTypes);
    }

    private void registerDirections() {
        this.directions.put(Direction.NORTH, EnumFacing.NORTH);
        this.directions.put(Direction.EAST, EnumFacing.EAST);
        this.directions.put(Direction.SOUTH, EnumFacing.SOUTH);
        this.directions.put(Direction.WEST, EnumFacing.WEST);
        this.directions.put(Direction.UP, EnumFacing.UP);
        this.directions.put(Direction.DOWN, EnumFacing.DOWN);
    }

    private void registerDyeColors() {
        RegistryHelper.mapFields(DyeColors.class, new Function<String, DyeColor>() {

            @Override
            public DyeColor apply(String input) {
                DyeColor dyeColor = DyeColor.class.cast(EnumDyeColor.valueOf(input));
                GraniteGameRegistry.this.dyeColors.put(dyeColor.getName(), dyeColor);
                return dyeColor;
            }

        });
    }

    private void registerEnchantments() {
        this.enchantments.put("PROTECTION", (Enchantment) net.minecraft.enchantment.Enchantment.protection);
        this.enchantments.put("FIRE_PROTECTION",
                (Enchantment) net.minecraft.enchantment.Enchantment.fireProtection);
        this.enchantments.put("FEATHER_FALLING",
                (Enchantment) net.minecraft.enchantment.Enchantment.featherFalling);
        this.enchantments.put("BLAST_PROTECTION",
                (Enchantment) net.minecraft.enchantment.Enchantment.blastProtection);
        this.enchantments.put("PROJECTILE_PROTECTION",
                (Enchantment) net.minecraft.enchantment.Enchantment.projectileProtection);
        this.enchantments.put("RESPIRATION", (Enchantment) net.minecraft.enchantment.Enchantment.respiration);
        this.enchantments.put("AQUA_AFFINITY", (Enchantment) net.minecraft.enchantment.Enchantment.aquaAffinity);
        this.enchantments.put("THORNS", (Enchantment) net.minecraft.enchantment.Enchantment.thorns);
        this.enchantments.put("DEPTH_STRIDER", (Enchantment) net.minecraft.enchantment.Enchantment.depthStrider);
        this.enchantments.put("SHARPNESS", (Enchantment) net.minecraft.enchantment.Enchantment.sharpness);
        this.enchantments.put("SMITE", (Enchantment) net.minecraft.enchantment.Enchantment.smite);
        this.enchantments.put("BANE_OF_ARTHROPODS",
                (Enchantment) net.minecraft.enchantment.Enchantment.baneOfArthropods);
        this.enchantments.put("KNOCKBACK", (Enchantment) net.minecraft.enchantment.Enchantment.knockback);
        this.enchantments.put("FIRE_ASPECT", (Enchantment) net.minecraft.enchantment.Enchantment.fireAspect);
        this.enchantments.put("LOOTING", (Enchantment) net.minecraft.enchantment.Enchantment.looting);
        this.enchantments.put("EFFICIENCY", (Enchantment) net.minecraft.enchantment.Enchantment.efficiency);
        this.enchantments.put("SILK_TOUCH", (Enchantment) net.minecraft.enchantment.Enchantment.silkTouch);
        this.enchantments.put("UNBREAKING", (Enchantment) net.minecraft.enchantment.Enchantment.unbreaking);
        this.enchantments.put("FORTUNE", (Enchantment) net.minecraft.enchantment.Enchantment.fortune);
        this.enchantments.put("POWER", (Enchantment) net.minecraft.enchantment.Enchantment.power);
        this.enchantments.put("PUNCH", (Enchantment) net.minecraft.enchantment.Enchantment.punch);
        this.enchantments.put("FLAME", (Enchantment) net.minecraft.enchantment.Enchantment.flame);
        this.enchantments.put("INFINITY", (Enchantment) net.minecraft.enchantment.Enchantment.infinity);
        this.enchantments.put("LUCK_OF_THE_SEA", (Enchantment) net.minecraft.enchantment.Enchantment.luckOfTheSea);
        this.enchantments.put("LURE", (Enchantment) net.minecraft.enchantment.Enchantment.lure);
        RegistryHelper.mapFields(Enchantments.class, this.enchantments);
    }

    private void registerEntityInteractionTypes() {
        this.entityInteractionTypes.put("ATTACK", new GraniteEntityInteractionType("Attack"));
        this.entityInteractionTypes.put("PICK_BLOCK", new GraniteEntityInteractionType("Pick Block"));
        this.entityInteractionTypes.put("USE", new GraniteEntityInteractionType("Use"));
        RegistryHelper.mapFields(EntityInteractionTypes.class, this.entityInteractionTypes);
    }

    private void registerEntityTypes() {
        this.entityTypes.put("DROPPED_ITEM", new GraniteEntityType("Item"));
        this.entityTypes.put("EXPERIENCE_ORB", new GraniteEntityType("XPOrb"));
        this.entityTypes.put("LEASH_HITCH", new GraniteEntityType("LeashKnot"));
        this.entityTypes.put("PAINTING", new GraniteEntityType("Painting"));
        this.entityTypes.put("ARROW", new GraniteEntityType("Arrow"));
        this.entityTypes.put("SNOWBALL", new GraniteEntityType("Snowball"));
        this.entityTypes.put("FIREBALL", new GraniteEntityType("Fireball"));
        this.entityTypes.put("SMALL_FIREBALL", new GraniteEntityType("SmallFireball"));
        this.entityTypes.put("ENDER_PEARL", new GraniteEntityType("ThrownEnderpearl"));
        this.entityTypes.put("EYE_OF_ENDER", new GraniteEntityType("EyeOfEnderSignal"));
        this.entityTypes.put("SPLASH_POTION", new GraniteEntityType("ThrownPotion"));
        this.entityTypes.put("THROWN_EXP_BOTTLE", new GraniteEntityType("ThrownExpBottle"));
        this.entityTypes.put("ITEM_FRAME", new GraniteEntityType("ItemFrame"));
        this.entityTypes.put("WITHER_SKULL", new GraniteEntityType("WitherSkull"));
        this.entityTypes.put("PRIMED_TNT", new GraniteEntityType("PrimedTnt"));
        this.entityTypes.put("FALLING_BLOCK", new GraniteEntityType("FallingSand"));
        this.entityTypes.put("FIREWORK", new GraniteEntityType("FireworksRocketEntity"));
        this.entityTypes.put("ARMOR_STAND", new GraniteEntityType("ArmorStand"));
        this.entityTypes.put("BOAT", new GraniteEntityType("Boat"));
        this.entityTypes.put("RIDEABLE_MINECART", new GraniteEntityType("MinecartRideable"));
        this.entityTypes.put("CHESTED_MINECART", new GraniteEntityType("MinecartChest"));
        this.entityTypes.put("FURNACE_MINECART", new GraniteEntityType("MinecartFurnace"));
        this.entityTypes.put("TNT_MINECART", new GraniteEntityType("MinecartTNT"));
        this.entityTypes.put("HOPPER_MINECART", new GraniteEntityType("MinecartHopper"));
        this.entityTypes.put("MOB_SPAWNER_MINECART", new GraniteEntityType("MinecartSpawner"));
        this.entityTypes.put("COMMANDBLOCK_MINECART", new GraniteEntityType("MinecartCommandBlock"));
        this.entityTypes.put("CREEPER", new GraniteEntityType("Creeper"));
        this.entityTypes.put("SKELETON", new GraniteEntityType("Skeleton"));
        this.entityTypes.put("SPIDER", new GraniteEntityType("Spider"));
        this.entityTypes.put("GIANT", new GraniteEntityType("Giant"));
        this.entityTypes.put("ZOMBIE", new GraniteEntityType("Zombie"));
        this.entityTypes.put("SLIME", new GraniteEntityType("Slime"));
        this.entityTypes.put("GHAST", new GraniteEntityType("Ghast"));
        this.entityTypes.put("PIG_ZOMBIE", new GraniteEntityType("PigZombie"));
        this.entityTypes.put("ENDERMAN", new GraniteEntityType("Enderman"));
        this.entityTypes.put("CAVE_SPIDER", new GraniteEntityType("CaveSpider"));
        this.entityTypes.put("SILVERFISH", new GraniteEntityType("Silverfish"));
        this.entityTypes.put("BLAZE", new GraniteEntityType("Blaze"));
        this.entityTypes.put("MAGMA_CUBE", new GraniteEntityType("LavaSlime"));
        this.entityTypes.put("ENDER_DRAGON", new GraniteEntityType("EnderDragon"));
        this.entityTypes.put("WITHER", new GraniteEntityType("WitherBoss"));
        this.entityTypes.put("BAT", new GraniteEntityType("Bat"));
        this.entityTypes.put("WITCH", new GraniteEntityType("Witch"));
        this.entityTypes.put("ENDERMITE", new GraniteEntityType("Endermite"));
        this.entityTypes.put("GUARDIAN", new GraniteEntityType("Guardian"));
        this.entityTypes.put("PIG", new GraniteEntityType("Pig"));
        this.entityTypes.put("SHEEP", new GraniteEntityType("Sheep"));
        this.entityTypes.put("COW", new GraniteEntityType("Cow"));
        this.entityTypes.put("CHICKEN", new GraniteEntityType("Chicken"));
        this.entityTypes.put("SQUID", new GraniteEntityType("Squid"));
        this.entityTypes.put("WOLF", new GraniteEntityType("Wolf"));
        this.entityTypes.put("MUSHROOM_COW", new GraniteEntityType("MushroomCow"));
        this.entityTypes.put("SNOWMAN", new GraniteEntityType("SnowMan"));
        this.entityTypes.put("OCELOT", new GraniteEntityType("Ozelot"));
        this.entityTypes.put("IRON_GOLEM", new GraniteEntityType("VillagerGolem"));
        this.entityTypes.put("HORSE", new GraniteEntityType("EntityHorse"));
        this.entityTypes.put("RABBIT", new GraniteEntityType("Rabbit"));
        this.entityTypes.put("VILLAGER", new GraniteEntityType("Villager"));
        this.entityTypes.put("ENDER_CRYSTAL", new GraniteEntityType("EnderCrystal"));
        this.entityTypes.put("EGG", new GraniteEntityType("Egg", EntityEgg.class));
        this.entityTypes.put("FISHING_HOOK", new GraniteEntityType("FishingHook", EntityFishHook.class));
        this.entityTypes.put("LIGHTNING", new GraniteEntityType("Lightning", EntityLightningBolt.class));
        this.entityTypes.put("WEATHER", new GraniteEntityType("Weather", EntityWeatherEffect.class));
        this.entityTypes.put("PLAYER", new GraniteEntityType("Player", EntityPlayerMP.class));
        this.entityTypes.put("COMPLEX_PART", new GraniteEntityType("ComplexPart", EntityDragonPart.class));
        RegistryHelper.mapFields(EntityTypes.class, this.entityTypes);
    }

    private void registerFactories() {
        //RegistryHelper.setFactory(Selectors.class, new SpongeSelectorFactory());
        //RegistryHelper.setFactory(SelectorTypes.class, new SpongeSelectorTypeFactory());
        RegistryHelper.setFactory(Texts.class, new GraniteTextFactory());
        //RegistryHelper.setFactory(TextActions.class, new SpongeTextActionFactory());
        //RegistryHelper.setFactory(Titles.class, new SpongeTitleFactory());
    }

    private void registerFishes() {
        RegistryHelper.mapFields(Fishes.class, new Function<String, Fish>() {
            @Override
            public Fish apply(String input) {
                Fish fish = Fish.class.cast(ItemFishFood.FishType.valueOf(input));
                if (fish != null) {
                    GraniteGameRegistry.this.fishes.put(fish.getId(), fish);
                    return fish;
                } else {
                    return null;
                }
            }
        });

        RegistryHelper.mapFields(CookedFishes.class, new Function<String, CookedFish>() {
            @Override
            public CookedFish apply(String input) {
                CookedFish fish = CookedFish.class.cast(ItemFishFood.FishType.valueOf(input));
                if (fish != null) {
                    GraniteGameRegistry.this.cookedFishes.put(fish.getId(), fish);
                    return fish;
                } else {
                    return null;
                }
            }
        });
    }

    private void registerGameModes() {
        this.gameModes.put("SURVIVAL", new GraniteGameMode("Survival"));
        this.gameModes.put("CREATIVE", new GraniteGameMode("Creative"));
        this.gameModes.put("ADVENTURE", new GraniteGameMode("Adventure"));
        this.gameModes.put("SPECTATOR", new GraniteGameMode("Spectator"));
        RegistryHelper.mapFields(GameModes.class, this.gameModes);
    }

    private void registerGoldenApples() {
        this.goldenApples.put("GOLDEN_APPLE", new GraniteGoldenApple("Golden Apple"));
        this.goldenApples.put("ENCHANTED_GOLDEN_APPLE", new GraniteGoldenApple("Enchanted Golden Apple"));
        RegistryHelper.mapFields(GoldenApples.class, this.goldenApples);
    }

    private void registerHorseColors() {
        this.horseColors.put("CREAMY", new GraniteHorseColor("CREAMY"));
        this.horseColors.put("CHESTNUT", new GraniteHorseColor("CHESTNUT"));
        this.horseColors.put("BROWN", new GraniteHorseColor("BROWN"));
        this.horseColors.put("BLACK", new GraniteHorseColor("BLACK"));
        this.horseColors.put("GRAY", new GraniteHorseColor("GRAY"));
        this.horseColors.put("DARK_BROWN", new GraniteHorseColor("DARK_BROWN"));
        RegistryHelper.mapFields(HorseColors.class, this.horseColors);
    }

    private void registerHorseStyles() {
        this.horseStyles.put("NONE", new GraniteHorseStyle("NONE"));
        this.horseStyles.put("WHITE", new GraniteHorseStyle("WHITE"));
        this.horseStyles.put("WHITEFIELD", new GraniteHorseStyle("WHITEFIELD"));
        this.horseStyles.put("WHITE_DOTS", new GraniteHorseStyle("WHITE_DOTS"));
        this.horseStyles.put("BLACK_DOTS", new GraniteHorseStyle("BLACK_DOTS"));
        RegistryHelper.mapFields(HorseStyles.class, this.horseStyles);
    }

    private void registerHorseVariants() {
        this.horseVariants.put("HORSE", new GraniteHorseVariant("HORSE"));
        this.horseVariants.put("DONKEY", new GraniteHorseVariant("DONKEY"));
        this.horseVariants.put("MULE", new GraniteHorseVariant("MULE"));
        this.horseVariants.put("UNDEAD_HORSE", new GraniteHorseVariant("UNDEAD_HORSE"));
        this.horseVariants.put("SKELETON_HORSE", new GraniteHorseVariant("SKELETON_HORSE"));
        RegistryHelper.mapFields(HorseVariants.class, this.horseVariants);
    }

    private void registerItems() {
        while (Item.itemRegistry.iterator().hasNext()) {
            Item item = (Item) Item.itemRegistry.iterator().next();
            this.itemTypes.put(item.getItemStackDisplayName(new ItemStack(item)), (ItemType) item);
        }
        RegistryHelper.mapFields(ItemTypes.class, this.itemTypes);
    }

    private void registerLocales() {
        this.locales.put("AFRIKAANS", new Locale("af", "ZA"));
        this.locales.put("ARABIC", new Locale("ar", "SA"));
        this.locales.put("ASTURIAN", new Locale("ast", "ES"));
        this.locales.put("AZERBAIJANI", new Locale("az", "AZ"));
        this.locales.put("BULGARIAN", new Locale("bg", "BG"));
        this.locales.put("CATALAN", new Locale("ca", "ES"));
        this.locales.put("CZECH", new Locale("cs", "CZ"));
        this.locales.put("WELSH", new Locale("cy", "GB"));
        this.locales.put("DANISH", new Locale("da", "DK"));
        this.locales.put("GERMAN", new Locale("de", "DE"));
        this.locales.put("GREEK", new Locale("el", "GR"));
        this.locales.put("AUSTRALIAN_ENGLISH", new Locale("en", "AU"));
        this.locales.put("CANADIAN_ENGLISH", new Locale("en", "CA"));
        this.locales.put("BRITISH_ENGLISH", new Locale("en", "GB"));
        this.locales.put("PIRATE_ENGLISH", new Locale("en", "PT"));
        this.locales.put("ENGLISH", new Locale("en", "US"));
        this.locales.put("ESPERANTO", new Locale("eo", "UY"));
        this.locales.put("ARGENTINIAN_SPANISH", new Locale("es", "AR"));
        this.locales.put("SPANISH", new Locale("es", "ES"));
        this.locales.put("MEXICAN_SPANISH", new Locale("es", "MX"));
        this.locales.put("URUGUAYAN_SPANISH", new Locale("es", "UY"));
        this.locales.put("VENEZUELAN_SPANISH", new Locale("es", "VE"));
        this.locales.put("ESTONIAN", new Locale("et", "EE"));
        this.locales.put("BASQUE", new Locale("eu", "ES"));
        this.locales.put("PERSIAN", new Locale("fa", "IR"));
        this.locales.put("FINNISH", new Locale("fi", "FI"));
        this.locales.put("FILIPINO", new Locale("fil", "PH"));
        this.locales.put("CANADIAN_FRENCH", new Locale("fr", "CA"));
        this.locales.put("FRENCH", new Locale("fr", "FR"));
        this.locales.put("IRISH", new Locale("ga", "IE"));
        this.locales.put("GALICIAN", new Locale("gl", "ES"));
        this.locales.put("MANX", new Locale("gv", "IM"));
        this.locales.put("HEBREW", new Locale("he", "IL"));
        this.locales.put("HINDI", new Locale("hi", "IN"));
        this.locales.put("CROATIAN", new Locale("hr", "HR"));
        this.locales.put("HUNGARIAN", new Locale("hu", "HU"));
        this.locales.put("ARMENIAN", new Locale("hy", "AM"));
        this.locales.put("INDONESIAN", new Locale("id", "ID"));
        this.locales.put("ICELANDIC", new Locale("is", "IS"));
        this.locales.put("ITALIAN", new Locale("it", "IT"));
        this.locales.put("JAPANESE", new Locale("ja", "JP"));
        this.locales.put("GEORGIAN", new Locale("ka", "GE"));
        this.locales.put("KOREAN", new Locale("ko", "KR"));
        this.locales.put("CORNISH", new Locale("kw", "GB"));
        this.locales.put("LATIN", new Locale("la", "LA"));
        this.locales.put("LUXEMBOURGISH", new Locale("lb", "LU"));
        this.locales.put("LITHUANIAN", new Locale("lt", "LT"));
        this.locales.put("LATVIAN", new Locale("lv", "LV"));
        this.locales.put("MAORI", new Locale("mi", "NZ"));
        this.locales.put("MALAY", new Locale("ms", "MY"));
        this.locales.put("MALTESE", new Locale("mt", "MT"));
        this.locales.put("LOW_GERMAN", new Locale("nds", "DE"));
        this.locales.put("DUTCH", new Locale("nl", "NL"));
        this.locales.put("NORWEGIAN_NYNORSK", new Locale("nn", "NO"));
        this.locales.put("NORWEGIAN", new Locale("no", "NO"));
        this.locales.put("OCCITAN", new Locale("oc", "FR"));
        this.locales.put("POLISH", new Locale("pl", "PL"));
        this.locales.put("BRAZILIAN_PORTUGUESE", new Locale("pt", "BR"));
        this.locales.put("PORTUGUESE", new Locale("pt", "PT"));
        this.locales.put("QUENYA", new Locale("qya", "AA"));
        this.locales.put("ROMANIAN", new Locale("ro", "RO"));
        this.locales.put("RUSSIAN", new Locale("ru", "RU"));
        this.locales.put("NORTHERN_SAMI", new Locale("se", "NO"));
        this.locales.put("SLOVAK", new Locale("sk", "SK"));
        this.locales.put("SLOVENE", new Locale("sl", "SI"));
        this.locales.put("SERBIAN", new Locale("sr", "SP"));
        this.locales.put("SWEDISH", new Locale("sv", "SE"));
        this.locales.put("THAI", new Locale("th", "TH"));
        this.locales.put("KLINGON", new Locale("tlh", "AA"));
        this.locales.put("TURKISH", new Locale("tr", "TR"));
        this.locales.put("UKRAINIAN", new Locale("uk", "UA"));
        this.locales.put("VALENCIAN", new Locale("val", "ES"));
        this.locales.put("VIETNAMESE", new Locale("vi", "VN"));
        this.locales.put("SIMPLIFIED_CHINESE", new Locale("zh", "CN"));
        this.locales.put("TRADITIONAL_CHINESE", new Locale("zh", "TW"));
        RegistryHelper.mapFields(Locales.class, this.locales);
    }

    private void registerOcelotTypes() {
        this.ocelotTypes.put("BROWN", new GraniteOcelotType("WILD_OCELOT"));
        this.ocelotTypes.put("BLACK", new GraniteOcelotType("BLACK_CAT"));
        this.ocelotTypes.put("GRAY", new GraniteOcelotType("RED_CAT"));
        this.ocelotTypes.put("DARK_BROWN", new GraniteOcelotType("SIAMESE_CAT"));
        RegistryHelper.mapFields(OcelotTypes.class, this.ocelotTypes);
    }

    private void registerParticleTypes() {
        this.particleTypes.put("EXPLOSION_NORMAL",
                new GraniteParticleType(EnumParticleTypes.EXPLOSION_NORMAL, true));
        this.particleTypes.put("EXPLOSION_LARGE",
                new GraniteParticleType.Resizable(EnumParticleTypes.EXPLOSION_LARGE, 1f));
        this.particleTypes.put("EXPLOSION_HUGE", new GraniteParticleType(EnumParticleTypes.EXPLOSION_HUGE, false));
        this.particleTypes.put("FIREWORKS_SPARK", new GraniteParticleType(EnumParticleTypes.FIREWORKS_SPARK, true));
        this.particleTypes.put("WATER_BUBBLE", new GraniteParticleType(EnumParticleTypes.WATER_BUBBLE, true));
        this.particleTypes.put("WATER_SPLASH", new GraniteParticleType(EnumParticleTypes.WATER_SPLASH, true));
        this.particleTypes.put("WATER_WAKE", new GraniteParticleType(EnumParticleTypes.WATER_WAKE, true));
        this.particleTypes.put("SUSPENDED", new GraniteParticleType(EnumParticleTypes.SUSPENDED, false));
        this.particleTypes.put("SUSPENDED_DEPTH",
                new GraniteParticleType(EnumParticleTypes.SUSPENDED_DEPTH, false));
        this.particleTypes.put("CRIT", new GraniteParticleType(EnumParticleTypes.CRIT, true));
        this.particleTypes.put("CRIT_MAGIC", new GraniteParticleType(EnumParticleTypes.CRIT_MAGIC, true));
        this.particleTypes.put("SMOKE_NORMAL", new GraniteParticleType(EnumParticleTypes.SMOKE_NORMAL, true));
        this.particleTypes.put("SMOKE_LARGE", new GraniteParticleType(EnumParticleTypes.SMOKE_LARGE, true));
        this.particleTypes.put("SPELL", new GraniteParticleType(EnumParticleTypes.SPELL, false));
        this.particleTypes.put("SPELL_INSTANT", new GraniteParticleType(EnumParticleTypes.SPELL_INSTANT, false));
        this.particleTypes.put("SPELL_MOB",
                new GraniteParticleType.Colorable(EnumParticleTypes.SPELL_MOB, Color.BLACK));
        this.particleTypes.put("SPELL_MOB_AMBIENT",
                new GraniteParticleType.Colorable(EnumParticleTypes.SPELL_MOB_AMBIENT, Color.BLACK));
        this.particleTypes.put("SPELL_WITCH", new GraniteParticleType(EnumParticleTypes.SPELL_WITCH, false));
        this.particleTypes.put("DRIP_WATER", new GraniteParticleType(EnumParticleTypes.DRIP_WATER, false));
        this.particleTypes.put("DRIP_LAVA", new GraniteParticleType(EnumParticleTypes.DRIP_LAVA, false));
        this.particleTypes.put("VILLAGER_ANGRY", new GraniteParticleType(EnumParticleTypes.VILLAGER_ANGRY, false));
        this.particleTypes.put("VILLAGER_HAPPY", new GraniteParticleType(EnumParticleTypes.VILLAGER_HAPPY, true));
        this.particleTypes.put("TOWN_AURA", new GraniteParticleType(EnumParticleTypes.TOWN_AURA, true));
        this.particleTypes.put("NOTE", new GraniteParticleType.Note(EnumParticleTypes.NOTE, 0f));
        this.particleTypes.put("PORTAL", new GraniteParticleType(EnumParticleTypes.PORTAL, true));
        this.particleTypes.put("ENCHANTMENT_TABLE",
                new GraniteParticleType(EnumParticleTypes.ENCHANTMENT_TABLE, true));
        this.particleTypes.put("FLAME", new GraniteParticleType(EnumParticleTypes.FLAME, true));
        this.particleTypes.put("LAVA", new GraniteParticleType(EnumParticleTypes.LAVA, false));
        this.particleTypes.put("FOOTSTEP", new GraniteParticleType(EnumParticleTypes.FOOTSTEP, false));
        this.particleTypes.put("CLOUD", new GraniteParticleType(EnumParticleTypes.CLOUD, true));
        this.particleTypes.put("REDSTONE",
                new GraniteParticleType.Colorable(EnumParticleTypes.REDSTONE, Color.RED));
        this.particleTypes.put("SNOWBALL", new GraniteParticleType(EnumParticleTypes.SNOWBALL, false));
        this.particleTypes.put("SNOW_SHOVEL", new GraniteParticleType(EnumParticleTypes.SNOW_SHOVEL, true));
        this.particleTypes.put("SLIME", new GraniteParticleType(EnumParticleTypes.SLIME, false));
        this.particleTypes.put("HEART", new GraniteParticleType(EnumParticleTypes.HEART, false));
        this.particleTypes.put("BARRIER", new GraniteParticleType(EnumParticleTypes.BARRIER, false));
        this.particleTypes.put("ITEM_CRACK", new GraniteParticleType.Material(EnumParticleTypes.ITEM_CRACK,
                new net.minecraft.item.ItemStack(Blocks.air), true));
        this.particleTypes.put("BLOCK_CRACK", new GraniteParticleType.Material(EnumParticleTypes.BLOCK_CRACK,
                new net.minecraft.item.ItemStack(Blocks.air), true));
        this.particleTypes.put("BLOCK_DUST", new GraniteParticleType.Material(EnumParticleTypes.BLOCK_DUST,
                new net.minecraft.item.ItemStack(Blocks.air), true));
        this.particleTypes.put("WATER_DROP", new GraniteParticleType(EnumParticleTypes.WATER_DROP, false));
        this.particleTypes.put("ITEM_TAKE", new GraniteParticleType(EnumParticleTypes.ITEM_TAKE, false));
        this.particleTypes.put("MOB_APPEARANCE", new GraniteParticleType(EnumParticleTypes.MOB_APPEARANCE, false));
        RegistryHelper.mapFields(ParticleTypes.class, this.particleTypes);
    }

    private void registerPotionTypes() {
        this.potionEffectTypes.put("SPEED", new GranitePotionEffectType(Potion.moveSpeed));
        this.potionEffectTypes.put("SLOWNESS", new GranitePotionEffectType(Potion.moveSlowdown));
        this.potionEffectTypes.put("HASTE", new GranitePotionEffectType(Potion.digSpeed));
        this.potionEffectTypes.put("MINING_FATIGUE", new GranitePotionEffectType(Potion.digSlowdown));
        this.potionEffectTypes.put("STRENGTH", new GranitePotionEffectType(Potion.damageBoost));
        this.potionEffectTypes.put("INSTANT_HEALTH", new GranitePotionEffectType(Potion.heal));
        this.potionEffectTypes.put("INSTANT_DAMAGE", new GranitePotionEffectType(Potion.harm));
        this.potionEffectTypes.put("JUMP_BOOST", new GranitePotionEffectType(Potion.jump));
        this.potionEffectTypes.put("NAUSEA", new GranitePotionEffectType(Potion.confusion));
        this.potionEffectTypes.put("REGENERATION", new GranitePotionEffectType(Potion.regeneration));
        this.potionEffectTypes.put("RESISTANCE", new GranitePotionEffectType(Potion.resistance));
        this.potionEffectTypes.put("FIRE_RESISTANCE", new GranitePotionEffectType(Potion.fireResistance));
        this.potionEffectTypes.put("WATER_BREATHING", new GranitePotionEffectType(Potion.waterBreathing));
        this.potionEffectTypes.put("INVISIBILITY", new GranitePotionEffectType(Potion.invisibility));
        this.potionEffectTypes.put("BLINDNESS", new GranitePotionEffectType(Potion.blindness));
        this.potionEffectTypes.put("NIGHT_VISION", new GranitePotionEffectType(Potion.nightVision));
        this.potionEffectTypes.put("HUNGER", new GranitePotionEffectType(Potion.hunger));
        this.potionEffectTypes.put("WEAKNESS", new GranitePotionEffectType(Potion.weakness));
        this.potionEffectTypes.put("POISON", new GranitePotionEffectType(Potion.poison));
        this.potionEffectTypes.put("WITHER", new GranitePotionEffectType(Potion.wither));
        this.potionEffectTypes.put("HEALTH_BOOST", new GranitePotionEffectType(Potion.healthBoost));
        this.potionEffectTypes.put("ABSORPTION", new GranitePotionEffectType(Potion.absorption));
        this.potionEffectTypes.put("SATURATION", new GranitePotionEffectType(Potion.saturation));
        RegistryHelper.mapFields(PotionEffectTypes.class, this.potionEffectTypes);
    }

    private void registerRabbitTypes() {
        this.rabbitTypes.put("BROWN_RABBIT", new GraniteRabbitType("BROWN"));
        this.rabbitTypes.put("WHITE_RABBIT", new GraniteRabbitType("WHITE"));
        this.rabbitTypes.put("BLACK_RABBIT", new GraniteRabbitType("BLACK"));
        this.rabbitTypes.put("BLACK_AND_WHITE_RABBIT", new GraniteRabbitType("BLACK_AND_WHITE"));
        this.rabbitTypes.put("GOLD_RABBIT", new GraniteRabbitType("GOLD"));
        this.rabbitTypes.put("SALT_AND_PEPPER_RABBIT", new GraniteRabbitType("SALT_AND_PEPPER"));
        this.rabbitTypes.put("KILLER_RABBIT", new GraniteRabbitType("KILLER"));
        RegistryHelper.mapFields(RabbitTypes.class, this.rabbitTypes);
    }

    private void registerRotations() {
        this.rotations.put("TOP", new GraniteRotation(0));
        this.rotations.put("TOP_RIGHT", new GraniteRotation(45));
        this.rotations.put("RIGHT", new GraniteRotation(90));
        this.rotations.put("BOTTOM_RIGHT", new GraniteRotation(135));
        this.rotations.put("BOTTOM", new GraniteRotation(180));
        this.rotations.put("BOTTOM_LEFT", new GraniteRotation(225));
        this.rotations.put("LEFT", new GraniteRotation(270));
        this.rotations.put("TOP_LEFT", new GraniteRotation(315));
        RegistryHelper.mapFields(Rotations.class, this.rotations);
    }

    private void registerSelectorTypes() {
        this.selectorTypes.put("ALL_PLAYERS", new GraniteSelectorType("a"));
        this.selectorTypes.put("ALL_ENTITIES", new GraniteSelectorType("e"));
        this.selectorTypes.put("NEAREST_PLAYER", new GraniteSelectorType("p"));
        this.selectorTypes.put("RANDOM_PLAYER", new GraniteSelectorType("r"));
        RegistryHelper.mapFields(SelectorTypes.class, this.selectorTypes);
    }

    /*private void registerServiceBuilders() {
    Game game = Granite.instance.getGame();
    SerializationService service = game.getServiceManager().provide(SerializationService.class).get();
    service.registerBuilder(Banner.class, new GraniteBannerBuilder(game));
    service.registerBuilder(Banner.PatternLayer.class, new GranitePatternLayerBuilder(game));
    service.registerBuilder(BrewingStand.class, new GraniteBrewingStandBuilder(game));
    service.registerBuilder(Chest.class, new GraniteChestBuilder(game));
    service.registerBuilder(CommandBlock.class, new GraniteCommandBlockBuilder(game));
    service.registerBuilder(Comparator.class, new GraniteComparatorBuilder(game));
    service.registerBuilder(DaylightDetector.class, new GraniteDaylightBuilder(game));
    service.registerBuilder(Dispenser.class, new GraniteDispenserBuilder(game));
    service.registerBuilder(Dropper.class, new GraniteDropperBuilder(game));
    service.registerBuilder(EnchantmentTable.class, new GraniteEnchantmentTableBuilder(game));
    service.registerBuilder(EnderChest.class, new GraniteEnderChestBuilder(game));
    service.registerBuilder(EndPortal.class, new GraniteEndPortalBuilder(game));
    service.registerBuilder(Furnace.class, new GraniteFurnaceBuilder(game));
    service.registerBuilder(Hopper.class, new GraniteHopperBuilder(game));
    service.registerBuilder(MobSpawner.class, new GraniteMobSpawnerBuilder(game));
    service.registerBuilder(ParticleEffect.Note.class, new GraniteNoteBuilder(game));
    service.registerBuilder(Sign.class, new GraniteSignBuilder(game));
    service.registerBuilder(Skull.class, new GraniteSkullBuilder(game));
        
    // Meta
    service.registerBuilder(DyeColor.class, new GraniteDyeBuilder());
    service.registerBuilder(HorseColor.class, new GraniteHorseColorBuilder());
    service.registerBuilder(HorseStyle.class, new GraniteHorseStyleBuilder());
    service.registerBuilder(HorseVariant.class, new GraniteHorseVariantBuilder());
    service.registerBuilder(OcelotType.class, new GraniteOcelotTypeBuilder());
    service.registerBuilder(PotionEffect.class, new GranitePotionEffectBuilder());
    service.registerBuilder(FireworkEffect.class, new GraniteFireworkDataBuilder());
        
    // User
    }*/

    private void registerSkeletonTypes() {
        this.skeletonTypes.put("NORMAL_SKELETON", new GraniteSkeletonType("NORMAL"));
        this.skeletonTypes.put("WITHER_SKELETON", new GraniteSkeletonType("WITHER"));
        RegistryHelper.mapFields(SkeletonTypes.class, this.skeletonTypes);
    }

    private void registerSoundTypes() {
        this.soundTypes.put("AMBIENCE_CAVE", new GraniteSoundType("ambient.cave.cave"));
        this.soundTypes.put("AMBIENCE_RAIN", new GraniteSoundType("ambient.weather.rain"));
        this.soundTypes.put("AMBIENCE_THUNDER", new GraniteSoundType("ambient.weather.thunder"));
        this.soundTypes.put("ANVIL_BREAK", new GraniteSoundType("random.anvil_break"));
        this.soundTypes.put("ANVIL_LAND", new GraniteSoundType("random.anvil_land"));
        this.soundTypes.put("ANVIL_USE", new GraniteSoundType("random.anvil_use"));
        this.soundTypes.put("ARROW_HIT", new GraniteSoundType("random.bowhit"));
        this.soundTypes.put("BURP", new GraniteSoundType("random.burp"));
        this.soundTypes.put("CHEST_CLOSE", new GraniteSoundType("random.chestclosed"));
        this.soundTypes.put("CHEST_OPEN", new GraniteSoundType("random.chestopen"));
        this.soundTypes.put("CLICK", new GraniteSoundType("random.click"));
        this.soundTypes.put("DOOR_CLOSE", new GraniteSoundType("random.door_close"));
        this.soundTypes.put("DOOR_OPEN", new GraniteSoundType("random.door_open"));
        this.soundTypes.put("DRINK", new GraniteSoundType("random.drink"));
        this.soundTypes.put("EAT", new GraniteSoundType("random.eat"));
        this.soundTypes.put("EXPLODE", new GraniteSoundType("random.explode"));
        this.soundTypes.put("FALL_BIG", new GraniteSoundType("game.player.hurt.fall.big"));
        this.soundTypes.put("FALL_SMALL", new GraniteSoundType("game.player.hurt.fall.small"));
        this.soundTypes.put("FIRE", new GraniteSoundType("fire.fire"));
        this.soundTypes.put("FIRE_IGNITE", new GraniteSoundType("fire.ignite"));
        this.soundTypes.put("FIZZ", new GraniteSoundType("random.fizz"));
        this.soundTypes.put("FUSE", new GraniteSoundType("game.tnt.primed"));
        this.soundTypes.put("GLASS", new GraniteSoundType("dig.glass"));
        this.soundTypes.put("HURT_FLESH", new GraniteSoundType("game.player.hurt"));
        this.soundTypes.put("ITEM_BREAK", new GraniteSoundType("random.break"));
        this.soundTypes.put("ITEM_PICKUP", new GraniteSoundType("random.pop"));
        this.soundTypes.put("LAVA", new GraniteSoundType("liquid.lava"));
        this.soundTypes.put("LAVA_POP", new GraniteSoundType("liquid.lavapop"));
        this.soundTypes.put("LEVEL_UP", new GraniteSoundType("random.levelup"));
        this.soundTypes.put("MINECART_BASE", new GraniteSoundType("minecart.base"));
        this.soundTypes.put("MINECART_INSIDE", new GraniteSoundType("minecart.inside"));
        this.soundTypes.put("NOTE_BASS", new GraniteSoundType("note.bass"));
        this.soundTypes.put("NOTE_PIANO", new GraniteSoundType("note.harp"));
        this.soundTypes.put("NOTE_BASS_DRUM", new GraniteSoundType("note.bd"));
        this.soundTypes.put("NOTE_STICKS", new GraniteSoundType("note.hat"));
        this.soundTypes.put("NOTE_BASS_GUITAR", new GraniteSoundType("note.bassattack"));
        this.soundTypes.put("NOTE_SNARE_DRUM", new GraniteSoundType("note.snare"));
        this.soundTypes.put("NOTE_PLING", new GraniteSoundType("note.pling"));
        this.soundTypes.put("ORB_PICKUP", new GraniteSoundType("random.orb"));
        this.soundTypes.put("PISTON_EXTEND", new GraniteSoundType("tile.piston.out"));
        this.soundTypes.put("PISTON_RETRACT", new GraniteSoundType("tile.piston.in"));
        this.soundTypes.put("PORTAL", new GraniteSoundType("portal.portal"));
        this.soundTypes.put("PORTAL_TRAVEL", new GraniteSoundType("portal.travel"));
        this.soundTypes.put("PORTAL_TRIGGER", new GraniteSoundType("portal.trigger"));
        this.soundTypes.put("SHOOT_ARROW", new GraniteSoundType("random.bow"));
        this.soundTypes.put("SPLASH", new GraniteSoundType("random.splash"));
        this.soundTypes.put("SPLASH2", new GraniteSoundType("game.player.swim.splash"));
        this.soundTypes.put("STEP_GRASS", new GraniteSoundType("step.grass"));
        this.soundTypes.put("STEP_GRAVEL", new GraniteSoundType("step.gravel"));
        this.soundTypes.put("STEP_LADDER", new GraniteSoundType("(step.ladder"));
        this.soundTypes.put("STEP_SAND", new GraniteSoundType("step.sand"));
        this.soundTypes.put("STEP_SNOW", new GraniteSoundType("step.snow"));
        this.soundTypes.put("STEP_STONE", new GraniteSoundType("step.stone"));
        this.soundTypes.put("STEP_WOOD", new GraniteSoundType("step.wood"));
        this.soundTypes.put("STEP_WOOL", new GraniteSoundType("step.cloth"));
        this.soundTypes.put("SWIM", new GraniteSoundType("game.player.swim"));
        this.soundTypes.put("WATER", new GraniteSoundType("liquid.water"));
        this.soundTypes.put("WOOD_CLICK", new GraniteSoundType("random.wood_click"));
        this.soundTypes.put("BAT_DEATH", new GraniteSoundType("mob.bat.death"));
        this.soundTypes.put("BAT_HURT", new GraniteSoundType("mob.bat.hurt"));
        this.soundTypes.put("BAT_IDLE", new GraniteSoundType("mob.bat.idle"));
        this.soundTypes.put("BAT_LOOP", new GraniteSoundType("mob.bat.loop"));
        this.soundTypes.put("BAT_TAKEOFF", new GraniteSoundType("mob.bat.takeoff"));
        this.soundTypes.put("BLAZE_BREATH", new GraniteSoundType("mob.blaze.breathe"));
        this.soundTypes.put("BLAZE_DEATH", new GraniteSoundType("mob.blaze.death"));
        this.soundTypes.put("BLAZE_HIT", new GraniteSoundType("mob.blaze.hit"));
        this.soundTypes.put("CAT_HISS", new GraniteSoundType("mob.cat.hiss"));
        this.soundTypes.put("CAT_HIT", new GraniteSoundType("mob.cat.hitt"));
        this.soundTypes.put("CAT_MEOW", new GraniteSoundType("mob.cat.meow"));
        this.soundTypes.put("CAT_PURR", new GraniteSoundType("mob.cat.purr"));
        this.soundTypes.put("CAT_PURREOW", new GraniteSoundType("mob.cat.purreow"));
        this.soundTypes.put("CHICKEN_IDLE", new GraniteSoundType("mob.chicken.say"));
        this.soundTypes.put("CHICKEN_HURT", new GraniteSoundType("mob.chicken.hurt"));
        this.soundTypes.put("CHICKEN_EGG_POP", new GraniteSoundType("mob.chicken.plop"));
        this.soundTypes.put("CHICKEN_WALK", new GraniteSoundType("mob.chicken.step"));
        this.soundTypes.put("COW_IDLE", new GraniteSoundType("mob.cow.say"));
        this.soundTypes.put("COW_HURT", new GraniteSoundType("mob.cow.hurt"));
        this.soundTypes.put("COW_WALK", new GraniteSoundType("mob.cow.step"));
        this.soundTypes.put("CREEPER_HISS", new GraniteSoundType("creeper.primed"));
        this.soundTypes.put("CREEPER_DEATH", new GraniteSoundType("mob.creeper.death"));
        this.soundTypes.put("ENDERDRAGON_DEATH", new GraniteSoundType("mob.enderdragon.end"));
        this.soundTypes.put("ENDERDRAGON_GROWL", new GraniteSoundType("mob.enderdragon.growl"));
        this.soundTypes.put("ENDERDRAGON_HIT", new GraniteSoundType("mob.enderdragon.hit"));
        this.soundTypes.put("ENDERDRAGON_WINGS", new GraniteSoundType("mob.enderdragon.wings"));
        this.soundTypes.put("ENDERMAN_DEATH", new GraniteSoundType("mob.endermen.death"));
        this.soundTypes.put("ENDERMAN_HIT", new GraniteSoundType("mob.endermen.hit"));
        this.soundTypes.put("ENDERMAN_IDLE", new GraniteSoundType("mob.endermen.idle"));
        this.soundTypes.put("ENDERMAN_TELEPORT", new GraniteSoundType("mob.endermen.portal"));
        this.soundTypes.put("ENDERMAN_SCREAM", new GraniteSoundType("mob.endermen.scream"));
        this.soundTypes.put("ENDERMAN_STARE", new GraniteSoundType("mob.endermen.stare"));
        this.soundTypes.put("GHAST_SCREAM", new GraniteSoundType("mob.ghast.scream"));
        this.soundTypes.put("GHAST_SCREAM2", new GraniteSoundType("mob.ghast.affectionate_scream"));
        this.soundTypes.put("GHAST_CHARGE", new GraniteSoundType("mob.ghast.charge"));
        this.soundTypes.put("GHAST_DEATH", new GraniteSoundType("mob.ghast.death"));
        this.soundTypes.put("GHAST_FIREBALL", new GraniteSoundType("mob.ghast.fireball"));
        this.soundTypes.put("GHAST_MOAN", new GraniteSoundType("mob.ghast.moan"));
        this.soundTypes.put("GUARDIAN_IDLE", new GraniteSoundType("mob.guardian.idle"));
        this.soundTypes.put("GUARDIAN_ELDER_IDLE", new GraniteSoundType("mob.guardian.elder.idle"));
        this.soundTypes.put("GUARDIAN_LAND_IDLE", new GraniteSoundType("mob.guardian.land.idle"));
        this.soundTypes.put("GUARDIAN_HIT", new GraniteSoundType("mob.guardian.hit"));
        this.soundTypes.put("GUARDIAN_ELDER_HIT", new GraniteSoundType("mob.guardian.elder.hit"));
        this.soundTypes.put("GUARDIAN_LAND_HIT", new GraniteSoundType("mob.guardian.land.hit"));
        this.soundTypes.put("GUARDIAN_DEATH", new GraniteSoundType("mob.guardian.death"));
        this.soundTypes.put("GUARDIAN_ELDER_DEATH", new GraniteSoundType("mob.guardian.elder.death"));
        this.soundTypes.put("GUARDIAN_LAND_DEATH", new GraniteSoundType("mob.guardian.land.death"));
        this.soundTypes.put("IRONGOLEM_DEATH", new GraniteSoundType("mob.irongolem.death"));
        this.soundTypes.put("IRONGOLEM_HIT", new GraniteSoundType("mob.irongolem.hit"));
        this.soundTypes.put("IRONGOLEM_THROW", new GraniteSoundType("mob.irongolem.throw"));
        this.soundTypes.put("IRONGOLEM_WALK", new GraniteSoundType("mob.irongolem.walk"));
        this.soundTypes.put("MAGMACUBE_WALK", new GraniteSoundType("mob.magmacube.big"));
        this.soundTypes.put("MAGMACUBE_WALK2", new GraniteSoundType("mob.magmacube.small"));
        this.soundTypes.put("MAGMACUBE_JUMP", new GraniteSoundType("mob.magmacube.jump"));
        this.soundTypes.put("PIG_IDLE", new GraniteSoundType("mob.pig.say"));
        this.soundTypes.put("PIG_DEATH", new GraniteSoundType("mob.pig.death"));
        this.soundTypes.put("PIG_WALK", new GraniteSoundType("mob.pig.step"));
        this.soundTypes.put("RABBIT_IDLE", new GraniteSoundType("mob.rabbit.idle"));
        this.soundTypes.put("RABBIT_HURT", new GraniteSoundType("mob.rabbit.hurt"));
        this.soundTypes.put("RABBIT_DEATH", new GraniteSoundType("mob.rabbit.death"));
        this.soundTypes.put("SHEEP_IDLE", new GraniteSoundType("mob.sheep.say"));
        this.soundTypes.put("SHEEP_SHEAR", new GraniteSoundType("mob.sheep.shear"));
        this.soundTypes.put("SHEEP_WALK", new GraniteSoundType("mob.sheep.step"));
        this.soundTypes.put("SILVERFISH_HIT", new GraniteSoundType("mob.silverfish.hit"));
        this.soundTypes.put("SILVERFISH_KILL", new GraniteSoundType("mob.silverfish.kill"));
        this.soundTypes.put("SILVERFISH_IDLE", new GraniteSoundType("mob.silverfish.say"));
        this.soundTypes.put("SILVERFISH_WALK", new GraniteSoundType("mob.silverfish.step"));
        this.soundTypes.put("SKELETON_IDLE", new GraniteSoundType("mob.skeleton.say"));
        this.soundTypes.put("SKELETON_DEATH", new GraniteSoundType("mob.skeleton.death"));
        this.soundTypes.put("SKELETON_HURT", new GraniteSoundType("mob.skeleton.hurt"));
        this.soundTypes.put("SKELETON_WALK", new GraniteSoundType("mob.skeleton.step"));
        this.soundTypes.put("SLIME_ATTACK", new GraniteSoundType("mob.slime.attack"));
        this.soundTypes.put("SLIME_WALK", new GraniteSoundType("mob.slime.small"));
        this.soundTypes.put("SLIME_WALK2", new GraniteSoundType("mob.slime.big"));
        this.soundTypes.put("SPIDER_IDLE", new GraniteSoundType("mob.spider.say"));
        this.soundTypes.put("SPIDER_DEATH", new GraniteSoundType("mob.spider.death"));
        this.soundTypes.put("SPIDER_WALK", new GraniteSoundType("mob.spider.step"));
        this.soundTypes.put("WITHER_DEATH", new GraniteSoundType("mob.wither.death"));
        this.soundTypes.put("WITHER_HURT", new GraniteSoundType("mob.wither.hurt"));
        this.soundTypes.put("WITHER_IDLE", new GraniteSoundType("mob.wither.idle"));
        this.soundTypes.put("WITHER_SHOOT", new GraniteSoundType("mob.wither.shoot"));
        this.soundTypes.put("WITHER_SPAWN", new GraniteSoundType("mob.wither.spawn"));
        this.soundTypes.put("WOLF_BARK", new GraniteSoundType("mob.wolf.bark"));
        this.soundTypes.put("WOLF_DEATH", new GraniteSoundType("mob.wolf.death"));
        this.soundTypes.put("WOLF_GROWL", new GraniteSoundType("mob.wolf.growl"));
        this.soundTypes.put("WOLF_HOWL", new GraniteSoundType("mob.wolf.howl"));
        this.soundTypes.put("WOLF_HURT", new GraniteSoundType("mob.wolf.hurt"));
        this.soundTypes.put("WOLF_PANT", new GraniteSoundType("mob.wolf.panting"));
        this.soundTypes.put("WOLF_SHAKE", new GraniteSoundType("mob.wolf.shake"));
        this.soundTypes.put("WOLF_WALK", new GraniteSoundType("mob.wolf.step"));
        this.soundTypes.put("WOLF_WHINE", new GraniteSoundType("mob.wolf.whine"));
        this.soundTypes.put("ZOMBIE_METAL", new GraniteSoundType("mob.zombie.metal"));
        this.soundTypes.put("ZOMBIE_WOOD", new GraniteSoundType("mob.zombie.wood"));
        this.soundTypes.put("ZOMBIE_WOODBREAK", new GraniteSoundType("mob.zombie.woodbreak"));
        this.soundTypes.put("ZOMBIE_IDLE", new GraniteSoundType("mob.zombie.say"));
        this.soundTypes.put("ZOMBIE_DEATH", new GraniteSoundType("mob.zombie.death"));
        this.soundTypes.put("ZOMBIE_HURT", new GraniteSoundType("mob.zombie.hurt"));
        this.soundTypes.put("ZOMBIE_INFECT", new GraniteSoundType("mob.zombie.infect"));
        this.soundTypes.put("ZOMBIE_UNFECT", new GraniteSoundType("mob.zombie.unfect"));
        this.soundTypes.put("ZOMBIE_REMEDY", new GraniteSoundType("mob.zombie.remedy"));
        this.soundTypes.put("ZOMBIE_WALK", new GraniteSoundType("mob.zombie.step"));
        this.soundTypes.put("ZOMBIE_PIG_IDLE", new GraniteSoundType("mob.zombiepig.zpig"));
        this.soundTypes.put("ZOMBIE_PIG_ANGRY", new GraniteSoundType("mob.zombiepig.zpigangry"));
        this.soundTypes.put("ZOMBIE_PIG_DEATH", new GraniteSoundType("mob.zombiepig.zpigdeath"));
        this.soundTypes.put("ZOMBIE_PIG_HURT", new GraniteSoundType("mob.zombiepig.zpighurt"));
        this.soundTypes.put("DIG_WOOL", new GraniteSoundType("dig.cloth"));
        this.soundTypes.put("DIG_GRASS", new GraniteSoundType("dig.grass"));
        this.soundTypes.put("DIG_GRAVEL", new GraniteSoundType("dig.gravel"));
        this.soundTypes.put("DIG_SAND", new GraniteSoundType("dig.sand"));
        this.soundTypes.put("DIG_SNOW", new GraniteSoundType("dig.snow"));
        this.soundTypes.put("DIG_STONE", new GraniteSoundType("dig.stone"));
        this.soundTypes.put("DIG_WOOD", new GraniteSoundType("dig.wood"));
        this.soundTypes.put("FIREWORK_BLAST", new GraniteSoundType("fireworks.blast"));
        this.soundTypes.put("FIREWORK_BLAST2", new GraniteSoundType("fireworks.blast_far"));
        this.soundTypes.put("FIREWORK_LARGE_BLAST", new GraniteSoundType("fireworks.largeBlast"));
        this.soundTypes.put("FIREWORK_LARGE_BLAST2", new GraniteSoundType("fireworks.largeBlast_far"));
        this.soundTypes.put("FIREWORK_TWINKLE", new GraniteSoundType("fireworks.twinkle"));
        this.soundTypes.put("FIREWORK_TWINKLE2", new GraniteSoundType("fireworks.twinkle_far"));
        this.soundTypes.put("FIREWORK_LAUNCH", new GraniteSoundType("fireworks.launch"));
        this.soundTypes.put("SUCCESSFUL_HIT", new GraniteSoundType("random.successful_hit"));
        this.soundTypes.put("HORSE_ANGRY", new GraniteSoundType("mob.horse.angry"));
        this.soundTypes.put("HORSE_ARMOR", new GraniteSoundType("mob.horse.armor"));
        this.soundTypes.put("HORSE_BREATHE", new GraniteSoundType("mob.horse.breathe"));
        this.soundTypes.put("HORSE_DEATH", new GraniteSoundType("mob.horse.death"));
        this.soundTypes.put("HORSE_GALLOP", new GraniteSoundType("mob.horse.gallop"));
        this.soundTypes.put("HORSE_HIT", new GraniteSoundType("mob.horse.hit"));
        this.soundTypes.put("HORSE_IDLE", new GraniteSoundType("mob.horse.idle"));
        this.soundTypes.put("HORSE_JUMP", new GraniteSoundType("mob.horse.jump"));
        this.soundTypes.put("HORSE_LAND", new GraniteSoundType("mob.horse.land"));
        this.soundTypes.put("HORSE_SADDLE", new GraniteSoundType("mob.horse.leather"));
        this.soundTypes.put("HORSE_SOFT", new GraniteSoundType("mob.horse.soft"));
        this.soundTypes.put("HORSE_WOOD", new GraniteSoundType("mob.horse.wood"));
        this.soundTypes.put("DONKEY_ANGRY", new GraniteSoundType("mob.horse.donkey.angry"));
        this.soundTypes.put("DONKEY_DEATH", new GraniteSoundType("mob.horse.donkey.death"));
        this.soundTypes.put("DONKEY_HIT", new GraniteSoundType("mob.horse.donkey.hit"));
        this.soundTypes.put("DONKEY_IDLE", new GraniteSoundType("mob.horse.donkey.idle"));
        this.soundTypes.put("HORSE_SKELETON_DEATH", new GraniteSoundType("mob.horse.skeleton.death"));
        this.soundTypes.put("HORSE_SKELETON_HIT", new GraniteSoundType("mob.horse.skeleton.hit"));
        this.soundTypes.put("HORSE_SKELETON_IDLE", new GraniteSoundType("mob.horse.skeleton.idle"));
        this.soundTypes.put("HORSE_ZOMBIE_DEATH", new GraniteSoundType("mob.horse.zombie.death"));
        this.soundTypes.put("HORSE_ZOMBIE_HIT", new GraniteSoundType("mob.horse.zombie.hit"));
        this.soundTypes.put("HORSE_ZOMBIE_IDLE", new GraniteSoundType("mob.horse.zombie.idle"));
        this.soundTypes.put("VILLAGER_DEATH", new GraniteSoundType("mob.villager.death"));
        this.soundTypes.put("VILLAGER_HAGGLE", new GraniteSoundType("mob.villager.haggle"));
        this.soundTypes.put("VILLAGER_HIT", new GraniteSoundType("mob.villager.hit"));
        this.soundTypes.put("VILLAGER_IDLE", new GraniteSoundType("mob.villager.idle"));
        this.soundTypes.put("VILLAGER_NO", new GraniteSoundType("mob.villager.no"));
        this.soundTypes.put("VILLAGER_YES", new GraniteSoundType("mob.villager.yes"));
        RegistryHelper.mapFields(SoundTypes.class, this.soundTypes);
    }

    private void registerTextColors() {
        this.textColors.put("BLACK", new GraniteTextColor(EnumChatFormatting.BLACK, Color.BLACK));
        this.textColors.put("DARK_BLUE", new GraniteTextColor(EnumChatFormatting.DARK_BLUE, new Color(0x0000AA)));
        this.textColors.put("DARK_GREEN", new GraniteTextColor(EnumChatFormatting.DARK_GREEN, new Color(0x00AA00)));
        this.textColors.put("DARK_AQUA", new GraniteTextColor(EnumChatFormatting.DARK_AQUA, new Color(0x00AAAA)));
        this.textColors.put("DARK_RED", new GraniteTextColor(EnumChatFormatting.DARK_RED, new Color(0xAA0000)));
        this.textColors.put("DARK_PURPLE",
                new GraniteTextColor(EnumChatFormatting.DARK_PURPLE, new Color(0xAA00AA)));
        this.textColors.put("GOLD", new GraniteTextColor(EnumChatFormatting.GOLD, new Color(0xFFAA00)));
        this.textColors.put("GRAY", new GraniteTextColor(EnumChatFormatting.GRAY, new Color(0xAAAAAA)));
        this.textColors.put("DARK_GRAY", new GraniteTextColor(EnumChatFormatting.DARK_GRAY, new Color(0x555555)));
        this.textColors.put("BLUE", new GraniteTextColor(EnumChatFormatting.BLUE, new Color(0x5555FF)));
        this.textColors.put("GREEN", new GraniteTextColor(EnumChatFormatting.GREEN, new Color(0x55FF55)));
        this.textColors.put("AQUA", new GraniteTextColor(EnumChatFormatting.AQUA, new Color(0x00FFFF)));
        this.textColors.put("RED", new GraniteTextColor(EnumChatFormatting.RED, new Color(0xFF5555)));
        this.textColors.put("LIGHT_PURPLE",
                new GraniteTextColor(EnumChatFormatting.LIGHT_PURPLE, new Color(0xFF55FF)));
        this.textColors.put("YELLOW", new GraniteTextColor(EnumChatFormatting.YELLOW, new Color(0xFFFF55)));
        this.textColors.put("WHITE", new GraniteTextColor(EnumChatFormatting.WHITE, Color.WHITE));
        this.textColors.put("RESET", new GraniteTextColor(EnumChatFormatting.RESET, Color.WHITE));
        RegistryHelper.mapFields(TextColors.class, this.textColors);
    }

    private void registerTextStyles() {
        this.textStyles.put("BOLD", GraniteTextStyle.of(EnumChatFormatting.BOLD));
        this.textStyles.put("ITALIC", GraniteTextStyle.of(EnumChatFormatting.ITALIC));
        this.textStyles.put("UNDERLINE", GraniteTextStyle.of(EnumChatFormatting.UNDERLINE));
        this.textStyles.put("STRIKETHROUGH", GraniteTextStyle.of(EnumChatFormatting.STRIKETHROUGH));
        this.textStyles.put("OBFUSCATED", GraniteTextStyle.of(EnumChatFormatting.OBFUSCATED));
        this.textStyles.put("RESET", GraniteTextStyle.of(EnumChatFormatting.RESET));
        RegistryHelper.mapFields(TextStyles.class, this.textStyles);
    }

    private void registerTranslations() {
    }
}