hydronetwork / bedrock-protocol
Minecraft: Bedrock Edition 协议的 PHP 实现
24.0.0+bedrock-1.20.30
2023-09-24 07:52 UTC
Requires
- php: ^8.1
- ext-json: *
- netresearch/jsonmapper: ^4.0
- 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.10.33
- phpstan/phpstan-phpunit: ^1.0.0
- phpstan/phpstan-strict-rules: ^1.0.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-24 10:19:21 UTC
README
Minecraft: Bedrock Edition 协议的 PHP 实现
此库实现了 Minecraft: Bedrock Edition 协议中的所有数据包,以及一些额外的东西,以支持这些数据包。然而,截至编写本文时,它不包括以下内容:
- 与 JWT 处理/验证相关的内容
- 与加密相关的内容
- 与压缩相关的内容
解码数据包
假设你已经成功地解密并解压缩了一个 Minecraft 数据包,接下来你想要对其进行解码。使用此库,当前是通过 PacketBatch
来实现的,如下所示
foreach(PacketBatchUtils::decodePackets(new BinaryStream($payload), $protocolContext, PacketPool::getInstance()) as $packetObject){ var_dump($packetObject); //tada }
编码数据包
这很简单
/** @var Packet[] $packets */ $stream = new BinaryStream(); PacketBatchUtils::encodePackets($stream, $protocolContext, $packets); $batchPayload = $stream->getBuffer();
脚注
由于此库原本只打算用于 PocketMine-MP,因此边缘处理有些粗糙。最近,这个混乱才从核心代码中分离出来,以便其他东西可以使用它。这意味着可能需要进行 API 变更,并且你的反馈将有助于推动这些变更。如果你想改进 BedrockProtocol,请提出建议,或者更好的是,提交 pull request。如果您想改进 BedrockProtocol,请提出问题或建议,或者最好是发起 pull request。