From 08f0c9a244d6c7904dfd08248f0f658f3752b181 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 15 Apr 2021 15:20:57 +0100 Subject: [PATCH] Separate writable parts of RegionWorldProvider into WritableRegionWorldProvider --- src/world/format/io/region/Anvil.php | 4 -- .../io/region/LegacyAnvilChunkTrait.php | 5 -- src/world/format/io/region/McRegion.php | 8 --- .../format/io/region/RegionWorldProvider.php | 7 --- .../io/region/WritableRegionWorldProvider.php | 58 +++++++++++++++++++ 5 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 src/world/format/io/region/WritableRegionWorldProvider.php diff --git a/src/world/format/io/region/Anvil.php b/src/world/format/io/region/Anvil.php index dc2c039d4..36fdcfda2 100644 --- a/src/world/format/io/region/Anvil.php +++ b/src/world/format/io/region/Anvil.php @@ -31,10 +31,6 @@ use pocketmine\world\format\SubChunk; class Anvil extends RegionWorldProvider{ use LegacyAnvilChunkTrait; - protected function serializeSubChunk(SubChunk $subChunk) : CompoundTag{ - throw new \RuntimeException("Unsupported"); - } - protected function deserializeSubChunk(CompoundTag $subChunk) : SubChunk{ return new SubChunk(BlockLegacyIds::AIR << 4, [SubChunkConverter::convertSubChunkYZX( self::readFixedSizeByteArray($subChunk, "Blocks", 4096), diff --git a/src/world/format/io/region/LegacyAnvilChunkTrait.php b/src/world/format/io/region/LegacyAnvilChunkTrait.php index c61914e39..c507c8638 100644 --- a/src/world/format/io/region/LegacyAnvilChunkTrait.php +++ b/src/world/format/io/region/LegacyAnvilChunkTrait.php @@ -46,11 +46,6 @@ use function zlib_decode; * @internal */ trait LegacyAnvilChunkTrait{ - - protected function serializeChunk(Chunk $chunk) : string{ - throw new \RuntimeException("Unsupported"); - } - /** * @throws CorruptedChunkException */ diff --git a/src/world/format/io/region/McRegion.php b/src/world/format/io/region/McRegion.php index 1a80f90b6..2b2b68384 100644 --- a/src/world/format/io/region/McRegion.php +++ b/src/world/format/io/region/McRegion.php @@ -39,14 +39,6 @@ use pocketmine\world\format\SubChunk; use function zlib_decode; class McRegion extends RegionWorldProvider{ - - /** - * @throws \RuntimeException - */ - protected function serializeChunk(Chunk $chunk) : string{ - throw new \RuntimeException("Unsupported"); - } - /** * @throws CorruptedChunkException */ diff --git a/src/world/format/io/region/RegionWorldProvider.php b/src/world/format/io/region/RegionWorldProvider.php index a54fce73e..0ff7925a5 100644 --- a/src/world/format/io/region/RegionWorldProvider.php +++ b/src/world/format/io/region/RegionWorldProvider.php @@ -163,8 +163,6 @@ abstract class RegionWorldProvider extends BaseWorldProvider{ } } - abstract protected function serializeChunk(Chunk $chunk) : string; - /** * @throws CorruptedChunkException */ @@ -224,11 +222,6 @@ abstract class RegionWorldProvider extends BaseWorldProvider{ return null; } - public function saveChunk(int $chunkX, int $chunkZ, Chunk $chunk) : void{ - self::getRegionIndex($chunkX, $chunkZ, $regionX, $regionZ); - $this->loadRegion($regionX, $regionZ)->writeChunk($chunkX & 0x1f, $chunkZ & 0x1f, $this->serializeChunk($chunk)); - } - private function createRegionIterator() : \RegexIterator{ return new \RegexIterator( new \FilesystemIterator( diff --git a/src/world/format/io/region/WritableRegionWorldProvider.php b/src/world/format/io/region/WritableRegionWorldProvider.php new file mode 100644 index 000000000..156caa3e6 --- /dev/null +++ b/src/world/format/io/region/WritableRegionWorldProvider.php @@ -0,0 +1,58 @@ +loadRegion($regionX, $regionZ)->writeChunk($chunkX & 0x1f, $chunkZ & 0x1f, $this->serializeChunk($chunk)); + } +}