Java源码示例:net.luckperms.api.node.NodeType
示例1
public Map<Set<Context>, Map<String, Boolean>> getTransientPermissions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.transientData().toCollection();
Map<Set<Context>, Map<String, Boolean>> transientPermissionMap = new TreeMap<Set<Context>, Map<String, Boolean>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.PERMISSION) {
continue;
}
final PermissionNode permissionNode = (PermissionNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, Boolean> permissionEntry = transientPermissionMap.get(contexts);
if (permissionEntry == null) {
permissionEntry = new HashMap<>();
permissionEntry.put(permissionNode.getPermission(), node.getValue());
transientPermissionMap.put(contexts, permissionEntry);
} else {
permissionEntry.put(permissionNode.getPermission(), node.getValue());
}
}
return transientPermissionMap;
}
示例2
public Map<Set<Context>, Map<String, String>> getPermanentOptions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.data().toCollection();
Map<Set<Context>, Map<String, String>> permanentPermissionMap = new TreeMap<Set<Context>, Map<String, String>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, String> metaEntry = permanentPermissionMap.get(contexts);
if (metaEntry == null) {
metaEntry = new HashMap<>();
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
permanentPermissionMap.put(contexts, metaEntry);
} else {
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return permanentPermissionMap;
}
示例3
public Map<Set<Context>, Map<String, String>> getTransientOptions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.transientData().toCollection();
Map<Set<Context>, Map<String, String>> permanentPermissionMap = new TreeMap<Set<Context>, Map<String, String>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, String> metaEntry = permanentPermissionMap.get(contexts);
if (metaEntry == null) {
metaEntry = new HashMap<>();
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
permanentPermissionMap.put(contexts, metaEntry);
} else {
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return permanentPermissionMap;
}
示例4
public Map<String, String> getPermanentOptions(GDPermissionHolder holder, Set<Context> contexts) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.data().toCollection();
final Map<String, String> options = new HashMap<>();
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
if (contexts == null) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
} else if (getGPContexts(node.getContexts()).containsAll(contexts)) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return options;
}
示例5
public Map<String, String> getTransientOptions(GDPermissionHolder holder, Set<Context> contexts) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.transientData().toCollection();
final Map<String, String> options = new HashMap<>();
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
if (contexts == null) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
} else if (getGPContexts(node.getContexts()).containsAll(contexts)) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return options;
}
示例6
public Map<Set<Context>, Map<String, Boolean>> getTransientPermissions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.transientData().toCollection();
Map<Set<Context>, Map<String, Boolean>> transientPermissionMap = new TreeMap<Set<Context>, Map<String, Boolean>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.PERMISSION) {
continue;
}
final PermissionNode permissionNode = (PermissionNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, Boolean> permissionEntry = transientPermissionMap.get(contexts);
if (permissionEntry == null) {
permissionEntry = new HashMap<>();
permissionEntry.put(permissionNode.getPermission(), node.getValue());
transientPermissionMap.put(contexts, permissionEntry);
} else {
permissionEntry.put(permissionNode.getPermission(), node.getValue());
}
}
return transientPermissionMap;
}
示例7
public Map<Set<Context>, Map<String, String>> getPermanentOptions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.data().toCollection();
Map<Set<Context>, Map<String, String>> permanentPermissionMap = new TreeMap<Set<Context>, Map<String, String>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, String> metaEntry = permanentPermissionMap.get(contexts);
if (metaEntry == null) {
metaEntry = new HashMap<>();
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
permanentPermissionMap.put(contexts, metaEntry);
} else {
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return permanentPermissionMap;
}
示例8
public Map<Set<Context>, Map<String, String>> getTransientOptions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.transientData().toCollection();
Map<Set<Context>, Map<String, String>> permanentPermissionMap = new TreeMap<Set<Context>, Map<String, String>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, String> metaEntry = permanentPermissionMap.get(contexts);
if (metaEntry == null) {
metaEntry = new HashMap<>();
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
permanentPermissionMap.put(contexts, metaEntry);
} else {
metaEntry.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return permanentPermissionMap;
}
示例9
public Map<String, String> getPermanentOptions(GDPermissionHolder holder, Set<Context> contexts) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.data().toCollection();
final Map<String, String> options = new HashMap<>();
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
if (contexts == null) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
} else if (getGPContexts(node.getContexts()).containsAll(contexts)) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return options;
}
示例10
public Map<String, String> getTransientOptions(GDPermissionHolder holder, Set<Context> contexts) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.transientData().toCollection();
final Map<String, String> options = new HashMap<>();
for (Node node : nodes) {
if (node.getType() != NodeType.META) {
continue;
}
final MetaNode metaNode = (MetaNode) node;
if (contexts == null) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
} else if (getGPContexts(node.getContexts()).containsAll(contexts)) {
options.put(metaNode.getMetaKey(), metaNode.getMetaValue());
}
}
return options;
}
示例11
@Override
public String[] userGetGroups(String world, UUID uuid) {
Objects.requireNonNull(uuid, "uuid");
PermissionHolder user = lookupUser(uuid);
QueryOptions queryOptions = getQueryOptions(uuid, world);
return user.getOwnNodes(NodeType.INHERITANCE, queryOptions).stream()
.map(n -> {
Group group = this.plugin.getGroupManager().getIfLoaded(n.getGroupName());
if (group != null) {
return group.getPlainDisplayName();
}
return n.getGroupName();
})
.toArray(String[]::new);
}
示例12
private void setMeta(PermissionHolder holder, String key, Object value, String world) {
if (key.equalsIgnoreCase(Prefix.NODE_KEY) || key.equalsIgnoreCase(Suffix.NODE_KEY)) {
setChatMeta(holder, ChatMetaType.valueOf(key.toUpperCase()), value == null ? null : value.toString(), world);
return;
}
holder.removeIf(DataType.NORMAL, null, NodeType.META.predicate(n -> n.getMetaKey().equals(key)), false);
if (value == null) {
this.vaultPermission.holderSave(holder);
return;
}
Node node = Meta.builder(key, value.toString())
.withContext(DefaultContextKeys.SERVER_KEY, this.vaultPermission.getVaultServer())
.withContext(DefaultContextKeys.WORLD_KEY, world == null ? "global" : world)
.build();
holder.setNode(DataType.NORMAL, node, true);
this.vaultPermission.holderSave(holder);
}
示例13
@Override
public CompletableFuture<Boolean> unsetOption(ImmutableContextSet contexts, String key) {
Objects.requireNonNull(contexts, "contexts");
Objects.requireNonNull(key, "key");
Predicate<? super Node> test;
if (key.equalsIgnoreCase(Prefix.NODE_KEY)) {
test = NodeType.PREFIX::matches;
} else if (key.equalsIgnoreCase(Suffix.NODE_KEY)) {
test = NodeType.SUFFIX::matches;
} else {
test = NodeType.META.predicate(mn -> mn.getMetaKey().equals(key));
}
if (!this.holder.removeIf(this.type, contexts, test, false)) {
return CompletableFuture.completedFuture(false);
}
return save(this.holder).thenApply(v -> true);
}
示例14
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Group target, ArgumentList args, String label) throws CommandException {
if (ArgumentPermissions.checkModifyPerms(plugin, sender, getPermission().get(), target)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
int weight = args.getPriority(0);
target.removeIf(DataType.NORMAL, null, NodeType.WEIGHT::matches, false);
target.setNode(DataType.NORMAL, Weight.builder(weight).build(), true);
Message.GROUP_SET_WEIGHT.send(sender, weight, target.getFormattedDisplayName());
LoggedAction.build().source(sender).target(target)
.description("setweight", weight)
.build().submit(plugin, sender);
StorageAssistant.save(target, sender, plugin);
return CommandResult.SUCCESS;
}
示例15
private static Constraint getConstraintForType(NodeType<?> type) {
if (type == NodeType.REGEX_PERMISSION) {
return Constraint.of(StandardComparison.SIMILAR, RegexPermission.key(StandardComparison.WILDCARD));
} else if (type == NodeType.INHERITANCE) {
return Constraint.of(StandardComparison.SIMILAR, Inheritance.key(StandardComparison.WILDCARD));
} else if (type == NodeType.PREFIX) {
return Constraint.of(StandardComparison.SIMILAR, Prefix.NODE_MARKER + StandardComparison.WILDCARD + AbstractNode.NODE_SEPARATOR + StandardComparison.WILDCARD);
} else if (type == NodeType.SUFFIX) {
return Constraint.of(StandardComparison.SIMILAR, Suffix.NODE_MARKER + StandardComparison.WILDCARD + AbstractNode.NODE_SEPARATOR + StandardComparison.WILDCARD);
} else if (type == NodeType.META) {
return Constraint.of(StandardComparison.SIMILAR, Meta.key(StandardComparison.WILDCARD, StandardComparison.WILDCARD));
} else if (type == NodeType.WEIGHT) {
return Constraint.of(StandardComparison.SIMILAR, Weight.NODE_MARKER + StandardComparison.WILDCARD);
} else if (type == NodeType.DISPLAY_NAME) {
return Constraint.of(StandardComparison.SIMILAR, DisplayName.key(StandardComparison.WILDCARD));
}
throw new IllegalArgumentException("Unable to create a NodeMatcher for NodeType " + type.name());
}
示例16
public Map<Set<Context>, Map<String, Boolean>> getPermanentPermissions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.data().toCollection();
Map<Set<Context>, Map<String, Boolean>> permanentPermissionMap = new TreeMap<Set<Context>, Map<String, Boolean>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.PERMISSION) {
continue;
}
final PermissionNode permissionNode = (PermissionNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, Boolean> permissionEntry = permanentPermissionMap.get(contexts);
if (permissionEntry == null) {
permissionEntry = new HashMap<>();
permissionEntry.put(permissionNode.getPermission(), node.getValue());
permanentPermissionMap.put(contexts, permissionEntry);
} else {
permissionEntry.put(permissionNode.getPermission(), node.getValue());
}
}
return permanentPermissionMap;
}
示例17
private void clearMeta(PermissionHolder holder, String metaKey, ContextSet set) {
if (set.size() == 1 && set.containsKey("server")) {
if (set.getAnyValue("server").get().equalsIgnoreCase("global")) {
// LP does not remove meta if passing only global context so we need to make sure to pass none
holder.data().clear(NodeType.META.predicate(node -> node.getMetaKey().equals(metaKey)));
return;
}
}
holder.data().clear(set, NodeType.META.predicate(node -> node.getMetaKey().equals(metaKey)));
}
示例18
public Map<Set<Context>, Map<String, Boolean>> getPermanentPermissions(GDPermissionHolder holder) {
final PermissionHolder permissionHolder = this.getLuckPermsHolder(holder);
if (permissionHolder == null) {
return new HashMap<>();
}
final Collection<Node> nodes = permissionHolder.data().toCollection();
Map<Set<Context>, Map<String, Boolean>> permanentPermissionMap = new TreeMap<Set<Context>, Map<String, Boolean>>(CONTEXT_COMPARATOR);
for (Node node : nodes) {
if (node.getType() != NodeType.PERMISSION) {
continue;
}
final PermissionNode permissionNode = (PermissionNode) node;
final Set<Context> contexts = getGPContexts(node.getContexts());
Map<String, Boolean> permissionEntry = permanentPermissionMap.get(contexts);
if (permissionEntry == null) {
permissionEntry = new HashMap<>();
permissionEntry.put(permissionNode.getPermission(), node.getValue());
permanentPermissionMap.put(contexts, permissionEntry);
} else {
permissionEntry.put(permissionNode.getPermission(), node.getValue());
}
}
return permanentPermissionMap;
}
示例19
private void clearMeta(PermissionHolder holder, String metaKey, ContextSet set) {
if (set.size() == 1 && set.containsKey("server")) {
if (set.getAnyValue("server").get().equalsIgnoreCase("global")) {
// LP does not remove meta if passing only global context so we need to make sure to pass none
holder.data().clear(NodeType.META.predicate(node -> node.getMetaKey().equals(metaKey)));
return;
}
}
holder.data().clear(set, NodeType.META.predicate(node -> node.getMetaKey().equals(metaKey)));
}
示例20
@Override
public CompletableFuture<Boolean> clearParents() {
if (!this.holder.removeIf(this.type, null, NodeType.INHERITANCE::matches, true)) {
return CompletableFuture.completedFuture(false);
}
return save(this.holder).thenApply(v -> true);
}
示例21
@Override
public CompletableFuture<Boolean> clearParents(ImmutableContextSet contexts) {
Objects.requireNonNull(contexts, "contexts");
if (!this.holder.removeIf(this.type, contexts, NodeType.INHERITANCE::matches, true)) {
return CompletableFuture.completedFuture(false);
}
return save(this.holder).thenApply(v -> true);
}
示例22
private static ImmutableMap<String, String> nodesToOptions(Iterable<? extends Node> nodes) {
Map<String, String> builder = new HashMap<>();
int maxPrefixPriority = Integer.MIN_VALUE;
int maxSuffixPriority = Integer.MIN_VALUE;
for (Node n : nodes) {
if (!n.getValue()) continue;
if (!NodeType.META_OR_CHAT_META.matches(n)) continue;
if (n instanceof PrefixNode) {
PrefixNode pn = (PrefixNode) n;
if (pn.getPriority() > maxPrefixPriority) {
builder.put(Prefix.NODE_KEY, pn.getMetaValue());
maxPrefixPriority = pn.getPriority();
}
continue;
}
if (n instanceof SuffixNode) {
SuffixNode sn = (SuffixNode) n;
if (sn.getPriority() > maxSuffixPriority) {
builder.put(Suffix.NODE_KEY, sn.getMetaValue());
maxSuffixPriority = sn.getPriority();
}
continue;
}
if (n instanceof MetaNode) {
MetaNode mn = (MetaNode) n;
builder.put(mn.getMetaKey(), mn.getMetaValue());
}
}
return ImmutableMap.copyOf(builder);
}
示例23
@Override
public CompletableFuture<Boolean> setOption(ImmutableContextSet contexts, String key, String value) {
Objects.requireNonNull(contexts, "contexts");
Objects.requireNonNull(key, "key");
Objects.requireNonNull(value, "value");
Node node;
if (key.equalsIgnoreCase(Prefix.NODE_KEY) || key.equalsIgnoreCase(Suffix.NODE_KEY)) {
// special handling.
ChatMetaType type = ChatMetaType.valueOf(key.toUpperCase());
// remove all prefixes/suffixes from the user
this.holder.removeIf(this.type, contexts, type.nodeType()::matches, false);
MetaAccumulator metaAccumulator = this.holder.accumulateMeta(QueryOptionsImpl.DEFAULT_CONTEXTUAL.toBuilder().context(contexts).build());
int priority = metaAccumulator.getChatMeta(type).keySet().stream().mapToInt(e -> e).max().orElse(0);
priority += 10;
node = type.builder(value, priority).withContext(contexts).build();
} else {
// standard remove
this.holder.removeIf(this.type, contexts, NodeType.META.predicate(n -> n.getMetaKey().equals(key)), false);
node = Meta.builder(key, value).withContext(contexts).build();
}
this.holder.setNode(this.type, node, true);
return save(this.holder).thenApply(v -> true);
}
示例24
@Override
public CompletableFuture<Boolean> clearOptions(ImmutableContextSet contexts) {
Objects.requireNonNull(contexts, "contexts");
if (!this.holder.removeIf(this.type, contexts, NodeType.META_OR_CHAT_META::matches, false)) {
return CompletableFuture.completedFuture(false);
}
return save(this.holder).thenApply(v -> true);
}
示例25
@Override
public CompletableFuture<Boolean> clearOptions() {
if (!this.holder.removeIf(this.type, null, NodeType.META_OR_CHAT_META::matches, false)) {
return CompletableFuture.completedFuture(false);
}
return save(this.holder).thenApply(v -> true);
}
示例26
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder target, ArgumentList args, String label, CommandPermission permission) throws CommandException {
if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, target)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
int before = target.normalData().immutable().size();
MutableContextSet context = args.getContextOrDefault(0, plugin);
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
ArgumentPermissions.checkGroup(plugin, sender, target, context)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
target.removeIf(DataType.NORMAL, context.isEmpty() ? null : context, NodeType.PERMISSION::matches, false);
int changed = before - target.normalData().immutable().size();
if (changed == 1) {
Message.PERMISSION_CLEAR_SUCCESS_SINGULAR.send(sender, target.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context), changed);
} else {
Message.PERMISSION_CLEAR_SUCCESS.send(sender, target.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context), changed);
}
LoggedAction.build().source(sender).target(target)
.description("permission", "clear", context)
.build().submit(plugin, sender);
StorageAssistant.save(target, sender, plugin);
return CommandResult.SUCCESS;
}
示例27
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder target, ArgumentList args, String label, CommandPermission permission) throws CommandException {
if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, target)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
String key = args.get(0);
MutableContextSet context = args.getContextOrDefault(1, plugin);
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
ArgumentPermissions.checkGroup(plugin, sender, target, context) ||
ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
if (target.removeIf(DataType.NORMAL, context, NodeType.META.predicate(n -> n.hasExpiry() && n.getMetaKey().equalsIgnoreCase(key)), false)) {
Message.UNSET_META_TEMP_SUCCESS.send(sender, key, target.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context));
LoggedAction.build().source(sender).target(target)
.description("meta", "unsettemp", key, context)
.build().submit(plugin, sender);
StorageAssistant.save(target, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOESNT_HAVE_TEMP_META.send(sender, target.getFormattedDisplayName(), key, MessageUtils.contextSetToString(plugin.getLocaleManager(), context));
return CommandResult.STATE_ERROR;
}
}
示例28
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder target, ArgumentList args, String label, CommandPermission permission) throws CommandException {
if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, target)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
String key = args.get(0);
MutableContextSet context = args.getContextOrDefault(1, plugin);
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
ArgumentPermissions.checkGroup(plugin, sender, target, context) ||
ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
if (target.removeIf(DataType.NORMAL, context, NodeType.META.predicate(n -> !n.hasExpiry() && n.getMetaKey().equalsIgnoreCase(key)), false)) {
Message.UNSET_META_SUCCESS.send(sender, key, target.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context));
LoggedAction.build().source(sender).target(target)
.description("meta", "unset", key, context)
.build().submit(plugin, sender);
StorageAssistant.save(target, sender, plugin);
return CommandResult.SUCCESS;
} else {
Message.DOESNT_HAVE_META.send(sender, target.getFormattedDisplayName(), key, MessageUtils.contextSetToString(plugin.getLocaleManager(), context));
return CommandResult.STATE_ERROR;
}
}
示例29
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder target, ArgumentList args, String label, CommandPermission permission) throws CommandException {
if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, target)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
int before = target.normalData().immutable().size();
MutableContextSet context = args.getContextOrDefault(0, plugin);
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) || ArgumentPermissions.checkGroup(plugin, sender, target, context)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
if (context.isEmpty()) {
target.removeIf(DataType.NORMAL, null, NodeType.INHERITANCE::matches, true);
} else {
target.removeIf(DataType.NORMAL, context, NodeType.INHERITANCE::matches, true);
}
int changed = before - target.normalData().immutable().size();
if (changed == 1) {
Message.PARENT_CLEAR_SUCCESS_SINGULAR.send(sender, target.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context), changed);
} else {
Message.PARENT_CLEAR_SUCCESS.send(sender, target.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context), changed);
}
LoggedAction.build().source(sender).target(target)
.description("parent", "clear", context)
.build().submit(plugin, sender);
StorageAssistant.save(target, sender, plugin);
return CommandResult.SUCCESS;
}
示例30
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, PermissionHolder target, ArgumentList args, String label, CommandPermission permission) throws CommandException {
if (ArgumentPermissions.checkModifyPerms(plugin, sender, permission, target)) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
String groupName = args.getLowercase(0, DataConstraints.GROUP_NAME_TEST);
MutableContextSet context = args.getContextOrDefault(1, plugin);
Group group = StorageAssistant.loadGroup(groupName, sender, plugin, false);
if (group == null) {
return CommandResult.LOADING_ERROR;
}
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
ArgumentPermissions.checkGroup(plugin, sender, target, context) ||
ArgumentPermissions.checkGroup(plugin, sender, group, context) ||
ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
Message.COMMAND_NO_PERMISSION.send(sender);
return CommandResult.NO_PERMISSION;
}
target.removeIf(DataType.NORMAL, context, NodeType.INHERITANCE::matches, false);
target.setNode(DataType.NORMAL, Inheritance.builder(group.getName()).withContext(context).build(), true);
if (target.getType() == HolderType.USER) {
((User) target).getPrimaryGroup().setStoredValue(group.getName());
}
Message.SET_PARENT_SUCCESS.send(sender, target.getFormattedDisplayName(), group.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context));
LoggedAction.build().source(sender).target(target)
.description("parent", "set", group.getName(), context)
.build().submit(plugin, sender);
StorageAssistant.save(target, sender, plugin);
return CommandResult.SUCCESS;
}