xpaw/php-minecraft-query

PHP库,用于查询Minecraft服务器

安装数: 67 227

依赖: 4

建议者: 1

安全性: 0

星标: 727

关注者: 42

分支: 201

4.0.1 2021-06-18 13:18 UTC

This package is auto-updated.

Last update: 2024-08-27 21:18:48 UTC


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将工作。

许可

MIT