51 lines
No EOL
984 B
Rust
51 lines
No EOL
984 B
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
pub const PROTOCOL_VERSION: u32 = 1;
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub enum State {
|
|
Handshake,
|
|
Play
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub enum MessageC2S {
|
|
Hello {
|
|
version: u32,
|
|
requested_username: String,
|
|
next_state: State
|
|
},
|
|
|
|
Goodbye {
|
|
reason: GoodbyeReason
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub enum MessageS2C {
|
|
Hello {
|
|
version: u32,
|
|
given_username: String,
|
|
next_state: State
|
|
},
|
|
|
|
Goodbye {
|
|
reason: GoodbyeReason
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub enum GoodbyeReason {
|
|
UnsupportedProtocol { supported: u32, got: u32 },
|
|
UnexpectedPacket,
|
|
UnexpectedNextState,
|
|
UsernameTaken,
|
|
Done
|
|
}
|
|
|
|
pub fn pc2s(pkt: &MessageC2S) -> Vec<u8> {
|
|
rmp_serde::to_vec(pkt).unwrap()
|
|
}
|
|
pub fn ps2c(pkt: &MessageS2C) -> Vec<u8> {
|
|
rmp_serde::to_vec(pkt).unwrap()
|
|
} |