diff --git a/api/src/main/java/net/luckperms/api/model/PermissionHolder.java b/api/src/main/java/net/luckperms/api/model/PermissionHolder.java index 08efb1b11..184a1534b 100644 --- a/api/src/main/java/net/luckperms/api/model/PermissionHolder.java +++ b/api/src/main/java/net/luckperms/api/model/PermissionHolder.java @@ -124,19 +124,19 @@ public interface PermissionHolder { @NonNull CachedDataManager getCachedData(); /** - * Gets the {@link Data} of a particular type. + * Gets the {@link NodeMap} of a particular type. * * @param dataType the data type * @return the data */ - Data getData(@NonNull DataType dataType); + NodeMap getData(@NonNull DataType dataType); /** * Gets the holders {@link DataType#NORMAL} data. * * @return the normal data */ - @NonNull Data data(); + @NonNull NodeMap data(); /** * Gets the holders {@link DataType#TRANSIENT} data. @@ -154,7 +154,7 @@ public interface PermissionHolder { * * @return the transient data */ - @NonNull Data transientData(); + @NonNull NodeMap transientData(); /** * Encapsulates a store of data ({@link Node}s) within a {@link PermissionHolder}. @@ -170,7 +170,7 @@ public interface PermissionHolder { * made already. This can be done via {@link UserManager#loadUser(UUID)} or * {@link GroupManager#loadGroup(String)} respectively.

*/ - interface Data { + interface NodeMap { /** * Gets a map of the {@link Node}s contained within this instance, diff --git a/api/src/main/java/net/luckperms/api/model/TemporaryMergeBehaviour.java b/api/src/main/java/net/luckperms/api/model/TemporaryMergeBehaviour.java index 944aba550..4bb47be8b 100644 --- a/api/src/main/java/net/luckperms/api/model/TemporaryMergeBehaviour.java +++ b/api/src/main/java/net/luckperms/api/model/TemporaryMergeBehaviour.java @@ -25,17 +25,18 @@ package net.luckperms.api.model; +import net.luckperms.api.model.PermissionHolder.NodeMap; import net.luckperms.api.node.Node; /** * Controls how the implementation should behave when new temporary nodes are set * that would otherwise conflict with existing entries. * - *

The default behaviour of {@link PermissionHolder.Data#add(Node)} is + *

The default behaviour of {@link NodeMap#add(Node)} is * to return a result of {@link DataMutateResult#ALREADY_HAS} when an equivalent * node is found. This can be replicated using {@link #FAIL_WITH_ALREADY_HAS}.

* - *

However, the {@link PermissionHolder.Data#add(Node, TemporaryMergeBehaviour)} + *

However, the {@link NodeMap#add(Node, TemporaryMergeBehaviour)} * method allows this behaviour to be customized for temporary permissions.

*/ public enum TemporaryMergeBehaviour { diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java index 30edb3842..67c3682b9 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java @@ -201,13 +201,13 @@ public class LPPermissionAttachment extends PermissionAttachment { // remove transient permissions from the holder which were added by this attachment & equal the permission User user = this.permissible.getUser(); - user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this && n.getKey().equals(name)); + user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this && n.getKey().equals(name), false); } private void clearInternal() { // remove all transient permissions added by this attachment User user = this.permissible.getUser(); - user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this); + user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this, false); } @Override diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java index 2292f4dd8..bd24889ef 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/vault/LuckPermsVaultChat.java @@ -45,7 +45,7 @@ import net.luckperms.api.context.ImmutableContextSet; import net.luckperms.api.model.DataType; import net.luckperms.api.node.ChatMetaType; import net.luckperms.api.node.NodeBuilder; -import net.luckperms.api.node.types.MetaNode; +import net.luckperms.api.node.NodeType; import net.luckperms.api.query.Flag; import net.luckperms.api.query.QueryOptions; import net.milkbowl.vault.chat.Chat; @@ -266,7 +266,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat { } // remove all prefixes/suffixes directly set on the user/group - holder.removeIf(DataType.NORMAL, null, node -> type.nodeType().matches(node)); + holder.removeIf(DataType.NORMAL, null, type.nodeType()::matches, false); if (value == null) { this.vaultPermission.holderSave(holder); @@ -292,7 +292,7 @@ public class LuckPermsVaultChat extends AbstractVaultChat { logMsg("#setMeta: %s - %s - %s - %s", holder.getPlainDisplayName(), key, value, world); } - holder.removeIf(DataType.NORMAL, null, n -> n instanceof MetaNode && ((MetaNode) n).getMetaKey().equals(key)); + holder.removeIf(DataType.NORMAL, null, NodeType.META.predicate(n -> n.getMetaKey().equals(key)), false); if (value == null) { this.vaultPermission.holderSave(holder); diff --git a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java index 952f717f2..70524cda0 100644 --- a/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/api/implementation/ApiPermissionHolder.java @@ -52,13 +52,13 @@ import java.util.function.Predicate; public class ApiPermissionHolder implements net.luckperms.api.model.PermissionHolder { private final PermissionHolder handle; - private final DataImpl normalData; - private final DataImpl transientData; + private final NodeMapImpl normalData; + private final NodeMapImpl transientData; ApiPermissionHolder(PermissionHolder handle) { this.handle = Objects.requireNonNull(handle, "handle"); - this.normalData = new DataImpl(DataType.NORMAL); - this.transientData = new DataImpl(DataType.TRANSIENT); + this.normalData = new NodeMapImpl(DataType.NORMAL); + this.transientData = new NodeMapImpl(DataType.TRANSIENT); } PermissionHolder getHandle() { @@ -81,7 +81,7 @@ public class ApiPermissionHolder implements net.luckperms.api.model.PermissionHo } @Override - public Data getData(@NonNull DataType dataType) { + public NodeMap getData(@NonNull DataType dataType) { switch (dataType) { case NORMAL: return this.normalData; @@ -93,12 +93,12 @@ public class ApiPermissionHolder implements net.luckperms.api.model.PermissionHo } @Override - public @NonNull Data data() { + public @NonNull net.luckperms.api.model.PermissionHolder.NodeMap data() { return this.normalData; } @Override - public @NonNull Data transientData() { + public @NonNull net.luckperms.api.model.PermissionHolder.NodeMap transientData() { return this.transientData; } @@ -127,10 +127,10 @@ public class ApiPermissionHolder implements net.luckperms.api.model.PermissionHo this.handle.auditTemporaryNodes(); } - private class DataImpl implements Data { + private class NodeMapImpl implements NodeMap { private final DataType dataType; - DataImpl(DataType dataType) { + NodeMapImpl(DataType dataType) { this.dataType = dataType; } diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaClear.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaClear.java index 85537315f..f1b68815b 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaClear.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaClear.java @@ -101,9 +101,9 @@ public class MetaClear extends SharedSubCommand { } if (context.isEmpty()) { - holder.removeIf(DataType.NORMAL, null, type::matches); + holder.removeIf(DataType.NORMAL, null, type::matches, false); } else { - holder.removeIf(DataType.NORMAL, context, type::matches); + holder.removeIf(DataType.NORMAL, context, type::matches, false); } int changed = before - holder.normalData().immutable().size(); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveChatMeta.java index 609191a76..0bb3e53c5 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveChatMeta.java @@ -89,10 +89,7 @@ public class MetaRemoveChatMeta extends SharedSubCommand { // Handle bulk removal if (meta.equalsIgnoreCase("null") || meta.equals("*")) { - holder.removeIf(DataType.NORMAL, null, n -> this.type.nodeType().matches(n) && - this.type.nodeType().cast(n).getPriority() == priority && - !n.hasExpiry() && - n.getContexts().equals(context)); + holder.removeIf(DataType.NORMAL, context, this.type.nodeType().predicate(n -> n.getPriority() == priority && !n.hasExpiry()), false); Message.BULK_REMOVE_CHATMETA_SUCCESS.send(sender, holder.getFormattedDisplayName(), this.type.name().toLowerCase(), priority, MessageUtils.contextSetToString(plugin.getLocaleManager(), context)); LoggedAction.build().source(sender).target(holder) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveTempChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveTempChatMeta.java index a7fb182f6..1ca633f8d 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveTempChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaRemoveTempChatMeta.java @@ -89,10 +89,7 @@ public class MetaRemoveTempChatMeta extends SharedSubCommand { // Handle bulk removal if (meta.equalsIgnoreCase("null") || meta.equals("*")) { - holder.removeIf(DataType.NORMAL, null, n -> this.type.nodeType().matches(n) && - this.type.nodeType().cast(n).getPriority() == priority && - n.hasExpiry() && - n.getContexts().equals(context)); + holder.removeIf(DataType.NORMAL, context, this.type.nodeType().predicate(n -> n.getPriority() == priority && n.hasExpiry()), false); Message.BULK_REMOVE_TEMP_CHATMETA_SUCCESS.send(sender, holder.getFormattedDisplayName(), this.type.name().toLowerCase(), priority, MessageUtils.contextSetToString(plugin.getLocaleManager(), context)); LoggedAction.build().source(sender).target(holder) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSet.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSet.java index b1053b75a..66f13fd59 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSet.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSet.java @@ -52,7 +52,7 @@ import net.luckperms.api.context.MutableContextSet; import net.luckperms.api.model.DataType; import net.luckperms.api.node.Node; import net.luckperms.api.node.NodeEqualityPredicate; -import net.luckperms.api.node.types.MetaNode; +import net.luckperms.api.node.NodeType; import java.util.List; @@ -86,7 +86,7 @@ public class MetaSet extends SharedSubCommand { return CommandResult.STATE_ERROR; } - holder.removeIf(DataType.NORMAL, context, n -> n instanceof MetaNode && !n.hasExpiry() && ((MetaNode) n).getMetaKey().equalsIgnoreCase(key)); + holder.removeIf(DataType.NORMAL, context, NodeType.META.predicate(n -> !n.hasExpiry() && n.getMetaKey().equalsIgnoreCase(key)), false); holder.setNode(DataType.NORMAL, node, true); TextComponent.Builder builder = Message.SET_META_SUCCESS.asComponent(plugin.getLocaleManager(), key, value, holder.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context)).toBuilder(); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java index d79dc718d..2e9cc4552 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetChatMeta.java @@ -107,7 +107,7 @@ public class MetaSetChatMeta extends SharedSubCommand { } // remove all other prefixes/suffixes set in these contexts - holder.removeIf(DataType.NORMAL, context, node -> this.type.nodeType().matches(node)); + holder.removeIf(DataType.NORMAL, context, this.type.nodeType()::matches, false); // determine the priority to set at if (priority == Integer.MIN_VALUE) { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTemp.java index ab7522970..f56c27d0e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTemp.java @@ -55,7 +55,7 @@ import net.luckperms.api.model.DataType; import net.luckperms.api.model.TemporaryMergeBehaviour; import net.luckperms.api.node.Node; import net.luckperms.api.node.NodeEqualityPredicate; -import net.luckperms.api.node.types.MetaNode; +import net.luckperms.api.node.NodeType; import java.util.List; @@ -91,7 +91,7 @@ public class MetaSetTemp extends SharedSubCommand { return CommandResult.STATE_ERROR; } - holder.removeIf(DataType.NORMAL, context, n -> n instanceof MetaNode && n.hasExpiry() && ((MetaNode) n).getMetaKey().equalsIgnoreCase(key)); + holder.removeIf(DataType.NORMAL, context, NodeType.META.predicate(n -> n.hasExpiry() && n.getMetaKey().equalsIgnoreCase(key)), false); duration = holder.setNode(DataType.NORMAL, node, modifier).getMergedNode().getExpiry().getEpochSecond(); TextComponent.Builder builder = Message.SET_META_TEMP_SUCCESS.asComponent(plugin.getLocaleManager(), key, value, holder.getFormattedDisplayName(), DurationFormatter.LONG.formatDateDiff(duration), MessageUtils.contextSetToString(plugin.getLocaleManager(), context)).toBuilder(); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java index bd9c9d52a..1f5872e60 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaSetTempChatMeta.java @@ -117,7 +117,7 @@ public class MetaSetTempChatMeta extends SharedSubCommand { } // remove all other prefixes/suffixes set in these contexts - holder.removeIf(DataType.NORMAL, context, node -> this.type.nodeType().matches(node)); + holder.removeIf(DataType.NORMAL, context, this.type.nodeType()::matches, false); // determine the priority to set at if (priority == Integer.MIN_VALUE) { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnset.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnset.java index be8cb8a31..fb086da76 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnset.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnset.java @@ -46,7 +46,7 @@ import me.lucko.luckperms.common.util.Predicates; import net.luckperms.api.context.MutableContextSet; import net.luckperms.api.model.DataType; -import net.luckperms.api.node.types.MetaNode; +import net.luckperms.api.node.NodeType; import java.util.List; @@ -72,7 +72,7 @@ public class MetaUnset extends SharedSubCommand { return CommandResult.NO_PERMISSION; } - if (holder.removeIf(DataType.NORMAL, context, n -> n instanceof MetaNode && !n.hasExpiry() && ((MetaNode) n).getMetaKey().equalsIgnoreCase(key))) { + if (holder.removeIf(DataType.NORMAL, context, NodeType.META.predicate(n -> !n.hasExpiry() && n.getMetaKey().equalsIgnoreCase(key)), false)) { Message.UNSET_META_SUCCESS.send(sender, key, holder.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context)); LoggedAction.build().source(sender).target(holder) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnsetTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnsetTemp.java index a37ba6a7d..d32b396c1 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnsetTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/meta/MetaUnsetTemp.java @@ -46,7 +46,7 @@ import me.lucko.luckperms.common.util.Predicates; import net.luckperms.api.context.MutableContextSet; import net.luckperms.api.model.DataType; -import net.luckperms.api.node.types.MetaNode; +import net.luckperms.api.node.NodeType; import java.util.List; @@ -72,7 +72,7 @@ public class MetaUnsetTemp extends SharedSubCommand { return CommandResult.NO_PERMISSION; } - if (holder.removeIf(DataType.NORMAL, context, n -> n instanceof MetaNode && n.hasExpiry() && ((MetaNode) n).getMetaKey().equalsIgnoreCase(key))) { + if (holder.removeIf(DataType.NORMAL, context, NodeType.META.predicate(n -> n.hasExpiry() && n.getMetaKey().equalsIgnoreCase(key)), false)) { Message.UNSET_META_TEMP_SUCCESS.send(sender, key, holder.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context)); LoggedAction.build().source(sender).target(holder) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentClearTrack.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentClearTrack.java index 437646c5e..a8bbbe78e 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentClearTrack.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentClearTrack.java @@ -93,11 +93,7 @@ public class ParentClearTrack extends SharedSubCommand { return CommandResult.NO_PERMISSION; } - if (context.isEmpty()) { - holder.removeIf(DataType.NORMAL, null, NodeType.INHERITANCE.predicate(n -> track.containsGroup(n.getGroupName()))); - } else { - holder.removeIf(DataType.NORMAL, null, NodeType.INHERITANCE.predicate(n -> n.getContexts().equals(context) && track.containsGroup(n.getGroupName()))); - } + holder.removeIf(DataType.NORMAL, context.isEmpty() ? null : context, NodeType.INHERITANCE.predicate(n -> track.containsGroup(n.getGroupName())), false); if (holder.getType() == HolderType.USER) { plugin.getUserManager().giveDefaultIfNeeded(((User) holder), false); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentSetTrack.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentSetTrack.java index 2b417b00b..0cc1c90c6 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentSetTrack.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentSetTrack.java @@ -114,7 +114,7 @@ public class ParentSetTrack extends SharedSubCommand { return CommandResult.NO_PERMISSION; } - holder.removeIf(DataType.NORMAL, null, NodeType.INHERITANCE.predicate(n -> n.getContexts().equals(context) && track.containsGroup(n.getGroupName()))); + holder.removeIf(DataType.NORMAL, context, NodeType.INHERITANCE.predicate(n -> track.containsGroup(n.getGroupName())), false); holder.setNode(DataType.NORMAL, Inheritance.builder(group.getName()).withContext(context).build(), true); Message.SET_TRACK_PARENT_SUCCESS.send(sender, holder.getFormattedDisplayName(), track.getName(), group.getFormattedDisplayName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context)); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionClear.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionClear.java index c719c37e5..a6e5c0ac6 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionClear.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/permission/PermissionClear.java @@ -46,7 +46,7 @@ import me.lucko.luckperms.common.util.Predicates; import net.luckperms.api.context.MutableContextSet; import net.luckperms.api.model.DataType; -import net.luckperms.api.node.types.PermissionNode; +import net.luckperms.api.node.NodeType; import java.util.List; @@ -72,11 +72,7 @@ public class PermissionClear extends SharedSubCommand { return CommandResult.NO_PERMISSION; } - if (context.isEmpty()) { - holder.removeIf(DataType.NORMAL, null, node -> node instanceof PermissionNode); - } else { - holder.removeIf(DataType.NORMAL, context, node -> node instanceof PermissionNode); - } + holder.removeIf(DataType.NORMAL, context.isEmpty() ? null : context, NodeType.PERMISSION::matches, false); int changed = before - holder.normalData().immutable().size(); if (changed == 1) { diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetDisplayName.java b/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetDisplayName.java index 3a1fc9939..2cde8f100 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetDisplayName.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetDisplayName.java @@ -90,7 +90,7 @@ public class GroupSetDisplayName extends SubCommand { return CommandResult.STATE_ERROR; } - group.removeIf(DataType.NORMAL, context, n -> n instanceof DisplayNameNode); + group.removeIf(DataType.NORMAL, context, NodeType.DISPLAY_NAME::matches, false); if (name.equals(group.getName())) { Message.GROUP_SET_DISPLAY_NAME_REMOVED.send(sender, group.getName(), MessageUtils.contextSetToString(plugin.getLocaleManager(), context)); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetWeight.java b/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetWeight.java index 3078bcac9..460234fb6 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetWeight.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/group/GroupSetWeight.java @@ -61,7 +61,7 @@ public class GroupSetWeight extends SubCommand { int weight = ArgumentParser.parsePriority(0, args); - group.removeIf(DataType.NORMAL, null, NodeType.WEIGHT::matches); + group.removeIf(DataType.NORMAL, null, NodeType.WEIGHT::matches, false); group.setNode(DataType.NORMAL, Weight.builder(weight).build(), true); Message.GROUP_SET_WEIGHT.send(sender, weight, group.getFormattedDisplayName()); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/log/LogNotify.java b/common/src/main/java/me/lucko/luckperms/common/commands/log/LogNotify.java index c6ea49f1b..f4e2f4836 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/log/LogNotify.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/log/LogNotify.java @@ -79,7 +79,7 @@ public class LogNotify extends SubCommand { user.setNode(DataType.NORMAL, NodeBuilders.determineMostApplicable(IGNORE_NODE).build(), true); } else { // remove the perm - user.removeIf(DataType.NORMAL, ImmutableContextSetImpl.EMPTY, n -> n.getKey().equalsIgnoreCase(IGNORE_NODE)); + user.removeIf(DataType.NORMAL, ImmutableContextSetImpl.EMPTY, n -> n.getKey().equalsIgnoreCase(IGNORE_NODE), false); } plugin.getStorage().saveUser(user).join(); diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/migration/MigrationUtils.java b/common/src/main/java/me/lucko/luckperms/common/commands/migration/MigrationUtils.java index eb13c05d2..1201d8068 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/migration/MigrationUtils.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/migration/MigrationUtils.java @@ -57,7 +57,7 @@ public final class MigrationUtils { } public static void setGroupWeight(Group group, int weight) { - group.removeIf(DataType.NORMAL, null, NodeType.WEIGHT::matches); + group.removeIf(DataType.NORMAL, null, NodeType.WEIGHT::matches, false); group.setNode(DataType.NORMAL, Weight.builder(weight).build(), true); } diff --git a/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java index 8be3b53b5..bf03a2330 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java @@ -478,10 +478,6 @@ public abstract class PermissionHolder { return DataMutateResult.SUCCESS; } - public boolean removeIf(DataType dataType, @Nullable ContextSet contextSet, Predicate predicate) { - return removeIf(dataType, contextSet, predicate, false); - } - public boolean removeIf(DataType dataType, @Nullable ContextSet contextSet, Predicate predicate, boolean giveDefault) { NodeMap data = getData(dataType); ImmutableCollection before = data.immutable().values(); diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java index eb8e0bb90..f5cbc900c 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java @@ -202,13 +202,13 @@ public class LPPermissionAttachment extends PermissionAttachment { // remove transient permissions from the holder which were added by this attachment & equal the permission User user = this.permissible.getUser(); - user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this && n.getKey().equals(name)); + user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this && n.getKey().equals(name), false); } private void clearInternal() { // remove all transient permissions added by this attachment User user = this.permissible.getUser(); - user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this); + user.removeIf(DataType.TRANSIENT, null, n -> n.getMetadata(TRANSIENT_SOURCE_KEY).orElse(null) == this, false); } @Override