From f862b462742e5d51c18a99a8f0879870a649fbb8 Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Wed, 24 Jun 2015 17:55:51 +0200 Subject: [PATCH] Prevented repeated Freezes caused by LocalizedResourcePack if ReplayMod.com is not available --- .../eu/crushedpixel/replaymod/ReplayMod.java | 19 +++++++++++++------ .../localization/LocalizedResourcePack.java | 8 ++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java index dd187fcf..d127b0b2 100755 --- a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java +++ b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java @@ -149,12 +149,19 @@ public class ReplayMod { //clean up replay_recordings folder removeTmcprFiles(); - try { - mc.defaultResourcePacks.add(new LocalizedResourcePack()); - mc.refreshResources(); - } catch(Exception e) { - e.printStackTrace(); - } + Thread localizedResourcePackLoader = new Thread(new Runnable() { + @Override + public void run() { + try { + mc.defaultResourcePacks.add(new LocalizedResourcePack()); + mc.refreshResources(); + } catch(Exception e) { + e.printStackTrace(); + } + } + }, "localizedResourcePackLoader"); + localizedResourcePackLoader.start(); + /* boolean auth = false; diff --git a/src/main/java/eu/crushedpixel/replaymod/localization/LocalizedResourcePack.java b/src/main/java/eu/crushedpixel/replaymod/localization/LocalizedResourcePack.java index 479c363f..6c094cda 100644 --- a/src/main/java/eu/crushedpixel/replaymod/localization/LocalizedResourcePack.java +++ b/src/main/java/eu/crushedpixel/replaymod/localization/LocalizedResourcePack.java @@ -13,6 +13,7 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.net.ConnectException; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -20,6 +21,7 @@ import java.util.Set; public class LocalizedResourcePack implements IResourcePack { private Map availableLanguages = new HashMap(); + private boolean websiteAvailable = true; @Override public InputStream getInputStream(ResourceLocation loc) { @@ -33,11 +35,17 @@ public class LocalizedResourcePack implements IResourcePack { public boolean resourceExists(ResourceLocation loc) { if(!(loc.getResourcePath().endsWith(".lang"))) return false; String langcode = loc.getResourcePath().split("/")[1].split("\\.")[0]; + if(availableLanguages.containsKey(langcode)) return true; + if(!websiteAvailable) return false; boolean downloaded = true; try { String lang = ReplayMod.apiClient.getTranslation(langcode); String prop = StringEscapeUtils.unescapeHtml4(lang); availableLanguages.put(langcode, prop); + } catch(ConnectException ce) { + websiteAvailable = false; + ce.printStackTrace(); + downloaded = false; } catch(Exception e) { e.printStackTrace(); downloaded = false;