Merge branch 'stable' into minor-next

This commit is contained in:
Dylan K. Taylor
2023-11-01 16:39:44 +00:00
8 changed files with 55 additions and 37 deletions

View File

@ -1259,9 +1259,10 @@ class Server{
*/
public function unsubscribeFromBroadcastChannel(string $channelId, CommandSender $subscriber) : void{
if(isset($this->broadcastSubscribers[$channelId][spl_object_id($subscriber)])){
unset($this->broadcastSubscribers[$channelId][spl_object_id($subscriber)]);
if(count($this->broadcastSubscribers[$channelId]) === 0){
if(count($this->broadcastSubscribers[$channelId]) === 1){
unset($this->broadcastSubscribers[$channelId]);
}else{
unset($this->broadcastSubscribers[$channelId][spl_object_id($subscriber)]);
}
}
}

View File

@ -31,7 +31,7 @@ use function str_repeat;
final class VersionInfo{
public const NAME = "PocketMine-MP";
public const BASE_VERSION = "5.7.1";
public const BASE_VERSION = "5.7.2";
public const IS_DEVELOPMENT_BUILD = true;
public const BUILD_CHANNEL = "stable";

View File

@ -72,19 +72,21 @@ class PermissionManager{
}
public function unsubscribeFromPermission(string $permission, PermissibleInternal $permissible) : void{
if(isset($this->permSubs[$permission])){
unset($this->permSubs[$permission][spl_object_id($permissible)]);
if(count($this->permSubs[$permission]) === 0){
if(isset($this->permSubs[$permission][spl_object_id($permissible)])){
if(count($this->permSubs[$permission]) === 1){
unset($this->permSubs[$permission]);
}else{
unset($this->permSubs[$permission][spl_object_id($permissible)]);
}
}
}
public function unsubscribeFromAllPermissions(PermissibleInternal $permissible) : void{
foreach($this->permSubs as $permission => $subs){
unset($this->permSubs[$permission][spl_object_id($permissible)]);
if(count($this->permSubs[$permission]) === 0){
if(count($subs) === 1 && isset($subs[spl_object_id($permissible)])){
unset($this->permSubs[$permission]);
}else{
unset($this->permSubs[$permission][spl_object_id($permissible)]);
}
}
}

View File

@ -510,9 +510,12 @@ class PluginManager{
unset($this->enabledPlugins[$plugin->getDescription()->getName()]);
foreach(Utils::stringifyKeys($this->pluginDependents) as $dependency => $dependentList){
unset($this->pluginDependents[$dependency][$plugin->getDescription()->getName()]);
if(count($this->pluginDependents[$dependency]) === 0){
unset($this->pluginDependents[$dependency]);
if(isset($this->pluginDependents[$dependency][$plugin->getDescription()->getName()])){
if(count($this->pluginDependents[$dependency]) === 1){
unset($this->pluginDependents[$dependency]);
}else{
unset($this->pluginDependents[$dependency][$plugin->getDescription()->getName()]);
}
}
}

View File

@ -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()]);
}
}