diff --git a/src/main/java/com/thebrokenrail/gestus/skin/SkinColor.java b/src/main/java/com/thebrokenrail/gestus/skin/SkinColor.java index 8c34cb8..f5b30d6 100644 --- a/src/main/java/com/thebrokenrail/gestus/skin/SkinColor.java +++ b/src/main/java/com/thebrokenrail/gestus/skin/SkinColor.java @@ -97,6 +97,7 @@ public final class SkinColor { try { image = ImageIO.read(url); } catch (IOException e) { + return null; } diff --git a/src/main/java/com/thebrokenrail/gestus/skin/SkinJSON.java b/src/main/java/com/thebrokenrail/gestus/skin/SkinJSON.java index d52a0fc..3df5734 100644 --- a/src/main/java/com/thebrokenrail/gestus/skin/SkinJSON.java +++ b/src/main/java/com/thebrokenrail/gestus/skin/SkinJSON.java @@ -1,6 +1,8 @@ package com.thebrokenrail.gestus.skin; import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import org.apache.logging.log4j.LogManager; import java.io.BufferedReader; import java.io.IOException; @@ -47,6 +49,10 @@ final class SkinJSON { } } + static void error(String data) { + LogManager.getLogger("Gestus").error(data); + } + private static final String SKIN_TEXTURE_KEY = "SKIN"; static String get(UUID uuid) { @@ -54,26 +60,40 @@ final class SkinJSON { String data = urlToString(url); if (data != null) { - Gson gson = new Gson(); - Response response = gson.fromJson(data, Response.class); + try { + Gson gson = new Gson(); + Response response = gson.fromJson(data, Response.class); - if (response != null && response.properties != null) { - for (Property property : response.properties) { - if ("textures".equals(property.name)) { - String texturesJSON = new String(Base64.getDecoder().decode(property.value)); - Data textures = gson.fromJson(texturesJSON, Data.class); + if (response != null && response.properties != null) { + for (Property property : response.properties) { + if ("textures".equals(property.name)) { + try { + String texturesJSON = new String(Base64.getDecoder().decode(property.value)); + Data textures = gson.fromJson(texturesJSON, Data.class); - if (textures.textures.containsKey(SKIN_TEXTURE_KEY)) { - Texture skin = textures.textures.get(SKIN_TEXTURE_KEY); - return skin.url; + if (textures.textures.containsKey(SKIN_TEXTURE_KEY)) { + Texture skin = textures.textures.get(SKIN_TEXTURE_KEY); + return skin.url; + } + + break; + } catch (JsonSyntaxException e) { + error("Unable To Parse Embedded Skin Metadata: " + uuid.toString()); + return null; + } } - - break; } } - } - } - return null; + error("Embedded Skin Metadata Is Invalid: " + uuid.toString()); + return null; + } catch (JsonSyntaxException e) { + error("Unable To Parse Skin Metadata: " + uuid); + return null; + } + } else { + error("Unable To Download Skin Metadata: " + uuid); + return null; + } } }