From 5adc6ef753ba59fea10069c5e7d0e81ccc8c3f8d Mon Sep 17 00:00:00 2001 From: David Maes Date: Mon, 24 Aug 2020 22:35:35 +0200 Subject: [PATCH] Use context aware groups --- .../authme/permission/handlers/LuckPermsHandler.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/xephi/authme/permission/handlers/LuckPermsHandler.java b/src/main/java/fr/xephi/authme/permission/handlers/LuckPermsHandler.java index 58656ec37..3677d3c65 100644 --- a/src/main/java/fr/xephi/authme/permission/handlers/LuckPermsHandler.java +++ b/src/main/java/fr/xephi/authme/permission/handlers/LuckPermsHandler.java @@ -7,6 +7,8 @@ import fr.xephi.authme.permission.PermissionsSystemType; import net.luckperms.api.LuckPerms; import net.luckperms.api.LuckPermsProvider; import net.luckperms.api.cacheddata.CachedPermissionData; +import net.luckperms.api.context.ContextSetFactory; +import net.luckperms.api.context.ImmutableContextSet; import net.luckperms.api.model.data.DataMutateResult; import net.luckperms.api.model.group.Group; import net.luckperms.api.model.user.User; @@ -15,10 +17,14 @@ import net.luckperms.api.node.types.InheritanceNode; import net.luckperms.api.query.QueryMode; import net.luckperms.api.query.QueryOptions; import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; +import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -168,10 +174,8 @@ public class LuckPermsHandler implements PermissionHandler { return Collections.emptyList(); } - return user.getDistinctNodes().stream() - .filter(node -> node instanceof InheritanceNode) - .map(node -> (InheritanceNode) node) - .map(node -> luckPerms.getGroupManager().getGroup(node.getGroupName())) + Collection groups = user.getInheritedGroups(user.getQueryOptions()); + return groups.stream() .filter(Objects::nonNull) .sorted((o1, o2) -> { if (o1.getName().equals(user.getPrimaryGroup()) || o2.getName().equals(user.getPrimaryGroup())) {