30 lines
833 B
Rust
30 lines
833 B
Rust
|
use std::io::{Result};
|
||
|
use std::net::{ToSocketAddrs};
|
||
|
use std::env;
|
||
|
|
||
|
use mcstatusface::MinecraftStatus;
|
||
|
|
||
|
fn main() -> Result<()> {
|
||
|
let args: Vec<String> = env::args().collect();
|
||
|
if args.len() < 2 {
|
||
|
eprintln!("Usage: {} <address[:port]>", args[0]);
|
||
|
std::process::exit(1);
|
||
|
}
|
||
|
|
||
|
let mut address = String::from(args[1].as_str());
|
||
|
if !address.contains(":") {
|
||
|
address += ":25565";
|
||
|
}
|
||
|
let mut addrs_iter = args[1].to_socket_addrs().unwrap();
|
||
|
let address = addrs_iter.next().unwrap();
|
||
|
|
||
|
let status = MinecraftStatus::fetch(address).unwrap();
|
||
|
|
||
|
println!("\nVersion: {} ({})", status.version.name, status.version.protocol);
|
||
|
println!("Players: {}/{}", status.players.online, status.players.max);
|
||
|
println!("MOTD:");
|
||
|
println!("{}", status.parse_description());
|
||
|
|
||
|
Ok(())
|
||
|
}
|