From 52caeb3bdc0ad16c11ef862edfd26e9640dc0b03 Mon Sep 17 00:00:00 2001 From: 33 Date: Fri, 29 Jul 2022 00:07:04 +0800 Subject: [PATCH] Tweak: compatible with authlib 3.11.50 --- .../customskinloader/CustomSkinLoader.java | 135 ++++++++++-------- 1 file changed, 74 insertions(+), 61 deletions(-) diff --git a/Common/source/customskinloader/CustomSkinLoader.java b/Common/source/customskinloader/CustomSkinLoader.java index ecb9832..c2da567 100644 --- a/Common/source/customskinloader/CustomSkinLoader.java +++ b/Common/source/customskinloader/CustomSkinLoader.java @@ -26,24 +26,26 @@ import customskinloader.utils.MinecraftUtil; /** * Custom skin loader mod for Minecraft. + * * @author (C) Jeremy Lam [JLChnToZ] 2013-2014 & Alexander Xia [xfl03] 2014-2020 * @version @MOD_FULL_VERSION@ */ public class CustomSkinLoader { - public static final String CustomSkinLoader_VERSION="@MOD_VERSION@"; - public static final String CustomSkinLoader_FULL_VERSION="@MOD_FULL_VERSION@"; - public static final int CustomSkinLoader_BUILD_NUMBER=Integer.parseInt("@MOD_BUILD_NUMBER@"); - - public static final File DATA_DIR=new File(MinecraftUtil.getMinecraftDataDir(),"CustomSkinLoader"), - LOG_FILE=new File(DATA_DIR,"CustomSkinLoader.log"), - CONFIG_FILE=new File(DATA_DIR,"CustomSkinLoader.json"); - - public static final Gson GSON=new GsonBuilder().setPrettyPrinting().create(); - public static final Logger logger=initLogger(); - public static final Config config=Config.loadConfig0(); - - private static final ProfileCache profileCache=new ProfileCache(); - private static final DynamicSkullManager dynamicSkullManager=new DynamicSkullManager(); + public static final String CustomSkinLoader_VERSION = "@MOD_VERSION@"; + public static final String CustomSkinLoader_FULL_VERSION = "@MOD_FULL_VERSION@"; + public static final int CustomSkinLoader_BUILD_NUMBER = Integer.parseInt("@MOD_BUILD_NUMBER@"); + + public static final File + DATA_DIR = new File(MinecraftUtil.getMinecraftDataDir(), "CustomSkinLoader"), + LOG_FILE = new File(DATA_DIR, "CustomSkinLoader.log"), + CONFIG_FILE = new File(DATA_DIR, "CustomSkinLoader.json"); + + public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + public static final Logger logger = initLogger(); + public static final Config config = Config.loadConfig0(); + + private static final ProfileCache profileCache = new ProfileCache(); + private static final DynamicSkullManager dynamicSkullManager = new DynamicSkullManager(); private static final ExecutorService THREAD_POOL = new ThreadPoolExecutor(config.threadPoolSize, config.threadPoolSize, 1L, TimeUnit.MINUTES, new LinkedBlockingQueue<>()); @@ -51,7 +53,7 @@ public class CustomSkinLoader { private static final ThreadFactory defaultFactory = Executors.defaultThreadFactory(); private static final ThreadFactory customFactory = r -> { Thread t = defaultFactory.newThread(r); - if(r instanceof Thread) { + if (r instanceof Thread) { t.setName(((Thread) r).getName()); } return t; @@ -88,7 +90,7 @@ public class CustomSkinLoader { } //For User Skin - public static Map loadProfile(GameProfile gameProfile){ + public static Map loadProfile(GameProfile gameProfile) { String credential = MinecraftUtil.getCredential(gameProfile); UserProfile profile; if (profileCache.isReady(credential)) { @@ -96,81 +98,89 @@ public class CustomSkinLoader { profile = profileCache.getProfile(credential); if (profile == null) { logger.warning("(Cached Profile is empty!) Expiry: " + profileCache.getExpiry(credential)); - if (profileCache.isExpired(credential)) // force load + if (profileCache.isExpired(credential)) { // force load profile = loadProfile0(gameProfile, false); - } else + } + } else { logger.info(profile.toString(profileCache.getExpiry(credential))); + } } else { profileCache.setLoading(credential, true); profile = loadProfile0(gameProfile, false); } return ModelManager0.fromUserProfile(profile); } + //Core - public static UserProfile loadProfile0(GameProfile gameProfile, boolean isSkull){ - String username=gameProfile.getName(); - String credential=MinecraftUtil.getCredential(gameProfile); - + public static UserProfile loadProfile0(GameProfile gameProfile, boolean isSkull) { + String username = gameProfile.getName(); + String credential = MinecraftUtil.getCredential(gameProfile); + profileCache.setLoading(credential, true); - logger.info("Loading "+username+"'s profile."); - if(config.loadlist==null||config.loadlist.isEmpty()){ + logger.info("Loading " + username + "'s profile."); + if (config.loadlist == null || config.loadlist.isEmpty()) { logger.info("LoadList is Empty."); return null; } - - UserProfile profile0=new UserProfile(); - for(int i=0;i loadProfileFromCache(final GameProfile gameProfile) { - String username=gameProfile.getName(); - String credential=MinecraftUtil.getCredential(gameProfile); - - if(username == null || credential == null) + String username = gameProfile.getName(); + String credential = MinecraftUtil.getCredential(gameProfile); + + //CustomSkinLoader needs username to load standard skin, if username not exist, only textures in NBT can be used + //Authlib 3.11.50 makes empty username to "\u0020" + if (username == null || username.equals("\u0020") || credential == null) { return dynamicSkullManager.getTexture(gameProfile); - if(config.forceUpdateSkull ?profileCache.isReady(credential):profileCache.isExist(credential)){ - UserProfile profile=profileCache.getProfile(credential); + } + if (config.forceUpdateSkull ? profileCache.isReady(credential) : profileCache.isExist(credential)) { + UserProfile profile = profileCache.getProfile(credential); return ModelManager0.fromUserProfile(profile); } if (!profileCache.isLoading(credential)) { @@ -206,7 +219,7 @@ public class CustomSkinLoader { } return Maps.newHashMap(); } - + private static Logger initLogger() { Logger logger = new Logger(LOG_FILE); logger.info("CustomSkinLoader " + CustomSkinLoader_FULL_VERSION);