mirror of
https://github.com/G2-Games/minecraft_alpha_server.git
synced 2025-04-19 07:12:58 -05:00
58 lines
1.6 KiB
Rust
58 lines
1.6 KiB
Rust
use byteorder::{ReadBytesExt, WriteBytesExt, BE};
|
|
|
|
use crate::mcstring::{MCString, WriteMCString, ReadMCString};
|
|
|
|
use super::Packet;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct Packet1Login {
|
|
pub username: MCString,
|
|
pub password: MCString,
|
|
pub protocol_version: i32,
|
|
pub world_seed: i64,
|
|
pub dimension: i8,
|
|
}
|
|
|
|
impl Packet1Login {
|
|
pub fn new(protocol_version: i32, world_seed: i64, dimension: i8) -> Self {
|
|
Self {
|
|
username: MCString::default(),
|
|
password: MCString::default(),
|
|
protocol_version,
|
|
world_seed,
|
|
dimension,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Packet for Packet1Login {
|
|
fn read_from<R: std::io::Read>(input: &mut R) -> Result<Self, std::io::Error> {
|
|
let protocol_version = input.read_i32::<BE>()?;
|
|
let username = input.read_mcstring()?.into();
|
|
let password = input.read_mcstring()?.into();
|
|
let world_seed = input.read_i64::<BE>()?;
|
|
let dimension = input.read_i8()?;
|
|
|
|
Ok(Packet1Login {
|
|
username,
|
|
password,
|
|
protocol_version,
|
|
world_seed,
|
|
dimension,
|
|
})
|
|
}
|
|
|
|
fn write_into<W: std::io::Write>(&self, output: &mut W) -> Result<(), std::io::Error> {
|
|
output.write_i32::<BE>(self.protocol_version).unwrap();
|
|
output.write_mcstring(&self.username).unwrap();
|
|
output.write_mcstring(&self.password).unwrap();
|
|
output.write_i64::<BE>(self.world_seed).unwrap();
|
|
output.write_i8(self.dimension).unwrap();
|
|
|
|
Ok(())
|
|
}
|
|
|
|
fn size(&self) -> usize {
|
|
4 + self.username.len() + self.password.len() + 8 + 1
|
|
}
|
|
}
|