mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-09 03:43:40 +01:00
SPIGOT-3409: Improve performance of registering stupid amounts of permissions in plugin.yml
By: md_5 <git@md-5.net>
This commit is contained in:
parent
310ba479b7
commit
46c820e747
1 changed files with 20 additions and 5 deletions
|
@ -589,6 +589,11 @@ public final class SimplePluginManager implements PluginManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPermission(Permission perm) {
|
public void addPermission(Permission perm) {
|
||||||
|
addPermission(perm, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public void addPermission(Permission perm, boolean dirty) {
|
||||||
String name = perm.getName().toLowerCase(java.util.Locale.ENGLISH);
|
String name = perm.getName().toLowerCase(java.util.Locale.ENGLISH);
|
||||||
|
|
||||||
if (permissions.containsKey(name)) {
|
if (permissions.containsKey(name)) {
|
||||||
|
@ -596,7 +601,7 @@ public final class SimplePluginManager implements PluginManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
permissions.put(name, perm);
|
permissions.put(name, perm);
|
||||||
calculatePermissionDefault(perm);
|
calculatePermissionDefault(perm, dirty);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Permission> getDefaultPermissions(boolean op) {
|
public Set<Permission> getDefaultPermissions(boolean op) {
|
||||||
|
@ -616,21 +621,31 @@ public final class SimplePluginManager implements PluginManager {
|
||||||
defaultPerms.get(true).remove(perm);
|
defaultPerms.get(true).remove(perm);
|
||||||
defaultPerms.get(false).remove(perm);
|
defaultPerms.get(false).remove(perm);
|
||||||
|
|
||||||
calculatePermissionDefault(perm);
|
calculatePermissionDefault(perm, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void calculatePermissionDefault(Permission perm) {
|
private void calculatePermissionDefault(Permission perm, boolean dirty) {
|
||||||
if ((perm.getDefault() == PermissionDefault.OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
|
if ((perm.getDefault() == PermissionDefault.OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
|
||||||
defaultPerms.get(true).add(perm);
|
defaultPerms.get(true).add(perm);
|
||||||
dirtyPermissibles(true);
|
if (dirty) {
|
||||||
|
dirtyPermissibles(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((perm.getDefault() == PermissionDefault.NOT_OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
|
if ((perm.getDefault() == PermissionDefault.NOT_OP) || (perm.getDefault() == PermissionDefault.TRUE)) {
|
||||||
defaultPerms.get(false).add(perm);
|
defaultPerms.get(false).add(perm);
|
||||||
dirtyPermissibles(false);
|
if (dirty) {
|
||||||
|
dirtyPermissibles(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
public void dirtyPermissibles() {
|
||||||
|
dirtyPermissibles(true);
|
||||||
|
dirtyPermissibles(false);
|
||||||
|
}
|
||||||
|
|
||||||
private void dirtyPermissibles(boolean op) {
|
private void dirtyPermissibles(boolean op) {
|
||||||
Set<Permissible> permissibles = getDefaultPermSubscriptions(op);
|
Set<Permissible> permissibles = getDefaultPermSubscriptions(op);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue