mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-12 06:25:32 +00:00
PopulationTask: use modification counters to detect changed chunks
instead of using terrain dirty flags, which aren't suitable for this purpose
This commit is contained in:
parent
a5418a019d
commit
d4cbde6f10
@ -89,6 +89,7 @@ class PopulationTask extends AsyncTask{
|
|||||||
|
|
||||||
/** @var Chunk[] $chunks */
|
/** @var Chunk[] $chunks */
|
||||||
$chunks = [];
|
$chunks = [];
|
||||||
|
$oldModCounts = [];
|
||||||
|
|
||||||
$chunk = $this->chunk !== null ? FastChunkSerializer::deserializeTerrain($this->chunk) : null;
|
$chunk = $this->chunk !== null ? FastChunkSerializer::deserializeTerrain($this->chunk) : null;
|
||||||
|
|
||||||
@ -101,6 +102,7 @@ class PopulationTask extends AsyncTask{
|
|||||||
$chunks[$i] = null;
|
$chunks[$i] = null;
|
||||||
}else{
|
}else{
|
||||||
$chunks[$i] = FastChunkSerializer::deserializeTerrain($ck);
|
$chunks[$i] = FastChunkSerializer::deserializeTerrain($ck);
|
||||||
|
$oldModCounts[$i] = $chunks[$i]->getModificationCount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +126,8 @@ class PopulationTask extends AsyncTask{
|
|||||||
$this->chunk = FastChunkSerializer::serializeTerrain($chunk);
|
$this->chunk = FastChunkSerializer::serializeTerrain($chunk);
|
||||||
|
|
||||||
foreach($chunks as $i => $c){
|
foreach($chunks as $i => $c){
|
||||||
$this->{"chunk$i"} = $c->isTerrainDirty() ? FastChunkSerializer::serializeTerrain($c) : null;
|
$oldModCount = $oldModCounts[$i] ?? 0;
|
||||||
|
$this->{"chunk$i"} = $oldModCount !== $c->getModificationCounter() ? FastChunkSerializer::serializeTerrain($c) : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user