xpaw / php-minecraft-query
PHP库,用于查询Minecraft服务器
4.0.1
2021-06-18 13:18 UTC
Requires
- php: >=7.0
README
此库可用于查询Minecraft服务器的基本信息。
⚠️ 请不要在无法从服务器获取信息时创建问题,除非你能证明库中存在错误。
ping和查询之间的差异
有两种方法可以获取Minecraft服务器的信息。
Ping
Ping协议从Minecraft 1.7版本开始添加,用于查询服务器以获取最小量的信息(主机名、motd、图标和玩家样本)。这更容易使用,并且不需要在服务器端进行额外设置。它使用与连接到您的服务器相同的端口的TCP协议。
MinecraftPing
类包含一个QueryOldPre17
方法,可用于查询1.6或更早版本的版本。
查询
此方法使用GameSpy4协议,需要在您的server.properties
中启用query
监听器,如下所示:
enable-query=true
query.port=25565
查询允许请求服务器插件和玩家的完整列表,但此方法更容易损坏,因此如果您不需要所有这些信息,请坚持使用ping方法,因为它更可靠。
RCON
您可以使用Source RCON协议远程向Minecraft服务器发送控制台命令。使用PHP Source Query库满足您的RCON需求。
SRV DNS记录
此库会自动尝试解析SRV记录。如果您不希望这样做,请将false
作为构造函数的第四个参数传递(在超时参数之后)。
示例
<?php require __DIR__ . '/src/MinecraftPing.php'; require __DIR__ . '/src/MinecraftPingException.php'; use xPaw\MinecraftPing; use xPaw\MinecraftPingException; try { $Query = new MinecraftPing( 'localhost', 25565 ); print_r( $Query->Query() ); } catch( MinecraftPingException $e ) { echo $e->getMessage(); } finally { if( $Query ) { $Query->Close(); } } ?>
如果您想从使用低于Minecraft 1.7版本的服务器获取ping
信息,则应使用QueryOldPre17
函数而不是Query
。
如果服务器启用了查询(enable-query
),则可以使用MinecraftQuery
获取更多关于服务器的信息。
<?php require __DIR__ . '/src/MinecraftQuery.php'; require __DIR__ . '/src/MinecraftQueryException.php'; use xPaw\MinecraftQuery; use xPaw\MinecraftQueryException; $Query = new MinecraftQuery( ); try { $Query->Connect( 'localhost', 25565 ); print_r( $Query->GetInfo( ) ); print_r( $Query->GetPlayers( ) ); } catch( MinecraftQueryException $e ) { echo $e->getMessage( ); } ?>
对于基岩服务器(MCPE),请使用ConnectBedrock
函数代替Connect
,然后GetInfo
将工作。