diff --git a/src/models/data/entity_method.rs b/src/models/data/entity_method.rs index 6cd1268..718a6dc 100644 --- a/src/models/data/entity_method.rs +++ b/src/models/data/entity_method.rs @@ -14,6 +14,7 @@ pub enum EntityMethod { Unknown { sub_type: u32, + /// Whole packet payload (including the sub-type). #[serde_as(as = "serde_with::hex::Hex")] payload: Vec, }, diff --git a/src/models/data/payload.rs b/src/models/data/payload.rs index 8aab0e2..71b9133 100644 --- a/src/models/data/payload.rs +++ b/src/models/data/payload.rs @@ -15,7 +15,13 @@ pub enum Payload { EntityMethod(EntityMethod), /// Default payload when type is not known. - Unknown(#[serde_as(as = "serde_with::hex::Hex")] Vec), + Unknown { + type_: u32, + + /// Whole packet payload. + #[serde_as(as = "serde_with::hex::Hex")] + raw: Vec, + }, } impl Payload { @@ -44,7 +50,10 @@ impl Payload { 8 => Self::EntityMethod(EntityMethod::new(payload)?), - _ => Self::Unknown(payload), + _ => Self::Unknown { + raw: payload, + type_, + }, }; Ok(this) }