#minecraft-server #minecraft #query #rcon #api-bindings

mc-query

Minecraft服务器列表ping、查询和RCON的实现

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 网络编程

Download history 4/week @ 2024-05-17 1/week @ 2024-05-24 1/week @ 2024-05-31 2/week @ 2024-06-14 1/week @ 2024-06-21 7/week @ 2024-07-12 34/week @ 2024-07-19 151/week @ 2024-07-26 7/week @ 2024-08-02

每月194次下载

MIT/Apache

51KB
922

mc-query

Crates.io Crates.io Crates.io

docs.rs

使用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许可证定义,您有意提交以供包含在作品中的任何贡献,将按照上述方式双许可,不附加任何额外的条款或条件。

Mojang

本项目与Mojang Synergies AB或Microsoft Corporation无关,也未得到其支持。任何使用其服务(包括在此库中运行一些测试)都需要您同意他们的条款

依赖

~3–10MB
~99K SLoC