PermissibleBase: compute permission diff, do not fire callbacks when diff is empty

this fixes AvailableCommandsPacket getting sent twice when adding a PermissionAttachment.
This commit is contained in:
Dylan K. Taylor
2020-12-02 01:09:29 +00:00
parent 6720e658bd
commit 0634426c26
5 changed files with 42 additions and 10 deletions

View File

@ -765,8 +765,10 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
}
$this->spawned = true;
$this->recheckBroadcastPermissions();
$this->getPermissionRecalculationCallbacks()->add(function() : void{
$this->recheckBroadcastPermissions();
$this->getPermissionRecalculationCallbacks()->add(function(array $changedPermissionsOldValues) : void{
if(isset($changedPermissionsOldValues[Server::BROADCAST_CHANNEL_ADMINISTRATIVE]) || isset($changedPermissionsOldValues[Server::BROADCAST_CHANNEL_USERS])){
$this->recheckBroadcastPermissions();
}
});
$ev = new PlayerJoinEvent($this,