RegionWorldProvider: use morton2d directly instead of abusing chunkHash()

while these currently do the same thing, it's very confusing and creates an unnecessary dependency on World.
This commit is contained in:
Dylan K. Taylor 2020-10-26 15:34:32 +00:00
parent d6ed542fcd
commit 8bab9cc108

View File

@ -33,12 +33,12 @@ use pocketmine\world\format\io\data\JavaWorldData;
use pocketmine\world\format\io\exception\CorruptedChunkException; use pocketmine\world\format\io\exception\CorruptedChunkException;
use pocketmine\world\format\io\WorldData; use pocketmine\world\format\io\WorldData;
use pocketmine\world\generator\Generator; use pocketmine\world\generator\Generator;
use pocketmine\world\World;
use function assert; use function assert;
use function file_exists; use function file_exists;
use function is_dir; use function is_dir;
use function is_int; use function is_int;
use function mkdir; use function mkdir;
use function morton2d_encode;
use function rename; use function rename;
use function scandir; use function scandir;
use function strrpos; use function strrpos;
@ -118,7 +118,7 @@ abstract class RegionWorldProvider extends BaseWorldProvider{
} }
protected function getRegion(int $regionX, int $regionZ) : ?RegionLoader{ protected function getRegion(int $regionX, int $regionZ) : ?RegionLoader{
return $this->regions[World::chunkHash($regionX, $regionZ)] ?? null; return $this->regions[morton2d_encode($regionX, $regionZ)] ?? null;
} }
/** /**
@ -129,7 +129,7 @@ abstract class RegionWorldProvider extends BaseWorldProvider{
} }
protected function loadRegion(int $regionX, int $regionZ) : void{ protected function loadRegion(int $regionX, int $regionZ) : void{
if(!isset($this->regions[$index = World::chunkHash($regionX, $regionZ)])){ if(!isset($this->regions[$index = morton2d_encode($regionX, $regionZ)])){
$path = $this->pathToRegion($regionX, $regionZ); $path = $this->pathToRegion($regionX, $regionZ);
$region = new RegionLoader($path); $region = new RegionLoader($path);
@ -154,7 +154,7 @@ abstract class RegionWorldProvider extends BaseWorldProvider{
} }
protected function unloadRegion(int $regionX, int $regionZ) : void{ protected function unloadRegion(int $regionX, int $regionZ) : void{
if(isset($this->regions[$hash = World::chunkHash($regionX, $regionZ)])){ if(isset($this->regions[$hash = morton2d_encode($regionX, $regionZ)])){
$this->regions[$hash]->close(); $this->regions[$hash]->close();
unset($this->regions[$hash]); unset($this->regions[$hash]);
} }