arabskills / bedrock-protocol
PHP实现Minecraft: Bedrock Edition协议
dev-master
2024-08-16 15:05 UTC
Requires
- php: ^8.1
- ext-json: *
- pocketmine/binaryutils: ^0.2.0
- pocketmine/color: ^0.2.0 || ^0.3.0
- pocketmine/math: ^0.3.0 || ^0.4.0 || ^1.0.0
- pocketmine/nbt: ^1.0.0
- ramsey/uuid: ^4.1
Requires (Dev)
- phpstan/phpstan: 1.11.9
- phpstan/phpstan-phpunit: ^1.0.0
- phpstan/phpstan-strict-rules: ^1.0.0
- phpunit/phpunit: ^9.5 || ^10.0
This package is not auto-updated.
Last update: 2024-09-18 15:31:07 UTC
README
PHP实现Minecraft: Bedrock Edition协议
此库实现了Minecraft: Bedrock Edition协议中的所有数据包,以及一些额外的东西,以支持这些数据包。然而,在撰写本文时,它不包含以下内容
- 与JWT处理/验证相关的任何内容
- 与加密相关的任何内容
- 与压缩相关的任何内容
解码数据包
假设您已成功解密并解压缩了一个Minecraft数据包,接下来您需要对其进行解码。使用此库,目前是通过PacketBatch
完成的,如下所示
foreach(PacketBatch::decodePackets(new BinaryStream($payload), PacketPool::getInstance()) as $packetObject){ var_dump($packetObject); //tada }
编码数据包
这很简单
/** @var Packet[] $packets */ $stream = new BinaryStream(); PacketBatch::encodePackets($stream, $packets); $batchPayload = $stream->getBuffer();
脚注
由于此库只打算用于PocketMine-MP,因此它的边缘处理有些粗糙。直到最近,这个混乱的东西才从核心中分离出来,以便其他东西可以使用它。这意味着API可能需要更改,并且您的反馈将有助于推动它们。如果您想改进BedrockProtocol,请提出建议,或者更好的是,提出pull requests。