diff --git a/src/network/mcpe/NetworkBroadcastUtils.php b/src/network/mcpe/NetworkBroadcastUtils.php index ce173119e..76ae98738 100644 --- a/src/network/mcpe/NetworkBroadcastUtils.php +++ b/src/network/mcpe/NetworkBroadcastUtils.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\network\mcpe; -use pocketmine\event\server\DataPacketSendEvent; use pocketmine\network\mcpe\protocol\ClientboundPacket; use pocketmine\player\Player; use pocketmine\timings\Timings; @@ -57,12 +56,6 @@ final class NetworkBroadcastUtils{ return false; } - $ev = new DataPacketSendEvent($sessions, $packets); - $ev->call(); - if($ev->isCancelled()){ - return false; - } - /** @var PacketBroadcaster[] $uniqueBroadcasters */ $uniqueBroadcasters = []; /** @var NetworkSession[][] $broadcasterTargets */ diff --git a/src/network/mcpe/StandardPacketBroadcaster.php b/src/network/mcpe/StandardPacketBroadcaster.php index 1ed0f16ae..da9fa5101 100644 --- a/src/network/mcpe/StandardPacketBroadcaster.php +++ b/src/network/mcpe/StandardPacketBroadcaster.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace pocketmine\network\mcpe; +use pocketmine\event\server\DataPacketSendEvent; use pocketmine\network\mcpe\protocol\serializer\PacketBatch; use pocketmine\network\mcpe\protocol\serializer\PacketSerializer; use pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext; @@ -41,6 +42,15 @@ final class StandardPacketBroadcaster implements PacketBroadcaster{ ){} public function broadcastPackets(array $recipients, array $packets) : void{ + //TODO: this shouldn't really be called here, since the broadcaster might be replaced by an alternative + //implementation that doesn't fire events + $ev = new DataPacketSendEvent($recipients, $packets); + $ev->call(); + if($ev->isCancelled()){ + return; + } + $packets = $ev->getPackets(); + $compressors = []; /** @var NetworkSession[][] $targetsByCompressor */