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{ }else{
$blocks[] = $blockPos; $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{ try{
if(!$block->updateText($this->player, $text)){ 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){ }catch(\UnexpectedValueException $e){
throw BadPacketException::wrap($e); throw BadPacketException::wrap($e);

View File

@ -763,7 +763,9 @@ class World implements ChunkManager{
$p->onChunkChanged($chunk); $p->onChunkChanged($chunk);
} }
}else{ }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 * @param Vector3[] $blocks
*
* @return ClientboundPacket[]
*/ */
public function sendBlocks(array $target, array $blocks) : void{ public function createBlockUpdatePackets(array $blocks) : array{
$packets = []; $packets = [];
foreach($blocks as $b){ 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{ public function clearCache(bool $force = false) : void{