mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 17:59:48 +00:00
Merge branch 'stable' into minor-next
This commit is contained in:
@ -826,14 +826,15 @@ class World implements ChunkManager{
|
||||
$chunkHash = World::chunkHash($chunkX, $chunkZ);
|
||||
$loaderId = spl_object_id($loader);
|
||||
if(isset($this->chunkLoaders[$chunkHash][$loaderId])){
|
||||
unset($this->chunkLoaders[$chunkHash][$loaderId]);
|
||||
if(count($this->chunkLoaders[$chunkHash]) === 0){
|
||||
if(count($this->chunkLoaders[$chunkHash]) === 1){
|
||||
unset($this->chunkLoaders[$chunkHash]);
|
||||
$this->unloadChunkRequest($chunkX, $chunkZ, true);
|
||||
if(isset($this->chunkPopulationRequestMap[$chunkHash]) && !isset($this->activeChunkPopulationTasks[$chunkHash])){
|
||||
$this->chunkPopulationRequestMap[$chunkHash]->reject();
|
||||
unset($this->chunkPopulationRequestMap[$chunkHash]);
|
||||
}
|
||||
}else{
|
||||
unset($this->chunkLoaders[$chunkHash][$loaderId]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -861,11 +862,12 @@ class World implements ChunkManager{
|
||||
public function unregisterChunkListener(ChunkListener $listener, int $chunkX, int $chunkZ) : void{
|
||||
$hash = World::chunkHash($chunkX, $chunkZ);
|
||||
if(isset($this->chunkListeners[$hash])){
|
||||
unset($this->chunkListeners[$hash][spl_object_id($listener)]);
|
||||
unset($this->playerChunkListeners[$hash][spl_object_id($listener)]);
|
||||
if(count($this->chunkListeners[$hash]) === 0){
|
||||
if(count($this->chunkListeners[$hash]) === 1){
|
||||
unset($this->chunkListeners[$hash]);
|
||||
unset($this->playerChunkListeners[$hash]);
|
||||
}else{
|
||||
unset($this->chunkListeners[$hash][spl_object_id($listener)]);
|
||||
unset($this->playerChunkListeners[$hash][spl_object_id($listener)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1219,13 +1221,14 @@ class World implements ChunkManager{
|
||||
$chunkHash = World::chunkHash($chunkX, $chunkZ);
|
||||
$tickerId = spl_object_id($ticker);
|
||||
if(isset($this->registeredTickingChunks[$chunkHash][$tickerId])){
|
||||
unset($this->registeredTickingChunks[$chunkHash][$tickerId]);
|
||||
if(count($this->registeredTickingChunks[$chunkHash]) === 0){
|
||||
if(count($this->registeredTickingChunks[$chunkHash]) === 1){
|
||||
unset(
|
||||
$this->registeredTickingChunks[$chunkHash],
|
||||
$this->recheckTickingChunks[$chunkHash],
|
||||
$this->validTickingChunks[$chunkHash]
|
||||
);
|
||||
}else{
|
||||
unset($this->registeredTickingChunks[$chunkHash][$tickerId]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2658,9 +2661,10 @@ class World implements ChunkManager{
|
||||
$pos = $this->entityLastKnownPositions[$entity->getId()];
|
||||
$chunkHash = World::chunkHash($pos->getFloorX() >> Chunk::COORD_BIT_SIZE, $pos->getFloorZ() >> Chunk::COORD_BIT_SIZE);
|
||||
if(isset($this->entitiesByChunk[$chunkHash][$entity->getId()])){
|
||||
unset($this->entitiesByChunk[$chunkHash][$entity->getId()]);
|
||||
if(count($this->entitiesByChunk[$chunkHash]) === 0){
|
||||
if(count($this->entitiesByChunk[$chunkHash]) === 1){
|
||||
unset($this->entitiesByChunk[$chunkHash]);
|
||||
}else{
|
||||
unset($this->entitiesByChunk[$chunkHash][$entity->getId()]);
|
||||
}
|
||||
}
|
||||
unset($this->entityLastKnownPositions[$entity->getId()]);
|
||||
@ -2693,9 +2697,10 @@ class World implements ChunkManager{
|
||||
if($oldChunkX !== $newChunkX || $oldChunkZ !== $newChunkZ){
|
||||
$oldChunkHash = World::chunkHash($oldChunkX, $oldChunkZ);
|
||||
if(isset($this->entitiesByChunk[$oldChunkHash][$entity->getId()])){
|
||||
unset($this->entitiesByChunk[$oldChunkHash][$entity->getId()]);
|
||||
if(count($this->entitiesByChunk[$oldChunkHash]) === 0){
|
||||
if(count($this->entitiesByChunk[$oldChunkHash]) === 1){
|
||||
unset($this->entitiesByChunk[$oldChunkHash]);
|
||||
}else{
|
||||
unset($this->entitiesByChunk[$oldChunkHash][$entity->getId()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user