diff --git a/lib/plugins/entities.js b/lib/plugins/entities.js index 57069cc33..23a5104c0 100644 --- a/lib/plugins/entities.js +++ b/lib/plugins/entities.js @@ -1,5 +1,6 @@ const { Vec3 } = require('vec3') const conv = require('../conversions') +const mojangson = require('mojangson') // These values are only accurate for versions 1.14 and above (crouch hitbox changes) // Todo: hitbox sizes for sleeping, swimming/crawling, and flying with elytra const PLAYER_HEIGHT = 1.8 @@ -943,7 +944,12 @@ function extractSkinInformation (properties) { return undefined } - const skinTexture = JSON.parse(Buffer.from(props.textures.value, 'base64').toString('utf8')) + let skinTexture + try { // Handles mojangson-style player data + skinTexture = JSON.parse(Buffer.from(props.textures.value, 'base64')) + } catch (e) { + skinTexture = mojangson.simplify(mojangson.parse(Buffer.from(props.textures.value, 'base64').toString('utf-8'))) + } const skinTextureUrl = skinTexture?.textures?.SKIN?.url ?? undefined const skinTextureModel = skinTexture?.textures?.SKIN?.metadata?.model ?? undefined