use pocketmine\network\mcpe\handler\SessionHandler; class EventPacket extends DataPacket implements ClientboundPacket{ public const NETWORK_ID = ProtocolInfo::EVENT_PACKET; public const TYPE_ACHIEVEMENT_AWARDED = 0; public const TYPE_ENTITY_INTERACT = 1; public const TYPE_PORTAL_BUILT = 2; public const TYPE_PORTAL_USED = 3; public const TYPE_MOB_KILLED = 4; public const TYPE_CAULDRON_USED = 5; public const TYPE_PLAYER_DEATH = 6; public const TYPE_BOSS_KILLED = 7; public const TYPE_AGENT_COMMAND = 8; public const TYPE_AGENT_CREATED = 9; public const TYPE_PATTERN_REMOVED = 10; //??? public const TYPE_COMMANED_EXECUTED = 11; public const TYPE_FISH_BUCKETED = 12; /** @var int */ public $playerRuntimeId; /** @var int */ public $eventData; /** @var int */ public $type; protected function decodePayload() : void{ $this->playerRuntimeId = $this->getEntityRuntimeId(); $this->eventData = $this->getVarInt(); $this->type = $this->getByte(); //TODO: nice confusing mess } protected function encodePayload() : void{ $this->putEntityRuntimeId($this->playerRuntimeId); $this->putVarInt($this->eventData); $this->putByte($this->type); //TODO: also nice confusing mess } public function handle(SessionHandler $handler) : bool{ return $handler->handleEvent($this); } }