mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-10-19 04:15:04 +00:00
Merge branch 'stable'
# Conflicts: # resources/vanilla # src/event/player/PlayerCreationEvent.php
This commit is contained in:
@@ -108,7 +108,16 @@ class PermissionAttachment{
|
||||
if($this->permissions[$name] === $value){
|
||||
return;
|
||||
}
|
||||
unset($this->permissions[$name]); //Fixes children getting overwritten
|
||||
/* Because of the way child permissions are calculated, permissions which were set later in time are
|
||||
* preferred over earlier ones when conflicts in inherited permission values occur.
|
||||
* Here's the kicker: This behaviour depends on PHP's internal array ordering, which maintains insertion
|
||||
* order -- BUT -- assigning to an existing index replaces the old value WITHOUT changing the order.
|
||||
* (what crazy person thought relying on this this was a good idea?!?!?!?!?!)
|
||||
*
|
||||
* This removes the old value so that the new value will be added at the end of the array's internal order
|
||||
* instead of directly taking the place of the older value.
|
||||
*/
|
||||
unset($this->permissions[$name]);
|
||||
}
|
||||
$this->permissions[$name] = $value;
|
||||
$this->permissible->recalculatePermissions();
|
||||
|
@@ -143,7 +143,7 @@ class PermissionManager{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|Permissible[]
|
||||
* @return Permissible[]
|
||||
*/
|
||||
public function getPermissionSubscriptions(string $permission) : array{
|
||||
return $this->permSubs[$permission] ?? [];
|
||||
|
Reference in New Issue
Block a user