Fixed loader counter on Level, closes #1147

This commit is contained in:
Shoghi Cervantes 2015-05-19 14:49:18 +02:00
parent 70a7c4c552
commit 0c6d8b9815
2 changed files with 10 additions and 5 deletions

View File

@ -326,6 +326,7 @@ class PlayerInventory extends BaseInventory{
$pk->eid = $this->getHolder()->getId();
$pk->slots = $slots;
$pk->encode();
$pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING);
$pk->isEncoded = true;
foreach($target as $player){
@ -339,7 +340,7 @@ class PlayerInventory extends BaseInventory{
$pk2->slots = $armor;
$player->dataPacket($pk2);
}else{
$player->dataPacket($pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING));
$player->dataPacket($pk);
}
}
}

View File

@ -160,6 +160,8 @@ class Level implements ChunkManager, Metadatable{
/** @var ChunkLoader[] */
private $loaders = [];
/** @var int[] */
private $loaderCounter = [];
/** @var ChunkLoader[][] */
private $chunkLoaders = [];
/** @var Player[][] */
@ -564,9 +566,10 @@ class Level implements ChunkManager, Metadatable{
}
if(!isset($this->loaders[$hash])){
$this->loaders[$hash] = 1;
$this->loaderCounter[$hash] = 1;
$this->loaders[$hash] = $loader;
}else{
++$this->loaders[$hash];
++$this->loaderCounter[$hash];
}
$this->cancelUnloadChunkRequest($chunkX, $chunkZ);
@ -586,7 +589,8 @@ class Level implements ChunkManager, Metadatable{
$this->unloadChunkRequest($chunkX, $chunkZ, true);
}
if(--$this->loaders[$hash] === 0){
if(--$this->loaderCounter[$hash] === 0){
unset($this->loaderCounter[$hash]);
unset($this->loaders[$hash]);
}
}
@ -800,7 +804,7 @@ class Level implements ChunkManager, Metadatable{
$chunkX = $loader->getX() >> 4;
$chunkZ = $loader->getZ() >> 4;
$index = Level::chunkHash($x, $z);
$index = Level::chunkHash($chunkX, $chunkZ);
$existingLoaders = max(0, isset($this->chunkTickList[$index]) ? $this->chunkTickList[$index] : 0);
$this->chunkTickList[$index] = $existingLoaders + 1;
for($chunk = 0; $chunk < $chunksPerLoader; ++$chunk){