From c8c0a1533c5c80e976461e92674904d98230a30c Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 29 Apr 2020 17:00:47 +0100 Subject: [PATCH] NetworkSession: seal up actor removal behind API --- src/entity/Entity.php | 3 +-- src/network/mcpe/NetworkSession.php | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/entity/Entity.php b/src/entity/Entity.php index 4613006aa..b75d99dcd 100644 --- a/src/entity/Entity.php +++ b/src/entity/Entity.php @@ -47,7 +47,6 @@ use pocketmine\network\mcpe\protocol\ActorEventPacket; 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\SetActorMotionPacket; use pocketmine\network\mcpe\protocol\types\entity\Attribute as NetworkAttribute; use pocketmine\network\mcpe\protocol\types\entity\EntityMetadataCollection; @@ -1560,7 +1559,7 @@ abstract class Entity{ $id = spl_object_id($player); if(isset($this->hasSpawned[$id])){ if($send){ - $player->getNetworkSession()->sendDataPacket(RemoveActorPacket::create($this->id)); + $player->getNetworkSession()->onEntityRemoved($this); } unset($this->hasSpawned[$id]); } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index c82bf2f06..0d1ae96a3 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -67,6 +67,7 @@ use pocketmine\network\mcpe\protocol\PacketDecodeException; use pocketmine\network\mcpe\protocol\PacketPool; use pocketmine\network\mcpe\protocol\PlayerListPacket; use pocketmine\network\mcpe\protocol\PlayStatusPacket; +use pocketmine\network\mcpe\protocol\RemoveActorPacket; use pocketmine\network\mcpe\protocol\serializer\PacketBatch; use pocketmine\network\mcpe\protocol\ServerboundPacket; use pocketmine\network\mcpe\protocol\ServerToClientHandshakePacket; @@ -709,6 +710,10 @@ class NetworkSession{ $this->sendDataPacket(MobEffectPacket::remove($entity->getId(), $effect->getId())); } + public function onEntityRemoved(Entity $entity) : void{ + $this->sendDataPacket(RemoveActorPacket::create($entity->getId())); + } + public function syncAvailableCommands() : void{ $pk = new AvailableCommandsPacket(); foreach($this->server->getCommandMap()->getCommands() as $name => $command){