Expand description
A fast, lightweight, stable, and feature-rich Minecraft Server Protocol client implemented in Rust.
Offering efficient type exporting and error feedback. It enables retrieving server status using various protocols and returns strongly-typed JSON data.
Applicable version
Supports Java Edition and Bedrock Edition servers. The applicable version range is as follows.
- Java Edition: Suitable for server versions 1.4 and above (Protocol version number >= 47).
- Bedrock Edition: Suitable for modern Bedrock servers (1.16.220 and above).
Supported protocols
Server Information Query Protocol covering most versions, with certain protocols requiring the server to enable corresponding features.
- Server List Ping Suitable for most modern servers (1.7+).
- Netty Server Ping Suitable for servers 1.6 and later.
- Legacy Server Ping Suitable for older versions of servers (1.4 to 1.5).
- Beta Legacy Server Ping Suitable for ancient versions of servers (Beta 1.8 to 1.3).
- Ping via LAN LAN Server Discovery Protocol.
- Raknet Protocol Applicable to modern Bedrock servers.
- Query Protocol Applicable to modern Java Edition servers (available from version 1.9pre4 onwards).
Usage
- To integrate it as a library into your own Rust project, run it in the root project directory.
cargo add msp
Or, add this dependency to your Cargo.toml
file:
[dependencies]
msp = "0.1.0"
Examples
Here are some basic examples showcased below.
- Use Conf::get_server_status to retrieve server information, return Server. Note that older versions are not supported:
use msp::{Conf, MspErr, Server};
fn main() -> Result<(), MspErr> {
let server = Conf::create_with_port("www.example.com", 25565);
let info: Server = server.get_server_status()?;
println!("{}", info);
Ok(())
}
- Use Conf::create_with_port to create a connection configuration specifying the port:
use msp::{Conf, MspErr, Server};
fn main() -> Result<(), MspErr> {
let server = Conf::create_with_port("www.example.com", 25565);
let info: Server = server.get_server_status()?;
println!("{}", info);
Ok(())
}
- Use get_lan_server_status to retrieve LAN online hosts:
use msp::{get_lan_server_status, MspErr, SocketConf};
fn main() -> Result<(), MspErr> {
get_lan_server_status(&SocketConf::default())?;
Ok(())
}
- Use Conf::query_full to retrieve server information using the Query protocol:
use msp::{Conf, MspErr};
fn main() -> Result<(), MspErr> {
let server = Conf::create_with_port("www.example.com", 25565);
println!("{}", server.query_full()?);
Ok(())
}
Note: To use this protocol, you need to enable the enable-query
option on the server side.
This option can be found in the server.properties
file located in the root directory.
Set it as follows:
enable-query=true
query.port=25565 # Configure the port according to your specific situation
Make sure to save the changes and restart the server for the configuration to take effect.
License
MIT.
Structs
- Bedrock server info type.
- Main struct used for configuring the connection.
- LAN server info structure.
- Legacy beta server info type.
- Legacy server info type.
- Basic stat in Query protocol.
- Regular Server info type.
- Additional socket configuration.
Enums
- Msp error uniform error definition.
Functions
- Get the host information of other open servers in the current LAN.
Type Definitions
- The alias of LegacyServer is identical in content.