Block saving chunks too big

This commit is contained in:
Shoghi Cervantes 2015-01-11 15:48:08 +01:00
parent f8c144be31
commit f30986d187
No known key found for this signature in database
GPG Key ID: 78464DB0A7837F89
2 changed files with 8 additions and 2 deletions

View File

@ -619,9 +619,9 @@ class Level implements ChunkManager, Metadatable{
foreach($this->chunkTickList as $index => $players){ foreach($this->chunkTickList as $index => $players){
Level::getXZ($index, $chunkX, $chunkZ); Level::getXZ($index, $chunkX, $chunkZ);
$chunk = $this->getChunk($chunkX, $chunkZ, false);
if($chunk === null){
if(!isset($this->chunks[$index]) or ($chunk = $this->getChunk($chunkX, $chunkZ, false)) === null){
unset($this->chunkTickList[$index]); unset($this->chunkTickList[$index]);
continue; continue;
}elseif($players <= 0){ }elseif($players <= 0){
@ -629,6 +629,8 @@ class Level implements ChunkManager, Metadatable{
} }
foreach($chunk->getEntities() as $entity){ foreach($chunk->getEntities() as $entity){
$entity->scheduleUpdate(); $entity->scheduleUpdate();
} }

View File

@ -32,6 +32,7 @@ use pocketmine\nbt\tag\Int;
use pocketmine\nbt\tag\IntArray; use pocketmine\nbt\tag\IntArray;
use pocketmine\nbt\tag\Long; use pocketmine\nbt\tag\Long;
use pocketmine\utils\Binary; use pocketmine\utils\Binary;
use pocketmine\utils\ChunkException;
use pocketmine\utils\MainLogger; use pocketmine\utils\MainLogger;
class RegionLoader{ class RegionLoader{
@ -182,6 +183,9 @@ class RegionLoader{
protected function saveChunk($x, $z, $chunkData){ protected function saveChunk($x, $z, $chunkData){
$length = strlen($chunkData) + 1; $length = strlen($chunkData) + 1;
if($length + 4 > self::MAX_SECTOR_LENGTH){
throw new ChunkException("Chunk is too big! ".($length + 4)." > ".self::MAX_SECTOR_LENGTH);
}
$sectors = (int) ceil(($length + 4) / 4096); $sectors = (int) ceil(($length + 4) / 4096);
$index = self::getChunkOffset($x, $z); $index = self::getChunkOffset($x, $z);
if($this->locationTable[$index][1] < $sectors){ if($this->locationTable[$index][1] < $sectors){