publicuhc / minecraft-auth
用于认证检查的模拟Minecraft服务器
Requires
- ext-mcrypt: *
- marc-mabe/php-enum: ~1.2
- phpseclib/phpseclib: ~0.3
- publicuhc/php-yggdrasil: ~1.0
- react/react: ~0.4
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-28 16:36:15 UTC
README
PHP库,用于运行一个模拟的Minecraft服务器,该服务器检查与会话服务器上的认证是否正确,并在之后将玩家踢出。它具有一个回调函数来更改断开连接的消息。我使用它来验证码,以链接Minecraft账户,而不需要输入密码。
安装
通过composer安装,将"publicuhc/minecraft-auth": "dev-master"
添加到您的composer require中。
依赖项:将在安装时由composer处理,需要PHP mcrypt扩展才能运行。(您可以在linux上使用apt-get install php5-mcrypt
或类似命令进行安装)
示例用法
use PublicUHC\MinecraftAuth\AuthServer\AuthServer;
$server = new AuthServer(25565, '0.0.0.0');
$server->on('login_success', function($username, $uuid, DisconnectPacket $packet){
echo "USERNAME: $username, UUID: $uuid\n";
$packet->setReason("USERNAME: $username, UUID: $uuid");
});
$server->on('status_request', function(StatusResponsePacket $packet) {
$packet->setDescription('test server')
->setMaxPlayers(10)
->setOnlineCount(1000)
->setVersion('1.8+')
->setProtocol(47);
});
$server->start();
说明
new AuthServer(25565, '0.0.0.0');
创建一个新的认证服务器,绑定到端口号25565,并在所有接口(0.0.0.0)上。如果省略第二个参数,则将绑定到127.0.0.1以进行本地连接。
$server->on('login_success', function($username, $uuid, DisconnectPacket $packet){
echo "USERNAME: $username, UUID: $uuid\n";
$packet->setReason("USERNAME: $username, UUID: $uuid");
});
这是登录成功事件。每当建立成功连接时都会调用此事件。用户名是连接的客户端的用户名,UUID是Minecraft UUID(不带-s)。$packet是一个DisconnectPacket对象,将在事件后发送给客户端。使用setReason(设置一个数组/字符串原因,在发送前将被json编码)或setReasonJSON(设置一个预编码的json字符串)。
$server->on('status_request', function(StatusResponsePacket $packet) {
$packet->setDescription('test')
->setMaxPlayers(10)
->setOnlineCount(1000)
->setVersion('1.8+')
->setProtocol(47);
->setOnlinePlayers([
[
'name' => 'Eluinhost',
'id' => '000000000000-0000-0000-0000-00000000'
]
]);
});
这是状态请求事件。每当客户端请求服务器列表数据时都会调用此事件。
->setDescription(string); - 设置在服务器列表中显示的描述
->setMaxPlayers(int) - 列表中的/后面的数字
->setOnlineCount(int) - 列表中的/前面的数字
->setVersion(string) - 如果客户端连接到不同的协议,则将显示此版本号而不是最小/最大玩家数
->setProtocol(47) - 设置要设置的协议版本,我们只接受47,因此要么将其设置为47,要么省略它 ->setOnlinePlayers(array) - 当悬停在在线计数上时显示的玩家名称数组。有关数组格式,请检查PHPDoc注释
->setFavicon(string) - 文本格式的图像(例如,data:image/png;base64,DATAHERE)
所有这些方法都可以忽略。如果没有设置,将使用以下值
->setDescription(string); - 默认:§4▁§e▂§4▃§e▄§4▅§e▆§4▇§e█ §4§l PHPAuthServer §e█§4▇§e▆§4▅§e▄§4▃§e▂§4▁ §c▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
->setMaxPlayers(int) - 默认:-1
->setOnlineCount(int) - 默认:-1
->setVersion(string) - 默认:1.8+ ->setProtocol(47) - 默认:47 ->setOnlinePlayers(array) - 默认:[]
->setFavicon(string) - 默认:null(没有favicon)
由于PHP的单线程性质,所有事件都将阻止其他代码。如果在其中运行任何长时间运行的过程,它将停止处理其他连接,直到完成。要么保持计算量低,要么进行进程分叉以运行长时间运行代码。
`$server->start()`
启动服务器,此方法之后的任何方法都不会被调用,因为它会阻塞,确保在调用此方法之前运行所需的所有内容。