mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-28 22:30:01 +00:00
There are a few motivations here: 1) Less boilerplate code (this can be written inline) 2) It's possible to provide multiple constructors for different packet variations to reduce the chance of errors. 3) It makes things catch fire on updates in ways that static analysers can understand.
60 lines
1.7 KiB
PHP
60 lines
1.7 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\network\mcpe\handler\SessionHandler;
|
|
|
|
class SetEntityDataPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{ //TODO: check why this is serverbound
|
|
public const NETWORK_ID = ProtocolInfo::SET_ENTITY_DATA_PACKET;
|
|
|
|
/** @var int */
|
|
public $entityRuntimeId;
|
|
/** @var array */
|
|
public $metadata;
|
|
|
|
public static function create(int $entityRuntimeId, array $metadata) : self{
|
|
$result = new self;
|
|
$result->entityRuntimeId = $entityRuntimeId;
|
|
$result->metadata = $metadata;
|
|
return $result;
|
|
}
|
|
|
|
protected function decodePayload() : void{
|
|
$this->entityRuntimeId = $this->getEntityRuntimeId();
|
|
$this->metadata = $this->getEntityMetadata();
|
|
}
|
|
|
|
protected function encodePayload() : void{
|
|
$this->putEntityRuntimeId($this->entityRuntimeId);
|
|
$this->putEntityMetadata($this->metadata);
|
|
}
|
|
|
|
public function handle(SessionHandler $handler) : bool{
|
|
return $handler->handleSetEntityData($this);
|
|
}
|
|
}
|