package net.minecraft.util;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Pattern;
public enum EnumChatFormatting
{
BLACK("BLACK", '0', 0),
DARK_BLUE("DARK_BLUE", '1', 1),
DARK_GREEN("DARK_GREEN", '2', 2),
DARK_AQUA("DARK_AQUA", '3', 3),
DARK_RED("DARK_RED", '4', 4),
DARK_PURPLE("DARK_PURPLE", '5', 5),
GOLD("GOLD", '6', 6),
GRAY("GRAY", '7', 7),
DARK_GRAY("DARK_GRAY", '8', 8),
BLUE("BLUE", '9', 9),
GREEN("GREEN", 'a', 10),
AQUA("AQUA", 'b', 11),
RED("RED", 'c', 12),
LIGHT_PURPLE("LIGHT_PURPLE", 'd', 13),
YELLOW("YELLOW", 'e', 14),
WHITE("WHITE", 'f', 15),
OBFUSCATED("OBFUSCATED", 'k', true),
BOLD("BOLD", 'l', true),
STRIKETHROUGH("STRIKETHROUGH", 'm', true),
UNDERLINE("UNDERLINE", 'n', true),
ITALIC("ITALIC", 'o', true),
RESET("RESET", 'r', -1);
/**
* Maps a name (e.g., 'underline') to its corresponding enum value (e.g., UNDERLINE).
*/
private static final Map nameMapping = Maps.newHashMap();
/**
* Matches formatting codes that indicate that the client should treat the following text as bold, recolored,
* obfuscated, etc.
*/
private static final Pattern formattingCodePattern = Pattern.compile("(?i)" + String.valueOf('\u00a7') + "[0-9A-FK-OR]");
private final String field_175748_y;
/** The formatting code that produces this format. */
private final char formattingCode;
private final boolean fancyStyling;
/**
* The control string (section sign + formatting code) that can be inserted into client-side text to display
* subsequent text in this format.
*/
private final String controlString;
private final int field_175747_C;
private static final String __OBFID = "CL_00000342";
private static String func_175745_c(String p_175745_0_)
{
return p_175745_0_.toLowerCase().replaceAll("[^a-z]", "");
}
private EnumChatFormatting(String p_i46291_3_, char p_i46291_4_, int p_i46291_5_)
{
this(p_i46291_3_, p_i46291_4_, false, p_i46291_5_);
}
private EnumChatFormatting(String p_i46292_3_, char p_i46292_4_, boolean p_i46292_5_)
{
this(p_i46292_3_, p_i46292_4_, p_i46292_5_, -1);
}
private EnumChatFormatting(String p_i46293_3_, char p_i46293_4_, boolean p_i46293_5_, int p_i46293_6_)
{
this.field_175748_y = p_i46293_3_;
this.formattingCode = p_i46293_4_;
this.fancyStyling = p_i46293_5_;
this.field_175747_C = p_i46293_6_;
this.controlString = "\u00a7" + p_i46293_4_;
}
public int func_175746_b()
{
return this.field_175747_C;
}
/**
* False if this is just changing the color or resetting; true otherwise.
*/
public boolean isFancyStyling()
{
return this.fancyStyling;
}
/**
* Checks if this is a color code.
*/
public boolean isColor()
{
return !this.fancyStyling && this != RESET;
}
/**
* Gets the friendly name of this value.
*/
public String getFriendlyName()
{
return this.name().toLowerCase();
}
public String toString()
{
return this.controlString;
}
/**
* Gets a value by its friendly name; null if the given name does not map to a defined value.
*/
public static EnumChatFormatting getValueByName(String p_96300_0_)
{
return p_96300_0_ == null ? null : (EnumChatFormatting)nameMapping.get(func_175745_c(p_96300_0_));
}
public static EnumChatFormatting func_175744_a(int p_175744_0_)
{
if (p_175744_0_ < 0)
{
return RESET;
}
else
{
EnumChatFormatting[] var1 = values();
int var2 = var1.length;
for (int var3 = 0; var3 < var2; ++var3)
{
EnumChatFormatting var4 = var1[var3];
if (var4.func_175746_b() == p_175744_0_)
{
return var4;
}
}
return null;
}
}
/**
* Gets all the valid values. Args: @param par0: Whether or not to include color values. @param par1: Whether or not
* to include fancy-styling values (anything that isn't a color value or the "reset" value).
*/
public static Collection getValidValues(boolean p_96296_0_, boolean p_96296_1_)
{
ArrayList var2 = Lists.newArrayList();
EnumChatFormatting[] var3 = values();
int var4 = var3.length;
for (int var5 = 0; var5 < var4; ++var5)
{
EnumChatFormatting var6 = var3[var5];
if ((!var6.isColor() || p_96296_0_) && (!var6.isFancyStyling() || p_96296_1_))
{
var2.add(var6.getFriendlyName());
}
}
return var2;
}
static {
EnumChatFormatting[] var0 = values();
int var1 = var0.length;
for (int var2 = 0; var2 < var1; ++var2)
{
EnumChatFormatting var3 = var0[var2];
nameMapping.put(func_175745_c(var3.field_175748_y), var3);
}
}
}