diff --git a/src/login.rs b/src/login.rs index 7071a55..7f7bc1a 100644 --- a/src/login.rs +++ b/src/login.rs @@ -2,4 +2,21 @@ use tokio::net::tcp::{OwnedReadHalf, OwnedWriteHalf}; -use crate::mc_types; +use crate::mc_types::{self, Result}; + +pub fn convert_clientbound_disconnect(reason: String) -> Vec { + let mut data: Vec = vec![0]; + data.append(&mut &mut mc_types::convert_string(&reason)); + + data +} +pub async fn write_clientbound_disconnect( + stream: &mut OwnedWriteHalf, + reason: String, +) -> Result<()> { + mc_types::write_packet( + stream, + &mut convert_clientbound_disconnect(reason), + ).await?; + Ok(()) +} diff --git a/src/main.rs b/src/main.rs index b38b70b..b89eff6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -97,7 +97,13 @@ async fn handle_client(client_socket: TcpStream) { } }; }, - None => {} + None => { + login::write_clientbound_disconnect( + &mut client_writer, + "\"Server Error (Server may be starting)\"".to_string(), + ).await.expect("Error sending disconnect on: \ +Failed to connect to the backend server"); + } }; } else { return;