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
- Treat the player as having no custom textures and continue
- Log the decode failure and fall back to the default skin
- 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
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
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)