Pumpkin-MC/Pumpkin · error · BungeeCordError

Failed to parse properties

Error message

Failed to parse properties

What it means

BungeeCordError sentinel from BungeeCord IP-forwarding parsing: the profile properties array forwarded by the proxy failed to deserialize. The faulty input is the properties portion of the BungeeCord forwarding payload (which also carries the BungeeGuard token), typically malformed because of a proxy/plugin version mismatch.

Solutions

  1. Reject the connection
  2. Validate properties JSON shape before deserialization
  3. Log the parse failure at debug level
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/pumpkin/src/net/proxy/bungeecord.rs:21 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/10bc0363b1da6c61. Report an issue: GitHub.

Appendix: source

Thrown at crates/pumpkin/src/net/proxy/bungeecord.rs:21

use std::sync::Arc;
use std::{net::IpAddr, net::SocketAddr};
use thiserror::Error;
use tracing::warn;

use crate::net::{GameProfile, offline_uuid};
use pumpkin_protocol::Property;

/// The property name the `BungeeGuard` plugin uses to forward its shared
/// secret inside the profile properties.
const BUNGEEGUARD_TOKEN_PROPERTY: &str = "bungeeguard-token";

#[derive(Error, Debug)]
pub enum BungeeCordError {
    #[error("Failed to parse address")]
    FailedParseAddress,
    #[error("Failed to parse UUID")]
    FailedParseUUID,
    #[error("Failed to parse properties")]
    FailedParseProperties,
    #[error("Failed to make offline UUID")]
    FailedMakeOfflineUUID,
    #[error("No BungeeGuard token in forwarded data")]
    MissingToken,
    #[error("Invalid BungeeGuard token")]
    InvalidToken,
}

/// Attempts to login a player via `BungeeCord`.
///
/// This function should be called when receiving the `SLoginStart` packet.
/// It utilizes the `server_address` received in the `SHandShake` packet,
/// which may contain optional data about the client:
///
/// 1. IP address (if `ip_forward` is enabled on the `BungeeCord` server)
/// 2. UUID (if `ip_forward` is enabled on the `BungeeCord` server)
/// 3. Game profile properties (if `ip_forward` and `online_mode` are enabled on the `BungeeCord` server)

View on GitHub (pinned to 8d4639e25a)