Fix rare NPE in skin handling code
@@ -258,8 +258,15 @@ public class SkinManager {
JsonNode skinObject = GeyserImpl.JSON_MAPPER.readTree(new String(Base64.getDecoder().decode(encodedJson), StandardCharsets.UTF_8));
JsonNode textures = skinObject.get("textures");
- if (textures != null) {
+ if (textures == null) {
+ return null;
+ }
+
JsonNode skinTexture = textures.get("SKIN");
+ if (skinTexture == null) {
+ return null;
+ }
+
String skinUrl = skinTexture.get("url").asText().replace("http://", "https://");
boolean isAlex = skinTexture.has("metadata");
@@ -272,8 +279,6 @@ public class SkinManager {
return new GameProfileData(skinUrl, capeUrl, isAlex);
}
- return null;
- }
/**
* @return default skin with default cape when texture data is invalid, or the Bedrock player's skin if this
