Search in sources :

Example 6 with Node

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);
}
Also used : Node(me.lucko.luckperms.api.Node)

Example 7 with Node

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();
    }
}
Also used : LocalizedNode(me.lucko.luckperms.api.LocalizedNode) ImmutableLocalizedNode(me.lucko.luckperms.common.node.ImmutableLocalizedNode) Node(me.lucko.luckperms.api.Node)

Example 8 with Node

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();
    }
}
Also used : LocalizedNode(me.lucko.luckperms.api.LocalizedNode) ImmutableLocalizedNode(me.lucko.luckperms.common.node.ImmutableLocalizedNode) Node(me.lucko.luckperms.api.Node) ImmutableContextSet(me.lucko.luckperms.api.context.ImmutableContextSet)

Example 9 with Node

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;
}
Also used : LocalizedNode(me.lucko.luckperms.api.LocalizedNode) ImmutableLocalizedNode(me.lucko.luckperms.common.node.ImmutableLocalizedNode) Node(me.lucko.luckperms.api.Node)

Example 10 with Node

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;
}
Also used : LocalizedNode(me.lucko.luckperms.api.LocalizedNode) ImmutableLocalizedNode(me.lucko.luckperms.common.node.ImmutableLocalizedNode) Node(me.lucko.luckperms.api.Node) HashSet(java.util.HashSet)

Aggregations

Node (me.lucko.luckperms.api.Node)56 LocalizedNode (me.lucko.luckperms.api.LocalizedNode)15 Group (me.lucko.luckperms.common.model.Group)15 User (me.lucko.luckperms.common.model.User)13 Map (java.util.Map)12 ImmutableLocalizedNode (me.lucko.luckperms.common.node.ImmutableLocalizedNode)12 List (java.util.List)11 NodeFactory (me.lucko.luckperms.common.node.NodeFactory)10 Message (me.lucko.luckperms.common.locale.message.Message)9 LuckPermsPlugin (me.lucko.luckperms.common.plugin.LuckPermsPlugin)9 Sender (me.lucko.luckperms.common.sender.Sender)9 Collectors (java.util.stream.Collectors)8 MutableContextSet (me.lucko.luckperms.api.context.MutableContextSet)8 CommandResult (me.lucko.luckperms.common.command.CommandResult)8 CommandPermission (me.lucko.luckperms.common.command.access.CommandPermission)8 LocaleManager (me.lucko.luckperms.common.locale.LocaleManager)8 CommandSpec (me.lucko.luckperms.common.locale.command.CommandSpec)8 Predicates (me.lucko.luckperms.common.utils.Predicates)8 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)7