diff --git a/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/AbstractDelegatingContextSet.java b/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/AbstractDelegatingContextSet.java index 7f24904d..8b02cae9 100644 --- a/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/AbstractDelegatingContextSet.java +++ b/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/AbstractDelegatingContextSet.java @@ -32,6 +32,25 @@ import java.util.Set; abstract class AbstractDelegatingContextSet extends AbstractSet implements DelegatingContextSet { + @Override + public int size() { + return getDelegate().size(); + } + + @Override + public boolean isEmpty() { + return getDelegate().isEmpty(); + } + + @Override + public boolean contains(Object o) { + if (o instanceof Context) { + Context context = (Context) o; + return !context.getKey().isEmpty() && !context.getValue().isEmpty() && getDelegate().has(context); + } + return false; + } + @Override public int hashCode() { return getDelegate().hashCode(); diff --git a/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingImmutableContextSet.java b/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingImmutableContextSet.java index b2e92f86..81c7ba0d 100644 --- a/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingImmutableContextSet.java +++ b/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingImmutableContextSet.java @@ -50,25 +50,6 @@ public class DelegatingImmutableContextSet extends AbstractDelegatingContextSet return this.delegate; } - @Override - public int size() { - return this.delegate.size(); - } - - @Override - public boolean isEmpty() { - return this.delegate.isEmpty(); - } - - @Override - public boolean contains(Object o) { - if (o instanceof Context) { - Context context = (Context) o; - return this.delegate.has(context); - } - return false; - } - @Nonnull @Override public Iterator iterator() { diff --git a/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingMutableContextSet.java b/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingMutableContextSet.java index 80750a71..af7055c0 100644 --- a/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingMutableContextSet.java +++ b/sponge/sponge-service/src/main/java/me/lucko/luckperms/sponge/service/context/DelegatingMutableContextSet.java @@ -50,25 +50,6 @@ public class DelegatingMutableContextSet extends AbstractDelegatingContextSet { return this.delegate; } - @Override - public int size() { - return this.delegate.size(); - } - - @Override - public boolean isEmpty() { - return this.delegate.isEmpty(); - } - - @Override - public boolean contains(Object o) { - if (o instanceof Context) { - Context context = (Context) o; - return this.delegate.has(context); - } - return false; - } - @Nonnull @Override public Iterator iterator() { @@ -80,6 +61,9 @@ public class DelegatingMutableContextSet extends AbstractDelegatingContextSet { if (context == null) { throw new NullPointerException("context"); } + if (context.getKey().isEmpty() || context.getValue().isEmpty()) { + return false; + } boolean has = this.delegate.has(context); this.delegate.add(context); @@ -90,6 +74,9 @@ public class DelegatingMutableContextSet extends AbstractDelegatingContextSet { public boolean remove(Object o) { if (o instanceof Context) { Context context = (Context) o; + if (context.getKey().isEmpty() || context.getValue().isEmpty()) { + return false; + } boolean had = this.delegate.has(context); this.delegate.remove(context.getKey(), context.getValue()); return had;