NetworkSession: incomplete abstraction of SetActorDataPacket handling

this needs to have the metadata properties separated too, but that's a job that's going to get VERY messy.
This commit is contained in:
Dylan K. Taylor
2020-04-29 16:50:52 +01:00
parent d1b28ce17a
commit 4ce6525065
2 changed files with 14 additions and 4 deletions

View File

@@ -48,7 +48,6 @@ use pocketmine\network\mcpe\protocol\AddActorPacket;
use pocketmine\network\mcpe\protocol\AnimatePacket;
use pocketmine\network\mcpe\protocol\MoveActorAbsolutePacket;
use pocketmine\network\mcpe\protocol\RemoveActorPacket;
use pocketmine\network\mcpe\protocol\SetActorDataPacket;
use pocketmine\network\mcpe\protocol\SetActorMotionPacket;
use pocketmine\network\mcpe\protocol\types\entity\Attribute as NetworkAttribute;
use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection;
@@ -1647,17 +1646,18 @@ abstract class Entity{
$player = [$player];
}
$pk = SetActorDataPacket::create($this->getId(), $data ?? $this->getSyncedNetworkData(false));
$data = $data ?? $this->getSyncedNetworkData(false);
foreach($player as $p){
if($p === $this){
continue;
}
$p->getNetworkSession()->sendDataPacket(clone $pk);
$p->getNetworkSession()->syncActorData($this, $data);
}
if($this instanceof Player){
$this->getNetworkSession()->sendDataPacket($pk);
//TODO: bad hack, remove
$this->getNetworkSession()->syncActorData($this, $data);
}
}