Rewrite inheritance resolution implementation
This commit is contained in:
@@ -33,7 +33,7 @@ import me.lucko.luckperms.api.LocalizedNode;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.common.caching.MetaHolder;
|
||||
import me.lucko.luckperms.common.caching.MetaAccumulator;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
import me.lucko.luckperms.common.utils.ExtractedContexts;
|
||||
import me.lucko.luckperms.sponge.LPSpongePlugin;
|
||||
@@ -83,7 +83,7 @@ public class SpongeGroup extends Group {
|
||||
@Override
|
||||
public NodeTree load(ContextSet contexts) {
|
||||
// TODO move this away from NodeTree
|
||||
Map<String, Boolean> permissions = parent.getAllNodesFiltered(ExtractedContexts.generate(plugin.getService().calculateContexts(contexts))).stream()
|
||||
Map<String, Boolean> permissions = parent.getAllNodes(ExtractedContexts.generate(plugin.getService().calculateContexts(contexts))).stream()
|
||||
.map(LocalizedNode::getNode)
|
||||
.collect(Collectors.toMap(Node::getPermission, Node::getValue));
|
||||
|
||||
@@ -96,7 +96,7 @@ public class SpongeGroup extends Group {
|
||||
.build(new CacheLoader<ContextSet, Set<SubjectReference>>() {
|
||||
@Override
|
||||
public Set<SubjectReference> load(ContextSet contexts) {
|
||||
Set<SubjectReference> subjects = parent.getAllNodesFiltered(ExtractedContexts.generate(plugin.getService().calculateContexts(contexts))).stream()
|
||||
Set<SubjectReference> subjects = parent.getAllNodes(ExtractedContexts.generate(plugin.getService().calculateContexts(contexts))).stream()
|
||||
.map(LocalizedNode::getNode)
|
||||
.filter(Node::isGroupNode)
|
||||
.map(Node::getGroupName)
|
||||
@@ -224,17 +224,17 @@ public class SpongeGroup extends Group {
|
||||
}
|
||||
|
||||
private Optional<String> getChatMeta(ContextSet contexts, boolean prefix) {
|
||||
MetaHolder metaHolder = parent.accumulateMeta(null, null, ExtractedContexts.generate(plugin.getService().calculateContexts(contexts)));
|
||||
MetaAccumulator metaAccumulator = parent.accumulateMeta(null, null, ExtractedContexts.generate(plugin.getService().calculateContexts(contexts)));
|
||||
if (prefix) {
|
||||
return Optional.ofNullable(metaHolder.getPrefixStack().toFormattedString());
|
||||
return Optional.ofNullable(metaAccumulator.getPrefixStack().toFormattedString());
|
||||
} else {
|
||||
return Optional.ofNullable(metaHolder.getSuffixStack().toFormattedString());
|
||||
return Optional.ofNullable(metaAccumulator.getSuffixStack().toFormattedString());
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<String> getMeta(ContextSet contexts, String key) {
|
||||
MetaHolder metaHolder = parent.accumulateMeta(null, null, ExtractedContexts.generate(plugin.getService().calculateContexts(contexts)));
|
||||
Map<String, String> meta = metaHolder.getMeta();
|
||||
MetaAccumulator metaAccumulator = parent.accumulateMeta(null, null, ExtractedContexts.generate(plugin.getService().calculateContexts(contexts)));
|
||||
Map<String, String> meta = metaAccumulator.getMeta();
|
||||
return Optional.ofNullable(meta.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ public class SpongeUser extends User {
|
||||
return (now - lastUse) > 600000;
|
||||
}
|
||||
|
||||
private void checkData() {
|
||||
private synchronized void checkData() {
|
||||
if (parent.getUserData() == null) {
|
||||
plugin.getLog().warn("User " + parent.getName() + " - " + parent.getUuid() + " does not have any data loaded.");
|
||||
parent.setupData(false);
|
||||
|
||||
@@ -33,7 +33,7 @@ import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.api.context.ImmutableContextSet;
|
||||
import me.lucko.luckperms.common.caching.MetaHolder;
|
||||
import me.lucko.luckperms.common.caching.MetaAccumulator;
|
||||
import me.lucko.luckperms.common.core.NodeBuilder;
|
||||
import me.lucko.luckperms.common.core.NodeFactory;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
@@ -75,7 +75,7 @@ public class LuckPermsSubjectData implements LPSubjectData {
|
||||
try (Timing ignored = service.getPlugin().getTimings().time(LPTiming.LP_SUBJECT_GET_PERMISSIONS)) {
|
||||
Map<ImmutableContextSet, Map<String, Boolean>> perms = new HashMap<>();
|
||||
|
||||
for (Node n : enduring ? holder.getNodes() : holder.getTransientNodes()) {
|
||||
for (Node n : enduring ? holder.getNodes().values() : holder.getTransientNodes().values()) {
|
||||
ContextSet contexts = n.getFullContexts();
|
||||
perms.computeIfAbsent(contexts.makeImmutable(), cs -> new HashMap<>()).put(n.getPermission(), n.getValue());
|
||||
}
|
||||
@@ -166,7 +166,7 @@ public class LuckPermsSubjectData implements LPSubjectData {
|
||||
try (Timing ignored = service.getPlugin().getTimings().time(LPTiming.LP_SUBJECT_GET_PARENTS)) {
|
||||
Map<ImmutableContextSet, Set<SubjectReference>> parents = new HashMap<>();
|
||||
|
||||
for (Node n : enduring ? holder.getNodes() : holder.getTransientNodes()) {
|
||||
for (Node n : enduring ? holder.getNodes().values() : holder.getTransientNodes().values()) {
|
||||
if (!n.isGroupNode()) continue;
|
||||
|
||||
ContextSet contexts = n.getFullContexts();
|
||||
@@ -271,7 +271,7 @@ public class LuckPermsSubjectData implements LPSubjectData {
|
||||
Map<ImmutableContextSet, Integer> minPrefixPriority = new HashMap<>();
|
||||
Map<ImmutableContextSet, Integer> minSuffixPriority = new HashMap<>();
|
||||
|
||||
for (Node n : enduring ? holder.getNodes() : holder.getTransientNodes()) {
|
||||
for (Node n : enduring ? holder.getNodes().values() : holder.getTransientNodes().values()) {
|
||||
if (!n.getValue()) continue;
|
||||
if (!n.isMeta() && !n.isPrefix() && !n.isSuffix()) continue;
|
||||
|
||||
@@ -331,8 +331,8 @@ public class LuckPermsSubjectData implements LPSubjectData {
|
||||
|
||||
toRemove.forEach(makeUnsetConsumer(enduring));
|
||||
|
||||
MetaHolder metaHolder = holder.accumulateMeta(null, null, ExtractedContexts.generate(service.calculateContexts(context)));
|
||||
int priority = (type.equals("prefix") ? metaHolder.getPrefixes() : metaHolder.getSuffixes()).keySet().stream()
|
||||
MetaAccumulator metaAccumulator = holder.accumulateMeta(null, null, ExtractedContexts.generate(service.calculateContexts(context)));
|
||||
int priority = (type.equals("prefix") ? metaAccumulator.getPrefixes() : metaAccumulator.getSuffixes()).keySet().stream()
|
||||
.mapToInt(e -> e).max().orElse(0);
|
||||
priority += 10;
|
||||
|
||||
@@ -416,7 +416,7 @@ public class LuckPermsSubjectData implements LPSubjectData {
|
||||
}
|
||||
|
||||
private Stream<Node> streamNodes(boolean enduring) {
|
||||
return (enduring ? holder.getNodes() : holder.getTransientNodes()).stream();
|
||||
return (enduring ? holder.getNodes() : holder.getTransientNodes()).values().stream();
|
||||
}
|
||||
|
||||
private Consumer<Node> makeUnsetConsumer(boolean enduring) {
|
||||
|
||||
Reference in New Issue
Block a user