diff --git a/common/src/main/java/me/lucko/luckperms/common/caching/MetaHolder.java b/common/src/main/java/me/lucko/luckperms/common/caching/MetaHolder.java index 0fdf76ab7..eb42b2287 100644 --- a/common/src/main/java/me/lucko/luckperms/common/caching/MetaHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/caching/MetaHolder.java @@ -24,6 +24,7 @@ package me.lucko.luckperms.common.caching; import lombok.Getter; import lombok.ToString; +import me.lucko.luckperms.api.Node; import java.util.*; @@ -38,4 +39,27 @@ public class MetaHolder { private final SortedMap prefixes = new TreeMap<>(Comparator.reverseOrder()); private final SortedMap suffixes = new TreeMap<>(Comparator.reverseOrder()); + public void accumulateNode(Node n) { + if (n.isMeta()) { + Map.Entry entry = n.getMeta(); + if (!meta.containsKey(entry.getKey())) { + meta.put(entry.getKey(), entry.getValue()); + } + } + + if (n.isPrefix()) { + Map.Entry value = n.getPrefix(); + if (!prefixes.containsKey(value.getKey())) { + prefixes.put(value.getKey(), value.getValue()); + } + } + + if (n.isSuffix()) { + Map.Entry value = n.getSuffix(); + if (!suffixes.containsKey(value.getKey())) { + suffixes.put(value.getKey(), value.getValue()); + } + } + } + } diff --git a/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java index 7af8da960..9ee246535 100644 --- a/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/core/PermissionHolder.java @@ -220,8 +220,6 @@ public abstract class PermissionHolder { it.remove(); } } - - } if (work) { @@ -309,29 +307,6 @@ public abstract class PermissionHolder { return all; } - private static void accumulateMetaNode(Node n, MetaHolder holder) { - if (n.isPrefix()) { - Map.Entry value = n.getPrefix(); - if (!holder.getPrefixes().containsKey(value.getKey())) { - holder.getPrefixes().put(value.getKey(), value.getValue()); - } - } - - if (n.isSuffix()) { - Map.Entry value = n.getSuffix(); - if (!holder.getSuffixes().containsKey(value.getKey())) { - holder.getSuffixes().put(value.getKey(), value.getValue()); - } - } - - if (n.isMeta()) { - Map.Entry meta = n.getMeta(); - if (!holder.getMeta().containsKey(meta.getKey())) { - holder.getMeta().put(meta.getKey(), meta.getValue()); - } - } - } - public MetaHolder accumulateMeta(MetaHolder holder, List excludedGroups, Contexts context) { if (holder == null) { holder = new MetaHolder(); @@ -359,7 +334,7 @@ public abstract class PermissionHolder { if (!n.shouldApplyOnWorld(world, context.isIncludeGlobalWorld(), false)) continue; if (!n.shouldApplyWithContext(contexts, false)) continue; - accumulateMetaNode(n, holder); + holder.accumulateNode(n); } Set parents = all.stream()