diff --git a/common/src/main/java/me/lucko/luckperms/core/PermissionHolder.java b/common/src/main/java/me/lucko/luckperms/core/PermissionHolder.java index fc4282179..3b931a24d 100644 --- a/common/src/main/java/me/lucko/luckperms/core/PermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/core/PermissionHolder.java @@ -284,7 +284,7 @@ public abstract class PermissionHolder { private static Tristate hasPermission(Set toQuery, Node node) { for (Node n : toQuery) { - if (n.equalsIgnoringValue(node)) { + if (n.almostEquals(node)) { return n.getTristate(); } } @@ -425,7 +425,13 @@ public abstract class PermissionHolder { throw new ObjectLacksException(); } - nodes.remove(node); + Iterator iterator = nodes.iterator(); + while (iterator.hasNext()) { + Node entry = iterator.next(); + if (entry.almostEquals(node)) { + iterator.remove(); + } + } if (node.isGroupNode()) { plugin.getApiProvider().fireEventAsync(new GroupRemoveEvent(new PermissionHolderLink(this), @@ -445,7 +451,13 @@ public abstract class PermissionHolder { throw new ObjectLacksException(); } - transientNodes.remove(node); + Iterator iterator = transientNodes.iterator(); + while (iterator.hasNext()) { + Node entry = iterator.next(); + if (entry.almostEquals(node)) { + iterator.remove(); + } + } if (node.isGroupNode()) { plugin.getApiProvider().fireEventAsync(new GroupRemoveEvent(new PermissionHolderLink(this),