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 special characters that may not be used in a filename. GuiCreateWorld will replace these with an
017         * underscore when creating world save directory.
018         */
019        public static final char[] invalidFilenameCharacters = new char[] {'/', '\n', '\r', '\t', '\u0000', '\f', '`', '?', '*', '\\', '<', '>', '|', '\"', ':'};
020    
021        /**
022         * Load the font.txt resource file, that is on UTF-8 format. This file contains the characters that minecraft can
023         * render Strings on screen.
024         */
025        private static String getAllowedCharacters()
026        {
027            String var0 = "";
028    
029            try
030            {
031                BufferedReader var1 = new BufferedReader(new InputStreamReader(ChatAllowedCharacters.class.getResourceAsStream("/font.txt"), "UTF-8"));
032                String var2 = "";
033    
034                while ((var2 = var1.readLine()) != null)
035                {
036                    if (!var2.startsWith("#"))
037                    {
038                        var0 = var0 + var2;
039                    }
040                }
041    
042                var1.close();
043            }
044            catch (Exception var3)
045            {
046                ;
047            }
048    
049            return var0;
050        }
051    
052        public static final boolean isAllowedCharacter(char par0)
053        {
054            return par0 != 167 && (allowedCharacters.indexOf(par0) >= 0 || par0 > 32);
055        }
056    
057        @SideOnly(Side.CLIENT)
058    
059        /**
060         * Filter string by only keeping those characters for which isAllowedCharacter() returns true.
061         */
062        public static String filerAllowedCharacters(String par0Str)
063        {
064            StringBuilder var1 = new StringBuilder();
065            char[] var2 = par0Str.toCharArray();
066            int var3 = var2.length;
067    
068            for (int var4 = 0; var4 < var3; ++var4)
069            {
070                char var5 = var2[var4];
071    
072                if (isAllowedCharacter(var5))
073                {
074                    var1.append(var5);
075                }
076            }
077    
078            return var1.toString();
079        }
080    }