001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.io.BufferedReader;
006 import java.io.InputStreamReader;
007
008 public class ChatAllowedCharacters
009 {
010 /**
011 * This String have the characters allowed in any text drawing of minecraft.
012 */
013 public static final String allowedCharacters = getAllowedCharacters();
014
015 /**
016 * Array of the special characters that are allowed in any text drawing of Minecraft.
017 */
018 public static final char[] allowedCharactersArray = new char[] {'/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':'};
019
020 /**
021 * Load the font.txt resource file, that is on UTF-8 format. This file contains the characters that minecraft can
022 * render Strings on screen.
023 */
024 private static String getAllowedCharacters()
025 {
026 String var0 = "";
027
028 try
029 {
030 BufferedReader var1 = new BufferedReader(new InputStreamReader(ChatAllowedCharacters.class.getResourceAsStream("/font.txt"), "UTF-8"));
031 String var2 = "";
032
033 while ((var2 = var1.readLine()) != null)
034 {
035 if (!var2.startsWith("#"))
036 {
037 var0 = var0 + var2;
038 }
039 }
040
041 var1.close();
042 }
043 catch (Exception var3)
044 {
045 ;
046 }
047
048 return var0;
049 }
050
051 public static final boolean isAllowedCharacter(char par0)
052 {
053 return par0 != 167 && (allowedCharacters.indexOf(par0) >= 0 || par0 > 32);
054 }
055
056 @SideOnly(Side.CLIENT)
057
058 /**
059 * Filter string by only keeping those characters for which isAllowedCharacter() returns true.
060 */
061 public static String filerAllowedCharacters(String par0Str)
062 {
063 StringBuilder var1 = new StringBuilder();
064 char[] var2 = par0Str.toCharArray();
065 int var3 = var2.length;
066
067 for (int var4 = 0; var4 < var3; ++var4)
068 {
069 char var5 = var2[var4];
070
071 if (isAllowedCharacter(var5))
072 {
073 var1.append(var5);
074 }
075 }
076
077 return var1.toString();
078 }
079 }