diff --git a/Common/customskinloader/CustomSkinLoader.java b/Common/customskinloader/CustomSkinLoader.java index 80c3c19..3a77036 100644 --- a/Common/customskinloader/CustomSkinLoader.java +++ b/Common/customskinloader/CustomSkinLoader.java @@ -28,214 +28,161 @@ import customskinloader.utils.MinecraftUtil; /** * Custom skin loader mod for Minecraft. * @author (C) Jeremy Lam [JLChnToZ] 2013 & Alexander Xia [xfl03] 2014-2016 - * @version 13.9 (2016.6.6) + * @version 13.9 (2016.6.9) */ -public class CustomSkinLoader -{ - public static final String CustomSkinLoader_VERSION = "13.9"; - public static final File DATA_DIR = new File(MinecraftUtil.getMinecraftDataDir0(), "CustomSkinLoader"), - LOG_FILE = new File(DATA_DIR, "CustomSkinLoader.log"), - CONFIG_FILE = new File(DATA_DIR, "CustomSkinLoader.json"); - public static final SkinSiteProfile[] DEFAULT_LOAD_LIST = - { - new SkinSiteProfile("Mojang", "MojangAPI"), - new SkinSiteProfile("BlessingSkin", "CustomSkinAPI", "https://skin.prinzeugen.net/csl/"), - //Minecrack could not load skin correctly - //new SkinSiteProfile("Minecrack","Legacy","http://minecrack.fr.nf/mc/skinsminecrackd/{USERNAME}.png","http://minecrack.fr.nf/mc/cloaksminecrackd/{USERNAME}.png"), - new SkinSiteProfile("SkinMe", "UniSkinAPI", "http://www.skinme.cc/uniskin/"), - new SkinSiteProfile("McSkin", "CustomSkinAPI", "http://www.mcskin.cc/") - }; - public static final HashMap LOADERS = initLoaders(); - - public static final Logger logger = initLogger(); - public static final Config config = loadConfig0(); - - private static final Map profileCache = new HashMap(); - - //Entrance - public static Map loadProfile(String username, Map defaultProfile) - { - String tempName = Thread.currentThread().getName(); - Thread.currentThread().setName(username);//Change Thread Name - UserProfile profile = loadProfile(username, ModelManager0.toUserProfile(defaultProfile)); - Thread.currentThread().setName(tempName); - return ModelManager0.fromUserProfile(profile); - } - public static UserProfile loadProfile(String username, UserProfile defaultProfile) - { - logger.info("Loading " + username + "'s profile."); - - if (config.enableCache && profileCache.get(username) != null) - { - logger.info("Cached profile will be used."); - UserProfile profile = profileCache.get(username); - logger.info(profile.toString()); - return profile; - } - - profileCache.put(username, null); - - for (int i = 0; i < config.loadlist.length; i++) - { - SkinSiteProfile ssp = config.loadlist[i]; - logger.info((i + 1) + "/" + config.loadlist.length + " Try to load profile from '" + ssp.name + "'."); - - if (ssp.type.equalsIgnoreCase("MojangAPI") && defaultProfile != null && !defaultProfile.isEmpty()) - { - logger.info("Default profile will be used."); - logger.info(defaultProfile.toString()); - profileCache.put(username, defaultProfile); - return defaultProfile;//Create a new map instance - } - - IProfileLoader loader = LOADERS.get(ssp.type.toLowerCase()); - - if (loader == null) - { - logger.info("Type '" + ssp.type + "' is not defined."); - continue; - } - - UserProfile profile = null; - - try - { - profile = loader.loadProfile(ssp, username); - } - catch (Exception e) - { - logger.info("Exception occurs while loading: " + e.getMessage()); - } - - if (profile == null) - { - continue; - } - - logger.info(username + "'s profile loaded."); - logger.info(profile.toString()); - profileCache.put(username, profile); - return profile; - } - - logger.info(username + "'s profile not found."); - return defaultProfile; - } - - //For Skull - public static Map loadProfileFromCache(final String username, final Map defaultProfile) - { - if(defaultProfile!=null&&!defaultProfile.isEmpty()) +public class CustomSkinLoader { + public static final String CustomSkinLoader_VERSION="13.9"; + public static final File DATA_DIR=new File(MinecraftUtil.getMinecraftDataDir0(),"CustomSkinLoader"), + LOG_FILE=new File(DATA_DIR,"CustomSkinLoader.log"), + CONFIG_FILE=new File(DATA_DIR,"CustomSkinLoader.json"); + public static final SkinSiteProfile[] DEFAULT_LOAD_LIST={ + new SkinSiteProfile("Mojang","MojangAPI"), + new SkinSiteProfile("BlessingSkin","CustomSkinAPI","https://skin.prinzeugen.net/csl/"), + //Minecrack could not load skin correctly + //new SkinSiteProfile("Minecrack","Legacy","http://minecrack.fr.nf/mc/skinsminecrackd/{USERNAME}.png","http://minecrack.fr.nf/mc/cloaksminecrackd/{USERNAME}.png"), + new SkinSiteProfile("SkinMe","UniSkinAPI","http://www.skinme.cc/uniskin/"), + new SkinSiteProfile("McSkin","CustomSkinAPI","http://www.mcskin.cc/")}; + public static final HashMap LOADERS=initLoaders(); + + public static final Logger logger=initLogger(); + public static final Config config=loadConfig0(); + + private static final Map profileCache=new HashMap(); + + //Entrance + public static Map loadProfile(String username,Map defaultProfile){ + String tempName=Thread.currentThread().getName(); + Thread.currentThread().setName(username);//Change Thread Name + UserProfile profile=loadProfile(username,ModelManager0.toUserProfile(defaultProfile)); + Thread.currentThread().setName(tempName); + return ModelManager0.fromUserProfile(profile); + } + public static UserProfile loadProfile(String username,UserProfile defaultProfile){ + logger.info("Loading "+username+"'s profile."); + if(config.enableCache&&profileCache.get(username)!=null){ + logger.info("Cached profile will be used."); + UserProfile profile=profileCache.get(username); + logger.info(profile.toString()); + return profile; + } + profileCache.put(username, null); + for(int i=0;i loadProfileFromCache(final String username,final Map defaultProfile) { + if(defaultProfile!=null&&!defaultProfile.isEmpty()) return defaultProfile; - if (profileCache.containsKey(username)) - { - UserProfile profile = profileCache.get(username); - return ModelManager0.fromUserProfile(profile); - } + if(profileCache.containsKey(username)){ + UserProfile profile=profileCache.get(username); + return ModelManager0.fromUserProfile(profile); + } + profileCache.put(username, null); + Thread loadThread=new Thread(){ + public void run(){ + loadProfile(username,ModelManager0.toUserProfile(defaultProfile));//Load in thread + } + }; + loadThread.setName(username+"'s skull"); + loadThread.start(); + return Maps.newHashMap(); + } + public static Map loadProfileFromCache(final String username) { + return loadProfileFromCache(username,null); + } + + private static Logger initLogger() { + Logger logger=new Logger(LOG_FILE); + logger.info("CustomSkinLoader "+CustomSkinLoader_VERSION); + logger.info("DataDir: "+DATA_DIR.getAbsolutePath()); + logger.info("Minecraft: "+MinecraftUtil.getMinecraftVersion()); + return logger; + } - profileCache.put(username, null); - Thread loadThread = new Thread() - { - public void run() - { - loadProfile(username, (UserProfile)null); //Load in thread - } - }; - loadThread.setName(username + "'s skull"); - loadThread.start(); - return Maps.newHashMap(); - } - public static Map loadProfileFromCache(final String username) - { - return loadProfileFromCache(username, null); - } + private static HashMap initLoaders() { + HashMap loaders=new HashMap(); + loaders.put("mojangapi", new MojangAPILoader()); + loaders.put("customskinapi", new CustomSkinAPILoader()); + loaders.put("legacy", new LegacyLoader()); + loaders.put("uniskinapi", new UniSkinAPILoader()); + return loaders; + } - private static Logger initLogger() - { - Logger logger = new Logger(LOG_FILE); - logger.info("CustomSkinLoader " + CustomSkinLoader_VERSION); - logger.info("DataDir: " + DATA_DIR.getAbsolutePath()); - logger.info("Minecraft: " + MinecraftUtil.getMinecraftVersion()); - return logger; - } + private static Config loadConfig0() { + Config config=loadConfig(); + logger.info("Enable:"+config.enable+", EnableCache:"+config.enableCache+ + ", EnableSkull:"+config.enableSkull+", EnableTranSkin:"+config.enableTransparentSkin+ + ", LoadList:"+(config.loadlist==null?0:config.loadlist.length)); + if(config.version==null||Float.parseFloat(config.version) initLoaders() - { - HashMap loaders = new HashMap(); - loaders.put("mojangapi", new MojangAPILoader()); - loaders.put("customskinapi", new CustomSkinAPILoader()); - loaders.put("legacy", new LegacyLoader()); - loaders.put("uniskinapi", new UniSkinAPILoader()); - return loaders; - } + private static Config loadConfig() { + logger.info("Config File: "+CONFIG_FILE.getAbsolutePath()); + if(!CONFIG_FILE.exists()){ + logger.info("Config file not found, use default instead."); + return initConfig(); + } + try { + logger.info("Try to load config."); + String json=IOUtils.toString(new FileInputStream(CONFIG_FILE)); + Config config=new Gson().fromJson(json, Config.class); + logger.info("Successfully load config."); + return config; + }catch (Exception e) { + logger.info("Failed to load config, use default instead.("+e.getMessage()+")"); + return initConfig(); + } + } - private static Config loadConfig0() - { - Config config = loadConfig(); - logger.info("Enable:" + config.enable + ", EnableCache:" + config.enableCache + - ", EnableSkull:" + config.enableSkull + ", EnableTranSkin:" + config.enableTransparentSkin + - ", LoadList:" + (config.loadlist == null ? 0 : config.loadlist.length)); - - if (config.version == null || Float.parseFloat(config.version) < Float.parseFloat(CustomSkinLoader_VERSION)) - { - logger.info("Config File is out of date: " + config.version); - config.version = CustomSkinLoader_VERSION; - writeConfig(config, true); - } - - return config; - } - - private static Config loadConfig() - { - logger.info("Config File: " + CONFIG_FILE.getAbsolutePath()); - - if (!CONFIG_FILE.exists()) - { - logger.info("Config file not found, use default instead."); - return initConfig(); - } - - try - { - logger.info("Try to load config."); - String json = IOUtils.toString(new FileInputStream(CONFIG_FILE)); - Config config = new Gson().fromJson(json, Config.class); - logger.info("Successfully load config."); - return config; - } - catch (Exception e) - { - logger.info("Failed to load config, use default instead.(" + e.getMessage() + ")"); - return initConfig(); - } - } - - private static Config initConfig() - { - Config config = new Config(DEFAULT_LOAD_LIST); - writeConfig(config, false); - return config; - } - private static void writeConfig(Config config, boolean update) - { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String json = gson.toJson(config); - - if (CONFIG_FILE.exists()) - { - CONFIG_FILE.delete(); - } - - try - { - CONFIG_FILE.createNewFile(); - IOUtils.write(json, new FileOutputStream(CONFIG_FILE)); - logger.info("Successfully " + (update ? "update" : "create") + " config."); - } - catch (Exception e) - { - logger.info("Failed to " + (update ? "update" : "create") + " config.(" + e.getMessage() + ")"); - } - } + private static Config initConfig() { + Config config=new Config(DEFAULT_LOAD_LIST); + writeConfig(config,false); + return config; + } + private static void writeConfig(Config config,boolean update){ + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String json=gson.toJson(config); + if(CONFIG_FILE.exists()) + CONFIG_FILE.delete(); + try { + CONFIG_FILE.createNewFile(); + IOUtils.write(json, new FileOutputStream(CONFIG_FILE)); + logger.info("Successfully "+(update?"update":"create")+" config."); + } catch (Exception e) { + logger.info("Failed to "+(update?"update":"create")+" config.("+e.getMessage()+")"); + } + } }