Pumpkin-MC/Pumpkin · error · TextureError

Failed to decode base64 player texture

Error message

Failed to decode base64 player texture: {0}

What it means

The base64-encoded texture property value from the Mojang session API could not be base64-decoded. The decode error is embedded; the profile's textures property is corrupt or non-standard, so no texture data can be extracted.

Solutions

  1. Treat the player as having no custom textures and continue
  2. Log the decode failure and fall back to the default skin
  3. Validate the textures payload is valid base64 before decoding
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/pumpkin/src/net/authentication.rs:419 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of Pumpkin-MC/Pumpkin@8d4639e25a (2026-09-09). Data as JSON: /api/errors/3556b69602b15ec1. Report an issue: GitHub.

Appendix: source

Thrown at crates/pumpkin/src/net/authentication.rs:419

    #[error("Texture Error {0}")]
    TextureError(TextureError),
    #[error("You have disallowed actions from Authentication servers")]
    DisallowedAction,
    #[error("Failed to parse JSON into Game Profile")]
    FailedParse,
    #[error("Unknown Status Code {0}")]
    UnknownStatusCode(StatusCode),
}

#[derive(Error, Debug)]
pub enum TextureError {
    #[error("Invalid URL")]
    InvalidURL,
    #[error("Invalid URL scheme for player texture: {0}")]
    DisallowedUrlScheme(String),
    #[error("Invalid URL domain for player texture: {0}")]
    DisallowedUrlDomain(String),
    #[error("Failed to decode base64 player texture: {0}")]
    DecodeError(String),
    #[error("Failed to parse JSON from player texture: {0}")]
    JSONError(String),
}

#[cfg(test)]
mod tests {
    use super::ProfileTextures;

    // Third-party auth servers (drasl, Blessing Skin, littleskin.cn) don't send
    // `signatureRequired`. The profile must still parse. See issue #301.
    #[test]
    fn parses_profile_without_signature_required() {
        let json = r#"{
            "timestamp": 0,
            "profileId": "069a79f444e94726a5befca90e38aaf5",
            "profileName": "Notch",
            "textures": {}

View on GitHub (pinned to 8d4639e25a)