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 }