Pumpkin-MC/Pumpkin · error · VelocityError

Failed to read game profile UUID

Error message

Failed to read game profile UUID

What it means

VelocityError sentinel while decoding the forwarded player profile: the player's UUID bytes could not be read from the modern forwarding payload. Fires when the payload is truncated at the UUID field — the input at fault is the 16-byte (or string) UUID portion of Velocity's forwarded player info.

Solutions

  1. Reject the connection
  2. Check for truncated or corrupted forwarding data
  3. Log the read failure at debug level
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/pumpkin/src/net/proxy/velocity.rs:45 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at crates/pumpkin/src/net/proxy/velocity.rs:45

const PLAYER_INFO_CHANNEL: &str = "velocity:player_info";

#[derive(Error, Debug)]
pub enum VelocityError {
    #[error("No response data received")]
    NoData,
    #[error("Unable to verify player details")]
    FailedVerifyIntegrity,
    #[error("Failed to read forward version")]
    FailedReadForwardVersion,
    #[error("Unsupported forwarding version {0}. Maximum supported version is {1}")]
    UnsupportedForwardVersion(u8, u8),
    #[error("Failed to read address")]
    FailedReadAddress,
    #[error("Failed to parse address")]
    FailedParseAddress,
    #[error("Failed to read game profile name")]
    FailedReadProfileName,
    #[error("Failed to read game profile UUID")]
    FailedReadProfileUUID,
    #[error("Failed to read game profile properties")]
    FailedReadProfileProperties,
}

pub async fn velocity_login(connection: &mut PendingConnection) {
    // TODO: Validate the packet transaction id from the plugin response with this
    let velocity_message_id: i32 = rand::rng().random();

    let mut buf = BytesMut::new();
    buf.put_u8(MAX_SUPPORTED_FORWARDING_VERSION);
    connection
        .send_packet_now(&CLoginPluginRequest::new(
            velocity_message_id.into(),
            PLAYER_INFO_CHANNEL,
            &buf,
        ))
        .await;

View on GitHub (pinned to 8d4639e25a)