use std::io::Write; use crate::{ packets::{Packet, SendPacket}, types::VarString, }; /// id: 0x00 #[derive(Debug)] pub struct Disconnect { reason: VarString, all: Vec, } impl Disconnect { pub fn parse(packet: Packet) -> Option { let mut reader = packet.data.into_iter(); Some(Disconnect { all: packet.all, reason: VarString::parse(&mut reader)?, }) } pub fn get_string(&self) -> String { self.reason.get_value() } pub fn set_reason(reason: String) -> Option { let vec = VarString::from(reason).move_data()?; Disconnect::parse(Packet::from_bytes(0, vec)?) } pub fn get_all(&self) -> Vec { self.all.clone() } } impl SendPacket for Disconnect { fn send_packet(&self, stream: &mut std::net::TcpStream) -> std::io::Result<()> { stream.write_all(&self.all)?; stream.flush()?; Ok(()) } }