5个版本 (3个稳定版)
1.1.0 | 2024年7月26日 |
---|---|
1.0.1 | 2023年4月19日 |
0.2.0 | 2022年7月30日 |
0.1.0 | 2022年7月26日 |
#386 in 网络编程
每月194次下载
51KB
922 行
mc-query
使用Minecraft网络协议实现服务器列表ping、查询和RCON
未来可能还会提供CLI来访问这些功能。
安装
要使用此库,只需运行 cargo add mc-query
。
用法
您可以在此处阅读文档。
示例
使用status
获取基本服务器信息
use mc_query::status;
use tokio::io::Result;
#[tokio::main]
async fn main() -> Result<()> {
let data = status("mc.hypixel.net", 25565).await?;
println!("{data:#?}");
Ok(())
}
使用RconClient
通过RCON运行命令
use mc_query::rcon::RconClient;
use tokio::io::Result;
#[tokio::main]
async fn main() -> Result<()> {
let mut client = RconClient::new("localhost", 25565);
client.authenticate("supersecretrconpassword").await?;
let response = client.run_command("time set 0").await?;
println!("{response}");
Ok(())
}
使用stat_basic
查询服务器
use mc_query::query;
use tokio;:io::Result;
#[tokio::main]
async fn main() -> Result<()> {
let res = stat_basic("localhost", 25565).await?;
println!(
"Server has {} out of {} players online",
res.num_players,
res.max_players
);
Ok(())
}
使用stat_full
查询服务器
use mc_query::query;
use tokio;:io::Result;
#[tokio::main]
async fn main() -> Result<()> {
let res = stat_full("localhost", 25565).await?;
println!("Online players: {:#?}, res.players);
Ok(())
}
参考
- wiki.vg - 本crate中实现的各种协议的文档
测试
此库中的一些测试需要在localhost
上运行Minecraft服务器。如果您正在贡献涉及这些测试的功能或错误修复,请运行方便的测试脚本./test
(或在Windows上使用py -3 test
)。您还可以仅运行Minecraft服务器而不使用cargo测试(对于使用IDE进行调试很有用),使用./test --server-only true
。
这需要相当现代的Python 3版本,以及Java 17或更高版本来运行服务器。
许可证
根据以下任一许可证授权
- Apache许可证,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以供包含在作品中的任何贡献,将按照上述方式双许可,不附加任何额外的条款或条件。
Mojang
本项目与Mojang Synergies AB或Microsoft Corporation无关,也未得到其支持。任何使用其服务(包括在此库中运行一些测试)都需要您同意他们的条款。
依赖
~3–10MB
~99K SLoC