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
- Have the second/guest player join from their own device with their own signed-in Xbox Live account instead of split-screen
- Track Pumpkin's upstream repository for split-screen/guest support and update once implemented
- If running a proxy/bridge, drop or convert guest login requests before forwarding to the server (unsupported until the feature lands)
- 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
- Have guest players join from their own devices with their own accounts
- Do not enable split-screen when the target server is Pumpkin
- Watch upstream releases for guest/split-screen support
- Filter out guest login requests in any proxy layer
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
- JWT chain validation failed
- The validated username is invalid
- Could not parse UUID from validated token
- Cannot accept self-signed token. Authentication is enforced…
- Vine response data too short (minimum 89 bytes)
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)