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    }