From 2c3bf3b79e133acd01580144771a7cf238ecc4ee Mon Sep 17 00:00:00 2001 From: mat Date: Sun, 12 Dec 2021 13:52:32 -0600 Subject: move ping over to minecraft-client --- bot/src/main.rs | 5 ++- minecraft-client/src/lib.rs | 2 +- minecraft-client/src/ping.rs | 46 ++++++++++++++++++++++++++ minecraft-protocol/src/lib.rs | 1 - minecraft-protocol/src/server_status.rs | 6 ---- minecraft-protocol/src/server_status_pinger.rs | 44 ------------------------ 6 files changed, 49 insertions(+), 55 deletions(-) create mode 100644 minecraft-client/src/ping.rs delete mode 100644 minecraft-protocol/src/server_status.rs delete mode 100644 minecraft-protocol/src/server_status_pinger.rs diff --git a/bot/src/main.rs b/bot/src/main.rs index ec2f5954..75a11dfd 100644 --- a/bot/src/main.rs +++ b/bot/src/main.rs @@ -1,11 +1,10 @@ +use minecraft_client::ping; use minecraft_protocol::ServerAddress; use tokio::runtime::Runtime; async fn bot() { let address = ServerAddress::parse(&"mc.hypixel.net".to_string()).unwrap(); - let response = minecraft_protocol::server_status_pinger::ping_server(&address) - .await - .unwrap(); + let response = ping::ping_server(&address).await.unwrap(); println!("{}", response.description.to_ansi(None)); } diff --git a/minecraft-client/src/lib.rs b/minecraft-client/src/lib.rs index 3491f6ad..1fc97709 100644 --- a/minecraft-client/src/lib.rs +++ b/minecraft-client/src/lib.rs @@ -1,4 +1,4 @@ - +pub mod ping; #[cfg(test)] mod tests { diff --git a/minecraft-client/src/ping.rs b/minecraft-client/src/ping.rs new file mode 100644 index 00000000..05aa84be --- /dev/null +++ b/minecraft-client/src/ping.rs @@ -0,0 +1,46 @@ +///! Ping Minecraft servers. + +use minecraft_protocol::{ + connection::Connection, + packets::{ + handshake::client_intention_packet::ClientIntentionPacket, + status::{ + clientbound_status_response_packet::ClientboundStatusResponsePacket, + serverbound_status_request_packet::ServerboundStatusRequestPacket, + }, + ConnectionProtocol, Packet, PacketTrait, + }, + resolver, ServerAddress, +}; + +pub async fn ping_server( + address: &ServerAddress, +) -> Result { + let resolved_address = resolver::resolve_address(address).await?; + + let mut conn = Connection::new(&resolved_address).await?; + + // send the client intention packet and switch to the status state + conn.send_packet( + ClientIntentionPacket { + protocol_version: 757, + hostname: address.host.clone(), + port: address.port, + intention: ConnectionProtocol::Status, + } + .get(), + ) + .await; + conn.switch_state(ConnectionProtocol::Status); + + // send the empty status request packet + conn.send_packet(ServerboundStatusRequestPacket {}.get()) + .await; + + let packet = conn.read_packet().await.unwrap(); + + Ok(match packet { + Packet::ClientboundStatusResponsePacket(p) => p, + _ => Err("Invalid packet type".to_string())?, + }) +} diff --git a/minecraft-protocol/src/lib.rs b/minecraft-protocol/src/lib.rs index aaf3da50..5d6c8330 100644 --- a/minecraft-protocol/src/lib.rs +++ b/minecraft-protocol/src/lib.rs @@ -7,7 +7,6 @@ pub mod connection; pub mod mc_buf; pub mod packets; pub mod resolver; -pub mod server_status_pinger; #[derive(Debug)] pub struct ServerAddress { diff --git a/minecraft-protocol/src/server_status.rs b/minecraft-protocol/src/server_status.rs deleted file mode 100644 index 93480aaf..00000000 --- a/minecraft-protocol/src/server_status.rs +++ /dev/null @@ -1,6 +0,0 @@ -struct ServerStatus { - description: Component, - players: Players, - version: Version, - favicon: String, -} diff --git a/minecraft-protocol/src/server_status_pinger.rs b/minecraft-protocol/src/server_status_pinger.rs deleted file mode 100644 index 0c1f2076..00000000 --- a/minecraft-protocol/src/server_status_pinger.rs +++ /dev/null @@ -1,44 +0,0 @@ -use crate::{ - connection::Connection, - packets::{ - handshake::client_intention_packet::ClientIntentionPacket, - status::{ - clientbound_status_response_packet::ClientboundStatusResponsePacket, - serverbound_status_request_packet::ServerboundStatusRequestPacket, - }, - ConnectionProtocol, Packet, PacketTrait, - }, - resolver, ServerAddress, -}; - -pub async fn ping_server( - address: &ServerAddress, -) -> Result { - let resolved_address = resolver::resolve_address(address).await?; - - let mut conn = Connection::new(&resolved_address).await?; - - // send the client intention packet and switch to the status state - conn.send_packet( - ClientIntentionPacket { - protocol_version: 757, - hostname: address.host.clone(), - port: address.port, - intention: ConnectionProtocol::Status, - } - .get(), - ) - .await; - conn.switch_state(ConnectionProtocol::Status); - - // send the empty status request packet - conn.send_packet(ServerboundStatusRequestPacket {}.get()) - .await; - - let packet = conn.read_packet().await.unwrap(); - - Ok(match packet { - Packet::ClientboundStatusResponsePacket(p) => p, - _ => Err("Invalid packet type".to_string())?, - }) -} -- cgit v1.2.3