public function registerChunkLoader(ChunkLoader $loader, int $chunkX, int $chunkZ, bool $autoLoad = true)
{
$hash = $loader->getLoaderId();
if (!isset($this->chunkLoaders[$index = Level::chunkHash($chunkX, $chunkZ)])) {
$this->chunkLoaders[$index] = [];
$this->playerLoaders[$index] = [];
} elseif (isset($this->chunkLoaders[$index][$hash])) {
return;
}
$this->chunkLoaders[$index][$hash] = $loader;
if ($loader instanceof Player) {
$this->playerLoaders[$index][$hash] = $loader;
}
if (!isset($this->loaders[$hash])) {
$this->loaderCounter[$hash] = 1;
$this->loaders[$hash] = $loader;
} else {
++$this->loaderCounter[$hash];
}
$this->cancelUnloadChunkRequest($chunkX, $chunkZ);
if ($autoLoad) {
$this->loadChunk($chunkX, $chunkZ);
}
}