mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-16 02:38:54 +00:00
Send block updates in batches
This commit is contained in:
parent
29e88d8592
commit
87e54d7a3a
@ -839,6 +839,7 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
* @param bool $optimizeRebuilds
|
* @param bool $optimizeRebuilds
|
||||||
*/
|
*/
|
||||||
public function sendBlocks(array $target, array $blocks, $flags = UpdateBlockPacket::FLAG_NONE, bool $optimizeRebuilds = false){
|
public function sendBlocks(array $target, array $blocks, $flags = UpdateBlockPacket::FLAG_NONE, bool $optimizeRebuilds = false){
|
||||||
|
$packets = [];
|
||||||
if($optimizeRebuilds){
|
if($optimizeRebuilds){
|
||||||
$chunks = [];
|
$chunks = [];
|
||||||
foreach($blocks as $b){
|
foreach($blocks as $b){
|
||||||
@ -853,23 +854,22 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
$first = true;
|
$first = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($b instanceof Block){
|
|
||||||
$pk->x = $b->x;
|
$pk->x = $b->x;
|
||||||
$pk->z = $b->z;
|
|
||||||
$pk->y = $b->y;
|
$pk->y = $b->y;
|
||||||
|
$pk->z = $b->z;
|
||||||
|
|
||||||
|
if($b instanceof Block){
|
||||||
$pk->blockId = $b->getId();
|
$pk->blockId = $b->getId();
|
||||||
$pk->blockData = $b->getDamage();
|
$pk->blockData = $b->getDamage();
|
||||||
$pk->flags = $first ? $flags : UpdateBlockPacket::FLAG_NONE;
|
|
||||||
}else{
|
}else{
|
||||||
$fullBlock = $this->getFullBlock($b->x, $b->y, $b->z);
|
$fullBlock = $this->getFullBlock($b->x, $b->y, $b->z);
|
||||||
$pk->x = $b->x;
|
|
||||||
$pk->z = $b->z;
|
|
||||||
$pk->y = $b->y;
|
|
||||||
$pk->blockId = $fullBlock >> 4;
|
$pk->blockId = $fullBlock >> 4;
|
||||||
$pk->blockData = $fullBlock & 0xf;
|
$pk->blockData = $fullBlock & 0xf;
|
||||||
$pk->flags = $first ? $flags : UpdateBlockPacket::FLAG_NONE;
|
|
||||||
}
|
}
|
||||||
$this->server->broadcastPacket($target, $pk);
|
|
||||||
|
$pk->flags = $first ? $flags : UpdateBlockPacket::FLAG_NONE;
|
||||||
|
|
||||||
|
$packets[] = $pk;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
foreach($blocks as $b){
|
foreach($blocks as $b){
|
||||||
@ -877,25 +877,27 @@ class Level implements ChunkManager, Metadatable{
|
|||||||
if($b === null){
|
if($b === null){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if($b instanceof Block){
|
|
||||||
$pk->x = $b->x;
|
$pk->x = $b->x;
|
||||||
$pk->z = $b->z;
|
|
||||||
$pk->y = $b->y;
|
$pk->y = $b->y;
|
||||||
|
$pk->z = $b->z;
|
||||||
|
|
||||||
|
if($b instanceof Block){
|
||||||
$pk->blockId = $b->getId();
|
$pk->blockId = $b->getId();
|
||||||
$pk->blockData = $b->getDamage();
|
$pk->blockData = $b->getDamage();
|
||||||
$pk->flags = $flags;
|
|
||||||
}else{
|
}else{
|
||||||
$fullBlock = $this->getFullBlock($b->x, $b->y, $b->z);
|
$fullBlock = $this->getFullBlock($b->x, $b->y, $b->z);
|
||||||
$pk->x = $b->x;
|
|
||||||
$pk->z = $b->z;
|
|
||||||
$pk->y = $b->y;
|
|
||||||
$pk->blockId = $fullBlock >> 4;
|
$pk->blockId = $fullBlock >> 4;
|
||||||
$pk->blockData = $fullBlock & 0xf;
|
$pk->blockData = $fullBlock & 0xf;
|
||||||
|
}
|
||||||
|
|
||||||
$pk->flags = $flags;
|
$pk->flags = $flags;
|
||||||
}
|
|
||||||
$this->server->broadcastPacket($target, $pk);
|
$packets[] = $pk;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->server->batchPackets($target, $packets, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function clearCache(bool $full = false){
|
public function clearCache(bool $full = false){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user