mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-05-18 09:35:50 +00:00
Minecraft bedrock support (#7)
* Added needed ground stuff * Minecraft bedrock support! * Documentation acknowledgements! * Added utf8_le_undended test, some docs and modified master_querant * Modified query function to comply with the others Before: game query -> protocol query (get port or default port) After: game query (get port or default port) -> protocol query * Modified md files
This commit is contained in:
parent
ae14e37e60
commit
91f8bbb9fe
13 changed files with 319 additions and 107 deletions
|
|
@ -1,39 +1,54 @@
|
|||
use crate::{GDError, GDResult};
|
||||
use crate::protocols::minecraft;
|
||||
use crate::protocols::minecraft::{Server, Response, LegacyGroup};
|
||||
use crate::protocols::minecraft::{Response, LegacyGroup, BedrockResponse};
|
||||
|
||||
/// Query with all the protocol variants one by one (Java -> Legacy (1.6 -> 1.4 -> Beta 1.8)).
|
||||
/// Query with all the protocol variants one by one (Java -> Bedrock -> Legacy (1.6 -> 1.4 -> Beta 1.8)).
|
||||
pub fn query(address: &str, port: Option<u16>) -> GDResult<Response> {
|
||||
minecraft::query(address, port_or_default(port), None)
|
||||
}
|
||||
|
||||
/// Query a Java Server.
|
||||
pub fn query_java(address: &str, port: Option<u16>) -> GDResult<Response> {
|
||||
minecraft::query_specific(Server::Java, address, port_or_default(port), None)
|
||||
}
|
||||
|
||||
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
|
||||
pub fn query_legacy(address: &str, port: Option<u16>) -> GDResult<Response> {
|
||||
let unwrapped_port = port_or_default(port);
|
||||
|
||||
if let Ok(response) = minecraft::query_specific(Server::Legacy(LegacyGroup::V1_6), address, unwrapped_port, None) {
|
||||
if let Ok(response) = query_java(address, port) {
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
if let Ok(response) = minecraft::query_specific(Server::Legacy(LegacyGroup::V1_4), address, unwrapped_port, None) {
|
||||
return Ok(response);
|
||||
if let Ok(response) = query_bedrock(address, port) {
|
||||
return Ok(Response::from_bedrock_response(response));
|
||||
}
|
||||
|
||||
if let Ok(response) = minecraft::query_specific(Server::Legacy(LegacyGroup::VB1_8), address, unwrapped_port, None) {
|
||||
if let Ok(response) = query_legacy(address, port) {
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
Err(GDError::AutoQuery)
|
||||
}
|
||||
|
||||
fn port_or_default(port: Option<u16>) -> u16 {
|
||||
/// Query a Java Server.
|
||||
pub fn query_java(address: &str, port: Option<u16>) -> GDResult<Response> {
|
||||
minecraft::query_java(address, port_or_java_default(port), None)
|
||||
}
|
||||
|
||||
/// Query a (Java) Legacy Server (1.6 -> 1.4 -> Beta 1.8).
|
||||
pub fn query_legacy(address: &str, port: Option<u16>) -> GDResult<Response> {
|
||||
minecraft::query_legacy(address, port_or_java_default(port), None)
|
||||
}
|
||||
|
||||
/// Query a specific (Java) Legacy Server.
|
||||
pub fn query_legacy_specific(group: LegacyGroup, address: &str, port: Option<u16>) -> GDResult<Response> {
|
||||
minecraft::query_legacy_specific(group, address, port_or_java_default(port), None)
|
||||
}
|
||||
|
||||
/// Query a Bedrock Server.
|
||||
pub fn query_bedrock(address: &str, port: Option<u16>) -> GDResult<BedrockResponse> {
|
||||
minecraft::query_bedrock(address, port_or_bedrock_default(port), None)
|
||||
}
|
||||
|
||||
fn port_or_java_default(port: Option<u16>) -> u16 {
|
||||
match port {
|
||||
None => 25565,
|
||||
Some(port) => port
|
||||
}
|
||||
}
|
||||
|
||||
fn port_or_bedrock_default(port: Option<u16>) -> u16 {
|
||||
match port {
|
||||
None => 19132,
|
||||
Some(port) => port
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue