use of net.luckperms.api.node.types.InheritanceNode in project AuthMeReloaded by AuthMe.
the class LuckPermsHandler method getGroups.
@Override
public List<UserGroup> getGroups(OfflinePlayer player) {
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();
}
return user.getDistinctNodes().stream().filter(node -> node instanceof InheritanceNode).map(node -> (InheritanceNode) node).map(node -> {
Group group = luckPerms.getGroupManager().getGroup(node.getGroupName());
if (group == null) {
return null;
}
return new LuckPermGroup(group, node.getContexts());
}).filter(Objects::nonNull).sorted((o1, o2) -> sortGroups(user, o1, o2)).map(g -> new UserGroup(g.getGroup().getName(), g.getContexts().toFlattenedMap())).collect(Collectors.toList());
}
use of net.luckperms.api.node.types.InheritanceNode in project AuthMeReloaded by AuthMe.
the class LuckPermsHandler method buildGroupNode.
@NotNull
private InheritanceNode buildGroupNode(UserGroup group) {
ContextSetFactory contextSetFactory = luckPerms.getContextManager().getContextSetFactory();
InheritanceNode.Builder builder = InheritanceNode.builder(group.getGroupName());
if (group.getContextMap() != null) {
group.getContextMap().forEach((k, v) -> builder.withContext((contextSetFactory.immutableOf(k, v))));
}
return builder.build();
}
use of net.luckperms.api.node.types.InheritanceNode in project AuthMeReloaded by AuthMe.
the class LuckPermsHandler method setGroup.
@Override
public boolean setGroup(OfflinePlayer player, UserGroup group) {
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;
}
InheritanceNode groupNode = buildGroupNode(group);
DataMutateResult result = user.data().add(groupNode);
if (result == DataMutateResult.FAIL) {
return false;
}
user.data().clear(node -> {
if (!(node instanceof InheritanceNode)) {
return false;
}
InheritanceNode inheritanceNode = (InheritanceNode) node;
return !inheritanceNode.equals(groupNode);
});
luckPerms.getUserManager().saveUser(user);
return true;
}
use of net.luckperms.api.node.types.InheritanceNode in project AuthMeReloaded by AuthMe.
the class LuckPermsHandler method isInGroup.
@Override
public boolean isInGroup(OfflinePlayer player, UserGroup group) {
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;
}
InheritanceNode inheritanceNode = InheritanceNode.builder(group.getGroupName()).build();
return user.data().contains(inheritanceNode, NodeEqualityPredicate.EXACT).asBoolean();
}
use of net.luckperms.api.node.types.InheritanceNode in project AuthMeReloaded by AuthMe.
the class LuckPermsHandler method addToGroup.
@Override
public boolean addToGroup(OfflinePlayer player, UserGroup group) {
Group newGroup = luckPerms.getGroupManager().getGroup(group.getGroupName());
if (newGroup == null) {
return false;
}
String playerName = player.getName();
if (playerName == null) {
return false;
}
User user = luckPerms.getUserManager().getUser(playerName);
if (user == null) {
return false;
}
InheritanceNode node = buildGroupNode(group);
DataMutateResult result = user.data().add(node);
if (result == DataMutateResult.FAIL) {
return false;
}
luckPerms.getUserManager().saveUser(user);
return true;
}
Aggregations