Allow context pairs to be specified in commands, fix misuse of exceptions in the permission holder class
This commit is contained in:
@@ -39,7 +39,7 @@ public class MessageHandler {
|
||||
public void sendJsonMessage(CommandSender sender, FancyMessage message) {
|
||||
if (ReflectionUtil.isChatCompatible() && sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
String json = message.toJSONString();
|
||||
String json = message.exportToJson();
|
||||
|
||||
// Try Bukkit.
|
||||
if (bukkitHandler.sendJsonMessage(player, json)) {
|
||||
|
||||
@@ -189,11 +189,11 @@ public class MigrationBPermissions extends SubCommand<Object> {
|
||||
private static void migrateHolder(World world, Calculable c, PermissionHolder holder) {
|
||||
// Migrate the groups permissions in this world
|
||||
for (Permission p : c.getPermissions()) {
|
||||
holder.setPermissionUnchecked(NodeFactory.make(p.name(), p.isTrue(), "global", world.getName()));
|
||||
holder.setPermission(NodeFactory.make(p.name(), p.isTrue(), "global", world.getName()));
|
||||
|
||||
// Include any child permissions
|
||||
for (Map.Entry<String, Boolean> child : p.getChildren().entrySet()) {
|
||||
holder.setPermissionUnchecked(NodeFactory.make(child.getKey(), child.getValue(), "global", world.getName()));
|
||||
holder.setPermission(NodeFactory.make(child.getKey(), child.getValue(), "global", world.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,17 +204,17 @@ public class MigrationBPermissions extends SubCommand<Object> {
|
||||
parentName = "default";
|
||||
}
|
||||
|
||||
holder.setPermissionUnchecked(NodeFactory.make("group." + parentName, true, "global", world.getName()));
|
||||
holder.setPermission(NodeFactory.make("group." + parentName, true, "global", world.getName()));
|
||||
}
|
||||
|
||||
// Migrate existing meta
|
||||
for (Map.Entry<String, String> meta : c.getMeta().entrySet()) {
|
||||
if (meta.getKey().equalsIgnoreCase("prefix") || meta.getKey().equalsIgnoreCase("suffix")) {
|
||||
holder.setPermissionUnchecked(NodeFactory.makeChatMetaNode(meta.getKey().equalsIgnoreCase("prefix"), c.getPriority(), meta.getValue()).setWorld(world.getName()).build());
|
||||
holder.setPermission(NodeFactory.makeChatMetaNode(meta.getKey().equalsIgnoreCase("prefix"), c.getPriority(), meta.getValue()).setWorld(world.getName()).build());
|
||||
continue;
|
||||
}
|
||||
|
||||
holder.setPermissionUnchecked(NodeFactory.makeMetaNode(meta.getKey(), meta.getValue()).setWorld(world.getName()).build());
|
||||
holder.setPermission(NodeFactory.makeMetaNode(meta.getKey(), meta.getValue()).setWorld(world.getName()).build());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,11 +97,11 @@ public class MigrationGroupManager extends SubCommand<Object> {
|
||||
me.lucko.luckperms.common.core.model.Group group = plugin.getGroupManager().getIfLoaded(groupName);
|
||||
|
||||
for (String node : g.getPermissionList()) {
|
||||
group.setPermissionUnchecked(MigrationUtils.parseNode(node, true).build());
|
||||
group.setPermission(MigrationUtils.parseNode(node, true).build());
|
||||
}
|
||||
|
||||
for (String s : g.getInherits()) {
|
||||
group.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(s)));
|
||||
group.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(s)));
|
||||
}
|
||||
|
||||
plugin.getStorage().saveGroup(group);
|
||||
@@ -217,7 +217,7 @@ public class MigrationGroupManager extends SubCommand<Object> {
|
||||
me.lucko.luckperms.common.core.model.Group group = plugin.getGroupManager().getIfLoaded(e.getKey());
|
||||
|
||||
for (Node node : e.getValue()) {
|
||||
group.setPermissionUnchecked(node);
|
||||
group.setPermission(node);
|
||||
}
|
||||
|
||||
plugin.getStorage().saveGroup(group);
|
||||
@@ -232,14 +232,14 @@ public class MigrationGroupManager extends SubCommand<Object> {
|
||||
me.lucko.luckperms.common.core.model.User user = plugin.getUserManager().get(e.getKey());
|
||||
|
||||
for (Node node : e.getValue()) {
|
||||
user.setPermissionUnchecked(node);
|
||||
user.setPermission(node);
|
||||
}
|
||||
|
||||
String primaryGroup = primaryGroups.get(e.getKey());
|
||||
if (primaryGroup != null) {
|
||||
user.setPermissionUnchecked(NodeFactory.make("group." + primaryGroup));
|
||||
user.setPermission(NodeFactory.make("group." + primaryGroup));
|
||||
user.getPrimaryGroup().setStoredValue(primaryGroup);
|
||||
user.unsetPermissionUnchecked(NodeFactory.make("group.default"));
|
||||
user.unsetPermission(NodeFactory.make("group.default"));
|
||||
}
|
||||
|
||||
plugin.getStorage().saveUser(user);
|
||||
|
||||
+14
-14
@@ -106,7 +106,7 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
|
||||
try {
|
||||
for (String node : group.getOwnPermissions(null)) {
|
||||
lpGroup.setPermissionUnchecked(MigrationUtils.parseNode(node, true).build());
|
||||
lpGroup.setPermission(MigrationUtils.parseNode(node, true).build());
|
||||
}
|
||||
} catch (NullPointerException ignored) {
|
||||
// No docs on if #getOwnPermissions(null) is ok. Should be fine though.
|
||||
@@ -114,17 +114,17 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
|
||||
for (String world : worlds) {
|
||||
for (String node : group.getOwnPermissions(world)) {
|
||||
lpGroup.setPermissionUnchecked(MigrationUtils.parseNode(node, true).setWorld(world.toLowerCase()).build());
|
||||
lpGroup.setPermission(MigrationUtils.parseNode(node, true).setWorld(world.toLowerCase()).build());
|
||||
}
|
||||
}
|
||||
|
||||
for (PermissionGroup g : group.getParents()) {
|
||||
lpGroup.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(g.getName())));
|
||||
lpGroup.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(g.getName())));
|
||||
}
|
||||
|
||||
for (String world : worlds) {
|
||||
for (PermissionGroup g : group.getParents(world)) {
|
||||
lpGroup.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(g.getName()), true, "global", world.toLowerCase()));
|
||||
lpGroup.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(g.getName()), true, "global", world.toLowerCase()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,11 +132,11 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
String suffix = group.getOwnSuffix();
|
||||
|
||||
if (prefix != null && !prefix.equals("")) {
|
||||
lpGroup.setPermissionUnchecked(NodeFactory.makePrefixNode(groupWeight, prefix).build());
|
||||
lpGroup.setPermission(NodeFactory.makePrefixNode(groupWeight, prefix).build());
|
||||
}
|
||||
|
||||
if (suffix != null && !suffix.equals("")) {
|
||||
lpGroup.setPermissionUnchecked(NodeFactory.makeSuffixNode(groupWeight, suffix).build());
|
||||
lpGroup.setPermission(NodeFactory.makeSuffixNode(groupWeight, suffix).build());
|
||||
}
|
||||
|
||||
plugin.getStorage().saveGroup(lpGroup);
|
||||
@@ -176,7 +176,7 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
|
||||
try {
|
||||
for (String node : user.getOwnPermissions(null)) {
|
||||
lpUser.setPermissionUnchecked(MigrationUtils.parseNode(node, true).build());
|
||||
lpUser.setPermission(MigrationUtils.parseNode(node, true).build());
|
||||
}
|
||||
} catch (NullPointerException ignored) {
|
||||
// No docs on if #getOwnPermissions(null) is ok. Should be fine though.
|
||||
@@ -184,17 +184,17 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
|
||||
for (String world : worlds) {
|
||||
for (String node : user.getOwnPermissions(world)) {
|
||||
lpUser.setPermissionUnchecked(MigrationUtils.parseNode(node, true).setWorld(world.toLowerCase()).build());
|
||||
lpUser.setPermission(MigrationUtils.parseNode(node, true).setWorld(world.toLowerCase()).build());
|
||||
}
|
||||
}
|
||||
|
||||
for (String g : user.getGroupNames()) {
|
||||
lpUser.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(g)));
|
||||
lpUser.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(g)));
|
||||
}
|
||||
|
||||
for (String world : worlds) {
|
||||
for (String g : user.getGroupNames(world)) {
|
||||
lpUser.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(g), true, "global", world.toLowerCase()));
|
||||
lpUser.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(g), true, "global", world.toLowerCase()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,11 +202,11 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
String suffix = user.getOwnSuffix();
|
||||
|
||||
if (prefix != null && !prefix.equals("")) {
|
||||
lpUser.setPermissionUnchecked(NodeFactory.makePrefixNode(maxWeight, prefix).build());
|
||||
lpUser.setPermission(NodeFactory.makePrefixNode(maxWeight, prefix).build());
|
||||
}
|
||||
|
||||
if (suffix != null && !suffix.equals("")) {
|
||||
lpUser.setPermissionUnchecked(NodeFactory.makeSuffixNode(maxWeight, suffix).build());
|
||||
lpUser.setPermission(NodeFactory.makeSuffixNode(maxWeight, suffix).build());
|
||||
}
|
||||
|
||||
// Lowest rank is the highest group #logic
|
||||
@@ -220,9 +220,9 @@ public class MigrationPermissionsEx extends SubCommand<Object> {
|
||||
}
|
||||
|
||||
if (primary != null && !primary.equalsIgnoreCase("default")) {
|
||||
lpUser.setPermissionUnchecked(NodeFactory.make("group." + primary.toLowerCase()));
|
||||
lpUser.setPermission(NodeFactory.make("group." + primary.toLowerCase()));
|
||||
lpUser.getPrimaryGroup().setStoredValue(primary);
|
||||
lpUser.unsetPermissionUnchecked(NodeFactory.make("group.default"));
|
||||
lpUser.unsetPermission(NodeFactory.make("group.default"));
|
||||
}
|
||||
|
||||
plugin.getUserManager().cleanup(lpUser);
|
||||
|
||||
+10
-10
@@ -180,7 +180,7 @@ public class MigrationPowerfulPerms extends SubCommand<Object> {
|
||||
}
|
||||
|
||||
for (Group parent : g.getParents()) {
|
||||
group.setPermissionUnchecked(NodeFactory.make("group." + parent.getName().toLowerCase(), true));
|
||||
group.setPermission(NodeFactory.make("group." + parent.getName().toLowerCase(), true));
|
||||
}
|
||||
|
||||
// server --> prefix afaik
|
||||
@@ -191,9 +191,9 @@ public class MigrationPowerfulPerms extends SubCommand<Object> {
|
||||
}
|
||||
|
||||
if (server != null) {
|
||||
group.setPermissionUnchecked(NodeFactory.makePrefixNode(g.getRank(), prefix.getValue()).setServer(server).build());
|
||||
group.setPermission(NodeFactory.makePrefixNode(g.getRank(), prefix.getValue()).setServer(server).build());
|
||||
} else {
|
||||
group.setPermissionUnchecked(NodeFactory.makePrefixNode(g.getRank(), prefix.getValue()).build());
|
||||
group.setPermission(NodeFactory.makePrefixNode(g.getRank(), prefix.getValue()).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,9 +204,9 @@ public class MigrationPowerfulPerms extends SubCommand<Object> {
|
||||
}
|
||||
|
||||
if (server != null) {
|
||||
group.setPermissionUnchecked(NodeFactory.makeSuffixNode(g.getRank(), suffix.getValue()).setServer(server).build());
|
||||
group.setPermission(NodeFactory.makeSuffixNode(g.getRank(), suffix.getValue()).setServer(server).build());
|
||||
} else {
|
||||
group.setPermissionUnchecked(NodeFactory.makeSuffixNode(g.getRank(), suffix.getValue()).build());
|
||||
group.setPermission(NodeFactory.makeSuffixNode(g.getRank(), suffix.getValue()).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,16 +252,16 @@ public class MigrationPowerfulPerms extends SubCommand<Object> {
|
||||
String suffix = joinFuture(pm.getPlayerOwnSuffix(uuid));
|
||||
|
||||
if (prefix != null && !prefix.equals("")) {
|
||||
user.setPermissionUnchecked(NodeFactory.makePrefixNode(maxWeight, prefix).build());
|
||||
user.setPermission(NodeFactory.makePrefixNode(maxWeight, prefix).build());
|
||||
}
|
||||
|
||||
if (suffix != null && !suffix.equals("")) {
|
||||
user.setPermissionUnchecked(NodeFactory.makeSuffixNode(maxWeight, suffix).build());
|
||||
user.setPermission(NodeFactory.makeSuffixNode(maxWeight, suffix).build());
|
||||
}
|
||||
|
||||
String primary = joinFuture(pm.getPlayerPrimaryGroup(uuid)).getName().toLowerCase();
|
||||
if (!primary.equals("default")) {
|
||||
user.setPermissionUnchecked(NodeFactory.make("group." + primary));
|
||||
user.setPermission(NodeFactory.make("group." + primary));
|
||||
user.getPrimaryGroup().setStoredValue(primary);
|
||||
}
|
||||
|
||||
@@ -316,7 +316,7 @@ public class MigrationPowerfulPerms extends SubCommand<Object> {
|
||||
nb.setWorld(world);
|
||||
}
|
||||
|
||||
holder.setPermissionUnchecked(nb.build());
|
||||
holder.setPermission(nb.build());
|
||||
}
|
||||
|
||||
private void applyGroup(PermissionManager pm, PermissionHolder holder, CachedGroup g, String server) {
|
||||
@@ -338,7 +338,7 @@ public class MigrationPowerfulPerms extends SubCommand<Object> {
|
||||
nb.setServer(server);
|
||||
}
|
||||
|
||||
holder.setPermissionUnchecked(nb.build());
|
||||
holder.setPermission(nb.build());
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
|
||||
@@ -147,9 +147,9 @@ public class MigrationZPermissions extends SubCommand<Object> {
|
||||
private void migrateEntity(PermissionHolder holder, PermissionEntity entity, List<Membership> memberships) {
|
||||
for (Entry e : entity.getPermissions()) {
|
||||
if (e.getWorld() != null && !e.getWorld().getName().equals("")) {
|
||||
holder.setPermissionUnchecked(MigrationUtils.parseNode(e.getPermission(), true).setWorld(e.getWorld().getName()).build());
|
||||
holder.setPermission(MigrationUtils.parseNode(e.getPermission(), true).setWorld(e.getWorld().getName()).build());
|
||||
} else {
|
||||
holder.setPermissionUnchecked(MigrationUtils.parseNode(e.getPermission(), true).build());
|
||||
holder.setPermission(MigrationUtils.parseNode(e.getPermission(), true).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,12 +157,12 @@ public class MigrationZPermissions extends SubCommand<Object> {
|
||||
// entity.getMemberships() doesn't work for groups (always returns 0 records)
|
||||
for (Inheritance inheritance : entity.getInheritancesAsChild()) {
|
||||
if (!inheritance.getParent().getName().equals(holder.getObjectName())) {
|
||||
holder.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(inheritance.getParent().getName())));
|
||||
holder.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(inheritance.getParent().getName())));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (Membership membership : memberships) {
|
||||
holder.setPermissionUnchecked(NodeFactory.make("group." + MigrationUtils.standardizeName(membership.getGroup().getDisplayName())));
|
||||
holder.setPermission(NodeFactory.make("group." + MigrationUtils.standardizeName(membership.getGroup().getDisplayName())));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,9 +171,9 @@ public class MigrationZPermissions extends SubCommand<Object> {
|
||||
String key = metadata.getName().toLowerCase();
|
||||
|
||||
if (key.equals("prefix") || key.equals("suffix")) {
|
||||
holder.setPermissionUnchecked(NodeFactory.makeChatMetaNode(key.equals("prefix"), weight, metadata.getStringValue()).build());
|
||||
holder.setPermission(NodeFactory.makeChatMetaNode(key.equals("prefix"), weight, metadata.getStringValue()).build());
|
||||
} else {
|
||||
holder.setPermissionUnchecked(NodeFactory.makeMetaNode(key, metadata.getStringValue()).build());
|
||||
holder.setPermission(NodeFactory.makeMetaNode(key, metadata.getStringValue()).build());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ public class VaultChatHook extends Chat {
|
||||
metaNode.setWorld(finalWorld);
|
||||
}
|
||||
|
||||
holder.setPermissionUnchecked(metaNode.build());
|
||||
holder.setPermission(metaNode.build());
|
||||
perms.save(holder);
|
||||
});
|
||||
}
|
||||
@@ -111,7 +111,7 @@ public class VaultChatHook extends Chat {
|
||||
chatMetaNode.setWorld(finalWorld);
|
||||
}
|
||||
|
||||
holder.setPermissionUnchecked(chatMetaNode.build());
|
||||
holder.setPermission(chatMetaNode.build());
|
||||
perms.save(holder);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -30,22 +30,24 @@ import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.caching.PermissionData;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.api.context.ImmutableContextSet;
|
||||
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.core.DataMutateResult;
|
||||
import me.lucko.luckperms.common.core.NodeFactory;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
import me.lucko.luckperms.common.core.model.PermissionHolder;
|
||||
import me.lucko.luckperms.common.core.model.User;
|
||||
import me.lucko.luckperms.common.utils.ExtractedContexts;
|
||||
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
|
||||
import me.lucko.luckperms.exceptions.ObjectLacksException;
|
||||
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* LuckPerms Vault Permission implementation
|
||||
@@ -91,15 +93,16 @@ public class VaultPermissionHook extends Permission {
|
||||
*/
|
||||
private CompletableFuture<Void> add(String world, PermissionHolder holder, String permission) {
|
||||
return CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
if (world != null && !world.equals("") && !world.equalsIgnoreCase("global")) {
|
||||
holder.setPermission(NodeFactory.make(permission, true, getServer(), world));
|
||||
} else {
|
||||
holder.setPermission(NodeFactory.make(permission, true, getServer()));
|
||||
}
|
||||
DataMutateResult result;
|
||||
if (world != null && !world.equals("") && !world.equalsIgnoreCase("global")) {
|
||||
result = holder.setPermission(NodeFactory.make(permission, true, getServer(), world));
|
||||
} else {
|
||||
result = holder.setPermission(NodeFactory.make(permission, true, getServer()));
|
||||
}
|
||||
|
||||
if (result.asBoolean()) {
|
||||
save(holder);
|
||||
} catch (ObjectAlreadyHasException ignored) {}
|
||||
}
|
||||
}, scheduler);
|
||||
}
|
||||
|
||||
@@ -112,15 +115,16 @@ public class VaultPermissionHook extends Permission {
|
||||
*/
|
||||
private CompletableFuture<Void> remove(String world, PermissionHolder holder, String permission) {
|
||||
return CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
if (world != null && !world.equals("") && !world.equalsIgnoreCase("global")) {
|
||||
holder.unsetPermission(NodeFactory.make(permission, getServer(), world));
|
||||
} else {
|
||||
holder.unsetPermission(NodeFactory.make(permission, getServer()));
|
||||
}
|
||||
DataMutateResult result;
|
||||
if (world != null && !world.equals("") && !world.equalsIgnoreCase("global")) {
|
||||
result = holder.unsetPermission(NodeFactory.make(permission, getServer(), world));
|
||||
} else {
|
||||
result = holder.unsetPermission(NodeFactory.make(permission, getServer()));
|
||||
}
|
||||
|
||||
if (result.asBoolean()) {
|
||||
save(holder);
|
||||
} catch (ObjectLacksException ignored) {}
|
||||
}
|
||||
}, scheduler);
|
||||
}
|
||||
|
||||
@@ -256,15 +260,16 @@ public class VaultPermissionHook extends Permission {
|
||||
|
||||
String w = world;
|
||||
scheduler.execute(() -> {
|
||||
try {
|
||||
if (w != null && !w.equals("") && !w.equalsIgnoreCase("global")) {
|
||||
user.setInheritGroup(group, getServer(), w);
|
||||
} else {
|
||||
user.setInheritGroup(group, getServer());
|
||||
}
|
||||
DataMutateResult result;
|
||||
if (w != null && !w.equals("") && !w.equalsIgnoreCase("global")) {
|
||||
result = user.setInheritGroup(group, ImmutableContextSet.of("server", getServer(), "world", w));
|
||||
} else {
|
||||
result = user.setInheritGroup(group, ImmutableContextSet.singleton("server", getServer()));
|
||||
}
|
||||
|
||||
if (result.asBoolean()) {
|
||||
save(user);
|
||||
} catch (ObjectAlreadyHasException ignored) {}
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@@ -282,15 +287,16 @@ public class VaultPermissionHook extends Permission {
|
||||
|
||||
String w = world;
|
||||
scheduler.execute(() -> {
|
||||
try {
|
||||
if (w != null && !w.equals("") && !w.equalsIgnoreCase("global")) {
|
||||
user.unsetInheritGroup(group, getServer(), w);
|
||||
} else {
|
||||
user.unsetInheritGroup(group, getServer());
|
||||
}
|
||||
DataMutateResult result;
|
||||
if (w != null && !w.equals("") && !w.equalsIgnoreCase("global")) {
|
||||
result = user.unsetInheritGroup(group, ImmutableContextSet.of("server", getServer(), "world", w));
|
||||
} else {
|
||||
result = user.unsetInheritGroup(group, ImmutableContextSet.singleton("server", getServer()));
|
||||
}
|
||||
|
||||
if (result.asBoolean()) {
|
||||
save(user);
|
||||
} catch (ObjectLacksException ignored) {}
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@@ -367,7 +373,15 @@ public class VaultPermissionHook extends Permission {
|
||||
}
|
||||
|
||||
if (isPgoCheckMemberOf()) {
|
||||
if (!user.getLocalGroups(getServer(), world, isIncludeGlobal()).contains(group.toLowerCase())) {
|
||||
String finalWorld = world;
|
||||
List<String> localGroups = user.mergePermissionsToList().stream()
|
||||
.filter(Node::isGroupNode)
|
||||
.filter(n -> n.shouldApplyOnWorld(finalWorld, isIncludeGlobal(), true))
|
||||
.filter(n -> n.shouldApplyOnServer(getServer(), isIncludeGlobal(), true))
|
||||
.map(Node::getGroupName)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!localGroups.contains(group.toLowerCase())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user