World: replace sendBlocks() with createBlockUpdatePackets()

this allows the caller to decide how the packets should be sent.
This commit is contained in:
Dylan K. Taylor 2020-10-11 16:30:54 +01:00
parent ca9f3020b4
commit eabfd2a37b
2 changed files with 13 additions and 6 deletions

View File

@ -390,7 +390,9 @@ class InGamePacketHandler extends PacketHandler{
}else{
$blocks[] = $blockPos;
}
$this->player->getLocation()->getWorld()->sendBlocks([$this->player], $blocks);
foreach($this->player->getWorld()->createBlockUpdatePackets($blocks) as $packet){
$this->session->sendDataPacket($packet);
}
}
}
@ -616,7 +618,9 @@ class InGamePacketHandler extends PacketHandler{
try{
if(!$block->updateText($this->player, $text)){
$this->player->getWorld()->sendBlocks([$this->player], [$pos]);
foreach($this->player->getWorld()->createBlockUpdatePackets([$pos]) as $updatePacket){
$this->session->sendDataPacket($updatePacket);
}
}
}catch(\UnexpectedValueException $e){
throw BadPacketException::wrap($e);

View File

@ -763,7 +763,9 @@ class World implements ChunkManager{
$p->onChunkChanged($chunk);
}
}else{
$this->sendBlocks($this->getChunkPlayers($chunkX, $chunkZ), $blocks);
foreach($this->createBlockUpdatePackets($blocks) as $packet){
$this->broadcastPacketToPlayersUsingChunk($chunkX, $chunkZ, $packet);
}
}
}
}
@ -822,10 +824,11 @@ class World implements ChunkManager{
}
/**
* @param Player[] $target
* @param Vector3[] $blocks
*
* @return ClientboundPacket[]
*/
public function sendBlocks(array $target, array $blocks) : void{
public function createBlockUpdatePackets(array $blocks) : array{
$packets = [];
foreach($blocks as $b){
@ -842,7 +845,7 @@ class World implements ChunkManager{
}
}
$this->server->broadcastPackets($target, $packets);
return $packets;
}
public function clearCache(bool $force = false) : void{