diff options
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/common')
-rw-r--r-- | src/main/java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java index 6344632a6b..1e097f910b 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/render/GTPP_CapeRenderer.java @@ -7,6 +7,7 @@ import java.io.InputStream; import java.net.URL; import java.util.Date; import java.util.List; +import java.util.concurrent.ForkJoinPool; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.model.ModelBiped; @@ -80,6 +81,14 @@ public class GTPP_CapeRenderer extends RenderPlayer { return; } + if (!CapeUtils.mapsPopulated) { + if (!CapeUtils.cacheReady) { + return; + } + CapeUtils.writeCacheToMaps(); + CapeUtils.mapsPopulated = true; + } + // We have already checked if this player has a cape, but since they do not, we best not render. if (hasResourceChecked) { if (!hasCape && !CORE.DEVENV) { @@ -233,6 +242,8 @@ public class GTPP_CapeRenderer extends RenderPlayer { private static char SPLIT_CHARACTER = 'ยง'; private static AES sAES; + private static volatile boolean cacheReady = false; + private static boolean mapsPopulated = false; // UUID - Username private static final AutoMap<Pair<String, String>> mOrangeCapes = new AutoMap<>(); @@ -246,14 +257,14 @@ public class GTPP_CapeRenderer extends RenderPlayer { if (CORE.DEVENV) { return true; } - try { - if (shouldDownloadCapeList()) { - downloadCapeList(); - } - } catch (Exception e) { - return false; - } - writeCacheToMaps(); + ForkJoinPool.commonPool().execute(() -> { + try { + if (shouldDownloadCapeList()) { + downloadCapeList(); + } + } catch (Exception ignored) {} + cacheReady = true; + }); return true; } |