use of me.lucko.luckperms.api.Node in project LuckPerms by lucko.
the class Group method getDisplayName.
public Optional<String> getDisplayName() {
String name = null;
for (Node n : getEnduringNodes().get(ImmutableContextSet.empty())) {
if (!n.getPermission().startsWith("displayname.")) {
continue;
}
name = n.getPermission().substring("displayname.".length());
break;
}
if (name != null) {
return Optional.of(name);
}
name = getPlugin().getConfiguration().get(ConfigKeys.GROUP_NAME_REWRITES).get(getObjectName());
return name == null || name.equals(getObjectName()) ? Optional.empty() : Optional.of(name);
}
use of me.lucko.luckperms.api.Node in project LuckPerms by lucko.
the class NodeMap method setContent.
void setContent(Set<Node> set) {
this.lock.lock();
try {
this.map.clear();
this.inheritanceMap.clear();
for (Node n : set) {
add(n);
}
} finally {
this.lock.unlock();
}
}
use of me.lucko.luckperms.api.Node in project LuckPerms by lucko.
the class NodeMap method removeIf.
boolean removeIf(ContextSet contextSet, Predicate<? super Node> predicate) {
this.lock.lock();
try {
ImmutableContextSet context = contextSet.makeImmutable();
SortedSet<Node> nodes = this.map.get(context);
boolean ret = nodes.removeIf(predicate);
if (ret) {
this.inheritanceMap.get(context).removeIf(predicate);
}
return ret;
} finally {
this.lock.unlock();
}
}
use of me.lucko.luckperms.api.Node in project LuckPerms by lucko.
the class NodeMap method auditTemporaryNodes.
boolean auditTemporaryNodes(@Nullable Set<Node> removed) {
boolean work = false;
this.lock.lock();
try {
Iterator<Node> it = this.map.values().iterator();
while (it.hasNext()) {
Node entry = it.next();
if (entry.hasExpired()) {
if (removed != null) {
removed.add(entry);
}
if (entry.isGroupNode() && entry.getValuePrimitive()) {
this.inheritanceMap.remove(entry.getFullContexts().makeImmutable(), entry);
}
work = true;
it.remove();
}
}
} finally {
this.lock.unlock();
}
return work;
}
use of me.lucko.luckperms.api.Node in project LuckPerms by lucko.
the class PermissionHolder method auditTemporaryPermissions.
/**
* Removes temporary permissions that have expired
*
* @return true if permissions had expired and were removed
*/
public boolean auditTemporaryPermissions() {
// audit temporary nodes first, but don't track ones which are removed
// we don't call events for transient nodes
boolean transientWork = this.transientNodes.auditTemporaryNodes(null);
ImmutableCollection<Node> before = getEnduringNodes().values();
Set<Node> removed = new HashSet<>();
boolean enduringWork = this.enduringNodes.auditTemporaryNodes(removed);
if (enduringWork) {
// invalidate
invalidateCache();
// call event
ImmutableCollection<Node> after = getEnduringNodes().values();
for (Node r : removed) {
this.plugin.getEventFactory().handleNodeRemove(r, this, before, after);
}
}
if (transientWork && !enduringWork) {
invalidateCache();
}
return transientWork || enduringWork;
}
Aggregations