0
0
mirror of https://github.com/pmmp/BedrockProtocol.git synced 2024-05-13 00:09:59 +00:00
An implementation of the Minecraft: Bedrock Edition protocol in PHP
Go to file
2024-04-05 18:53:35 +01:00
.github Bump actions/cache from 3 to 4 (#221) 2024-02-16 16:50:46 +00:00
.idea Make PhpStorm styles consistent with php-cs-fixer 2021-11-08 16:26:25 +00:00
src Protocol changes for 1.20.80.24 beta 2024-04-05 18:53:35 +01:00
tests Fix CS in tests 2024-02-26 16:18:34 +00:00
tools Make codegen stuff a bit more developer friendly 2024-03-13 14:35:54 +00:00
.editorconfig new repo who dis 2021-07-14 15:23:03 +01:00
.gitattributes new repo who dis 2021-07-14 15:23:03 +01:00
.gitignore added .php-cs-fixer.cache to gitignore 2021-11-01 23:23:42 +00:00
.php-cs-fixer.php Run CS fixer on tools directory 2024-03-13 14:34:51 +00:00
composer.json Update phpstan/phpstan requirement from 1.10.39 to 1.10.59 (#226) 2024-02-26 14:27:37 +00:00
LICENSE new repo who dis 2021-07-14 15:23:03 +01:00
phpstan.neon.dist Protocol changes for 1.19.10 2022-07-13 00:47:47 +01:00
README.md Added improved APIs for PacketBatch 2023-02-19 15:13:36 +00:00

BedrockProtocol

CI

An implementation of the Minecraft: Bedrock Edition protocol in PHP

This library implements all of the packets in the Minecraft: Bedrock Edition protocol, as well as a few extra things needed to support them. However, at the time of writing, it does not include the following:

  • Anything related to JWT handling/verification
  • Anything related to encryption
  • Anything related to compression

Decoding packets

Assuming you've decrypted and decompressed a Minecraft packet successfully, you're next going to want to decode it. With this library, that's currently done using PacketBatch, like so:

foreach(PacketBatchUtils::decodePackets(new BinaryStream($payload), $protocolContext, PacketPool::getInstance()) as $packetObject){
    var_dump($packetObject); //tada
}

Encoding packets

This is easy:

/** @var Packet[] $packets */
$stream = new BinaryStream();
PacketBatchUtils::encodePackets($stream, $protocolContext, $packets);
$batchPayload = $stream->getBuffer();

Footnotes

This library is a little rough around the edges, since it's only ever been intended for PocketMine-MP usage. It's only recently that this mess has been separated from the core to allow it to be used by other things. This means that API changes might be in order, and your feedback would be nice to drive them. If you want to improve BedrockProtocol, please open issues with suggestions, or better, make pull requests.