feat: minetest support (#218)

* feat: initial minetest support

* move player to master, remove comments

* add markdown lines

* oops, change player namespace

* fix some edge cases

* add entry to responses, tweak field names
This commit is contained in:
CosminPerRam 2024-10-30 13:24:40 +02:00 committed by GitHub
parent 30ae60e4dc
commit bcc92d17df
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 246 additions and 59 deletions

View file

@ -0,0 +1,23 @@
use crate::minetest::Response;
use crate::{minetest_master_server, GDErrorKind, GDResult, TimeoutSettings};
use std::net::IpAddr;
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response> { query_with_timeout(address, port, &None) }
pub fn query_with_timeout(
address: &IpAddr,
port: Option<u16>,
timeout_settings: &Option<TimeoutSettings>,
) -> GDResult<Response> {
let address = address.to_string();
let port = port.unwrap_or(30000);
let servers = minetest_master_server::query(timeout_settings.unwrap_or_default())?;
for server in servers.list {
if server.ip == address && server.port == port {
return Ok(server.into());
}
}
Err(GDErrorKind::AutoQuery.context("Server not found in the master query list."))
}