Pumpkin-MC/Pumpkin · warning · LoginError

Got a guest/splitscreen login request. Currently…

Error message

Got a guest/splitscreen login request. Currently unimplemented.

What it means

This is the LoginError::GuestUnimplemented variant. The Bedrock protocol allows guest/split-screen players (additional local players on one console) to send login requests, but Pumpkin does not yet support handling them. The library throws this as an explicit unsupported-operation signal during the login handshake rather than admitting the player with undefined behavior.

Solutions

  1. Have the second/guest player join from their own device with their own signed-in Xbox Live account instead of split-screen
  2. Track Pumpkin's upstream repository for split-screen/guest support and update once implemented
  3. If running a proxy/bridge, drop or convert guest login requests before forwarding to the server (unsupported until the feature lands)
  4. Do not attempt a config workaround — this variant is hard-coded as unimplemented in the login handler
Defensive patterns

Strategy: fallback

Validate before calling

// Client-side: do not send guest/split-screen login flags to Pumpkin servers
fn is_guest_login(login_flags: u32, guest_flag: u32) -> bool {
    login_flags & guest_flag != 0
}

Type guard

fn is_guest_unimplemented(e: &LoginError) -> bool {
    matches!(e, LoginError::GuestUnimplemented)
}

Try / catch

match login_result {
    Err(LoginError::GuestUnimplemented) => {
        info!("guest/split-screen logins are not supported by this server");
        disconnect_with("Split-screen players are not supported on this server")
    }
    Err(e) => disconnect_with(&format!("Login failed: {e}")),
    Ok(p) => admit(p),
}

Prevention

When it happens

Trigger: A Bedrock client sends a Login packet flagged as a guest or split-screen (second local) player; Pumpkin's login handler matches this case and returns GuestUnimplemented.

Common situations: A player on a console trying to join with a split-screen second account, or families sharing one device where a second local player attempts to connect.

Related errors


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

Appendix: source

Thrown at crates/pumpkin/src/net/bedrock/login/mod.rs:42

use serde_repr::Deserialize_repr;
use std::sync::Arc;
use thiserror::Error;
use tracing::debug;
use uuid::Uuid;

#[derive(Debug, Error)]
pub enum LoginError {
    #[error("Login packet data is not valid JSON")]
    InvalidTokenFormat(#[from] serde_json::Error),
    #[error("JWT chain validation failed: {0}")]
    ChainValidationFailed(#[from] AuthError),
    #[error("The validated username is invalid")]
    InvalidUsername,
    #[error("Could not parse UUID from validated token")]
    InvalidUuid,
    #[error("Cannot accept self-signed token. Authentication is enforced by server config.")]
    SelfSignedNotAllowed,
    #[error("Got a guest/splitscreen login request. Currently unimplemented.")]
    GuestUnimplemented,
    #[error("Failed to decode extra using decode_b64_url_nopad.")]
    DecodeExtraError,
}

#[derive(Deserialize_repr)]
#[repr(u8)]
enum AuthenticationType {
    Full,
    Guest,
    SelfSigned,
}

#[derive(Deserialize)]
#[serde(rename_all = "PascalCase")]
struct AuthPayload {
    authentication_type: AuthenticationType,
    token: String,

View on GitHub (pinned to 8d4639e25a)