From e05c07799db44de11fe7710af0df4645487dc4bf Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Thu, 12 Dec 2019 16:41:44 +0100 Subject: [PATCH] Compile against 1.15 api, update luckperms to 5.0 (breaking change) --- pom.xml | 8 +- .../permission/handlers/LuckPermsHandler.java | 134 +++++++++--------- .../PermissionsManagerInitializationTest.java | 8 +- 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/pom.xml b/pom.xml index 043b529b..78ec4731 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ 3.3.9 - 1.14.2-R0.1-SNAPSHOT + 1.15-R0.1-SNAPSHOT AuthMe @@ -690,9 +690,9 @@ - me.lucko.luckperms - luckperms-api - 4.4 + net.luckperms + api + 5.0 provided 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 cc11a12c..58656ec3 100644 --- a/src/main/java/fr/xephi/authme/permission/handlers/LuckPermsHandler.java +++ b/src/main/java/fr/xephi/authme/permission/handlers/LuckPermsHandler.java @@ -4,20 +4,21 @@ import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.permission.PermissionNode; import fr.xephi.authme.permission.PermissionsSystemType; -import me.lucko.luckperms.LuckPerms; -import me.lucko.luckperms.api.Contexts; -import me.lucko.luckperms.api.DataMutateResult; -import me.lucko.luckperms.api.Group; -import me.lucko.luckperms.api.LuckPermsApi; -import me.lucko.luckperms.api.Node; -import me.lucko.luckperms.api.User; -import me.lucko.luckperms.api.caching.PermissionData; -import me.lucko.luckperms.api.caching.UserData; +import net.luckperms.api.LuckPerms; +import net.luckperms.api.LuckPermsProvider; +import net.luckperms.api.cacheddata.CachedPermissionData; +import net.luckperms.api.model.data.DataMutateResult; +import net.luckperms.api.model.group.Group; +import net.luckperms.api.model.user.User; +import net.luckperms.api.node.NodeEqualityPredicate; +import net.luckperms.api.node.types.InheritanceNode; +import net.luckperms.api.query.QueryMode; +import net.luckperms.api.query.QueryOptions; import org.bukkit.OfflinePlayer; import java.util.Collections; import java.util.List; -import java.util.Optional; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -33,42 +34,39 @@ import java.util.stream.Collectors; public class LuckPermsHandler implements PermissionHandler { private final ConsoleLogger logger = ConsoleLoggerFactory.get(LuckPermsHandler.class); - private LuckPermsApi luckPermsApi; + private LuckPerms luckPerms; public LuckPermsHandler() throws PermissionHandlerException { try { - luckPermsApi = LuckPerms.getApi(); + luckPerms = LuckPermsProvider.get(); } catch (IllegalStateException e) { throw new PermissionHandlerException("Could not get api of LuckPerms", e); } } - private void saveUser(User user) { - luckPermsApi.getUserManager().saveUser(user) - .thenAcceptAsync(wasSuccessful -> user.refreshCachedData()); - } - @Override public boolean addToGroup(OfflinePlayer player, String group) { - Group newGroup = luckPermsApi.getGroup(group); + Group newGroup = luckPerms.getGroupManager().getGroup(group); if (newGroup == null) { return false; } - User user = luckPermsApi.getUser(player.getName()); + String playerName = player.getName(); + if (playerName == null) { + return false; + } + User user = luckPerms.getUserManager().getUser(playerName); if (user == null) { return false; } - DataMutateResult result = user.setPermission( - luckPermsApi.getNodeFactory().makeGroupNode(newGroup).build()); + InheritanceNode node = InheritanceNode.builder(group).build(); + DataMutateResult result = user.data().add(node); if (result == DataMutateResult.FAIL) { return false; } - saveUser(user); - luckPermsApi.cleanupUser(user); - + luckPerms.getUserManager().saveUser(user); return true; } @@ -79,97 +77,102 @@ public class LuckPermsHandler implements PermissionHandler { @Override public boolean hasPermissionOffline(String name, PermissionNode node) { - User user = luckPermsApi.getUser(name); + User user = luckPerms.getUserManager().getUser(name); if (user == null) { logger.warning("LuckPermsHandler: tried to check permission for offline user " + name + " but it isn't loaded!"); return false; } - UserData userData = user.getCachedData(); - PermissionData permissionData = userData.getPermissionData(Contexts.allowAll()); - boolean result = permissionData.getPermissionValue(node.getNode()).asBoolean(); - - luckPermsApi.cleanupUser(user); - return result; + CachedPermissionData permissionData = user.getCachedData() + .getPermissionData(QueryOptions.builder(QueryMode.NON_CONTEXTUAL).build()); + return permissionData.checkPermission(node.getNode()).asBoolean(); } @Override public boolean isInGroup(OfflinePlayer player, String group) { - User user = luckPermsApi.getUser(player.getName()); + String playerName = player.getName(); + if (playerName == null) { + return false; + } + User user = luckPerms.getUserManager().getUser(playerName); if (user == null) { logger.warning("LuckPermsHandler: tried to check group for offline user " + player.getName() + " but it isn't loaded!"); return false; } - Group permissionGroup = luckPermsApi.getGroup(group); - boolean result = permissionGroup != null && user.inheritsGroup(permissionGroup); - - luckPermsApi.cleanupUser(user); - return result; + InheritanceNode inheritanceNode = InheritanceNode.builder(group).build(); + return user.data().contains(inheritanceNode, NodeEqualityPredicate.EXACT).asBoolean(); } @Override public boolean removeFromGroup(OfflinePlayer player, String group) { - User user = luckPermsApi.getUser(player.getName()); + String playerName = player.getName(); + if (playerName == null) { + return false; + } + User user = luckPerms.getUserManager().getUser(playerName); if (user == null) { logger.warning("LuckPermsHandler: tried to remove group for offline user " + player.getName() + " but it isn't loaded!"); return false; } - Group permissionGroup = luckPermsApi.getGroup(group); - if (permissionGroup == null) { - return false; - } + InheritanceNode groupNode = InheritanceNode.builder(group).build(); + boolean result = user.data().remove(groupNode) != DataMutateResult.FAIL; - Node groupNode = luckPermsApi.getNodeFactory().makeGroupNode(permissionGroup).build(); - boolean result = user.unsetPermission(groupNode) != DataMutateResult.FAIL; - - luckPermsApi.cleanupUser(user); + luckPerms.getUserManager().saveUser(user); return result; } @Override public boolean setGroup(OfflinePlayer player, String group) { - User user = luckPermsApi.getUser(player.getName()); + String playerName = player.getName(); + if (playerName == null) { + return false; + } + User user = luckPerms.getUserManager().getUser(playerName); if (user == null) { logger.warning("LuckPermsHandler: tried to set group for offline user " + player.getName() + " but it isn't loaded!"); return false; } - Group permissionGroup = luckPermsApi.getGroup(group); - if (permissionGroup == null) { - return false; - } - Node groupNode = luckPermsApi.getNodeFactory().makeGroupNode(permissionGroup).build(); - DataMutateResult result = user.setPermission(groupNode); + InheritanceNode groupNode = InheritanceNode.builder(group).build(); + DataMutateResult result = user.data().add(groupNode); if (result == DataMutateResult.FAIL) { return false; } - user.clearMatching(node -> node.isGroupNode() && !node.getGroupName().equals(permissionGroup.getName())); + user.data().clear(node -> { + if (!(node instanceof InheritanceNode)) { + return false; + } + InheritanceNode inheritanceNode = (InheritanceNode) node; + return !inheritanceNode.equals(groupNode); + }); - saveUser(user); - luckPermsApi.cleanupUser(user); + luckPerms.getUserManager().saveUser(user); return true; } @Override public List getGroups(OfflinePlayer player) { - User user = luckPermsApi.getUser(player.getName()); + String playerName = player.getName(); + if (playerName == null) { + return Collections.emptyList(); + } + User user = luckPerms.getUserManager().getUser(playerName); if (user == null) { logger.warning("LuckPermsHandler: tried to get groups for offline user " + player.getName() + " but it isn't loaded!"); return Collections.emptyList(); } - List result = user.getOwnNodes().stream() - .filter(Node::isGroupNode) - .map(n -> luckPermsApi.getGroupSafe(n.getGroupName())) - .filter(Optional::isPresent) - .map(Optional::get) - .distinct() + return user.getDistinctNodes().stream() + .filter(node -> node instanceof InheritanceNode) + .map(node -> (InheritanceNode) node) + .map(node -> luckPerms.getGroupManager().getGroup(node.getGroupName())) + .filter(Objects::nonNull) .sorted((o1, o2) -> { if (o1.getName().equals(user.getPrimaryGroup()) || o2.getName().equals(user.getPrimaryGroup())) { return o1.getName().equals(user.getPrimaryGroup()) ? 1 : -1; @@ -180,9 +183,6 @@ public class LuckPermsHandler implements PermissionHandler { }) .map(Group::getName) .collect(Collectors.toList()); - - luckPermsApi.cleanupUser(user); - return result; } @Override @@ -193,7 +193,7 @@ public class LuckPermsHandler implements PermissionHandler { @Override public void loadUserData(UUID uuid) throws PermissionLoadUserException { try { - luckPermsApi.getUserManager().loadUser(uuid).get(5, TimeUnit.SECONDS); + luckPerms.getUserManager().loadUser(uuid).get(5, TimeUnit.SECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { throw new PermissionLoadUserException("Unable to load the permission data of the user " + uuid, e); } diff --git a/src/test/java/fr/xephi/authme/permission/PermissionsManagerInitializationTest.java b/src/test/java/fr/xephi/authme/permission/PermissionsManagerInitializationTest.java index 9e1c5be6..bdd1c5e6 100644 --- a/src/test/java/fr/xephi/authme/permission/PermissionsManagerInitializationTest.java +++ b/src/test/java/fr/xephi/authme/permission/PermissionsManagerInitializationTest.java @@ -10,8 +10,8 @@ import fr.xephi.authme.permission.handlers.VaultHandler; import fr.xephi.authme.permission.handlers.ZPermissionsHandler; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.PluginSettings; -import me.lucko.luckperms.LuckPerms; -import me.lucko.luckperms.api.LuckPermsApi; +import net.luckperms.api.LuckPerms; +import net.luckperms.api.LuckPermsProvider; import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.Server; @@ -162,8 +162,8 @@ public class PermissionsManagerInitializationTest { private void setUpForPermissionSystemTest() { if (permissionsSystemType == LUCK_PERMS) { - LuckPermsApi api = mock(LuckPermsApi.class); - ReflectionTestUtils.setField(LuckPerms.class, null, "instance", api); + LuckPerms api = mock(LuckPerms.class); + ReflectionTestUtils.setField(LuckPermsProvider.class, null, "instance", api); } else if (permissionsSystemType == PERMISSIONS_EX) { throw new AssumptionViolatedException( "PermissionsEx instance cannot be mocked because of missing dependencies -- skipping");