use pocketmine\network\mcpe\protocol\serializer\NetworkBinaryStream; class PhotoTransferPacket extends DataPacket implements ClientboundPacket{ public const NETWORK_ID = ProtocolInfo::PHOTO_TRANSFER_PACKET; /** @var string */ public $photoName; /** @var string */ public $photoData; /** @var string */ public $bookId; //photos are stored in a sibling directory to the games folder (screenshots/(some UUID)/bookID/example.png) protected function decodePayload(NetworkBinaryStream $in) : void{ $this->photoName = $in->getString(); $this->photoData = $in->getString(); $this->bookId = $in->getString(); } protected function encodePayload(NetworkBinaryStream $out) : void{ $out->putString($this->photoName); $out->putString($this->photoData); $out->putString($this->bookId); } public function handle(PacketHandlerInterface $handler) : bool{ return $handler->handlePhotoTransfer($this); } }