mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 01:09:44 +00:00
now we always decode, because it's not safe to assume that we can just grab the rest of the bytes in the packet.
75 lines
2.1 KiB
PHP
75 lines
2.1 KiB
PHP
<?php
|
|
|
|
/*
|
|
*
|
|
* ____ _ _ __ __ _ __ __ ____
|
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* @author PocketMine Team
|
|
* @link http://www.pocketmine.net/
|
|
*
|
|
*
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace pocketmine\network\mcpe\protocol;
|
|
|
|
#include <rules/DataPacket.h>
|
|
|
|
use pocketmine\nbt\tag\CompoundTag;
|
|
use pocketmine\network\mcpe\protocol\serializer\NetworkBinaryStream;
|
|
use pocketmine\network\mcpe\protocol\types\CacheableNbt;
|
|
|
|
class LevelEventGenericPacket extends DataPacket implements ClientboundPacket{
|
|
public const NETWORK_ID = ProtocolInfo::LEVEL_EVENT_GENERIC_PACKET;
|
|
|
|
/** @var int */
|
|
private $eventId;
|
|
/**
|
|
* @var CacheableNbt
|
|
* @phpstan-var CacheableNbt<\pocketmine\nbt\tag\CompoundTag>
|
|
*/
|
|
private $eventData;
|
|
|
|
public static function create(int $eventId, CompoundTag $data) : self{
|
|
$result = new self;
|
|
$result->eventId = $eventId;
|
|
$result->eventData = new CacheableNbt($data);
|
|
return $result;
|
|
}
|
|
|
|
public function getEventId() : int{
|
|
return $this->eventId;
|
|
}
|
|
|
|
/**
|
|
* @phpstan-return CacheableNbt<\pocketmine\nbt\tag\CompoundTag>
|
|
*/
|
|
public function getEventData() : CacheableNbt{
|
|
return $this->eventData;
|
|
}
|
|
|
|
protected function decodePayload(NetworkBinaryStream $in) : void{
|
|
$this->eventId = $in->getVarInt();
|
|
$this->eventData = new CacheableNbt($in->getNbtCompoundRoot());
|
|
}
|
|
|
|
protected function encodePayload(NetworkBinaryStream $out) : void{
|
|
$out->putVarInt($this->eventId);
|
|
$out->put($this->eventData->getEncodedNbt());
|
|
}
|
|
|
|
public function handle(PacketHandlerInterface $handler) : bool{
|
|
return $handler->handleLevelEventGeneric($this);
|
|
}
|
|
}
|