Level: Added global packet broadcast mechanism

This commit is contained in:
Dylan K. Taylor 2018-01-17 17:48:38 +00:00
parent 6813838754
commit f0696f77ef

View File

@ -163,6 +163,8 @@ class Level implements ChunkManager, Metadatable{
/** @var DataPacket[][] */
private $chunkPackets = [];
/** @var DataPacket[] */
private $globalPackets = [];
/** @var float[] */
private $unloadQueue = [];
@ -626,6 +628,15 @@ class Level implements ChunkManager, Metadatable{
}
}
/**
* Queues a DataPacket to be sent to everyone in the Level at the end of the current tick.
*
* @param DataPacket $packet
*/
public function addGlobalPacket(DataPacket $packet) : void{
$this->globalPackets[] = $packet;
}
public function registerChunkLoader(ChunkLoader $loader, int $chunkX, int $chunkZ, bool $autoLoad = true){
$hash = $loader->getLoaderId();
@ -807,6 +818,9 @@ class Level implements ChunkManager, Metadatable{
$this->checkSleep();
}
$this->server->batchPackets($this->players, $this->globalPackets);
$this->globalPackets = [];
foreach($this->chunkPackets as $index => $entries){
Level::getXZ($index, $chunkX, $chunkZ);
$chunkPlayers = $this->getChunkPlayers($chunkX, $chunkZ);