diff --git a/Mage/src/main/java/mage/filter/FilterCard.java b/Mage/src/main/java/mage/filter/FilterCard.java index cd26cea65f4..7a873eab6f5 100644 --- a/Mage/src/main/java/mage/filter/FilterCard.java +++ b/Mage/src/main/java/mage/filter/FilterCard.java @@ -1,4 +1,3 @@ - package mage.filter; import java.util.ArrayList; @@ -68,6 +67,9 @@ public class FilterCard extends FilterObject { } public void add(ObjectPlayerPredicate predicate) { + if (isLockedFilter()) { + throw new UnsupportedOperationException("You may not modify a locked filter"); + } extraPredicates.add(predicate); } diff --git a/Mage/src/main/java/mage/filter/FilterImpl.java b/Mage/src/main/java/mage/filter/FilterImpl.java index a077c1e6ad4..7ab6e9964ff 100644 --- a/Mage/src/main/java/mage/filter/FilterImpl.java +++ b/Mage/src/main/java/mage/filter/FilterImpl.java @@ -1,4 +1,3 @@ - package mage.filter; import java.util.ArrayList; @@ -17,13 +16,14 @@ public abstract class FilterImpl implements Filter { protected List> predicates = new ArrayList<>(); protected String message; - protected boolean lockedFilter = false; // Helps to prevent to "accidently" modify the StaticFilters objects + protected boolean lockedFilter; // Helps to prevent to "accidently" modify the StaticFilters objects @Override public abstract FilterImpl copy(); public FilterImpl(String name) { this.message = name; + this.lockedFilter = false; } public FilterImpl(final FilterImpl filter) { diff --git a/Mage/src/main/java/mage/filter/FilterPermanent.java b/Mage/src/main/java/mage/filter/FilterPermanent.java index 06530a5140e..963334c1870 100644 --- a/Mage/src/main/java/mage/filter/FilterPermanent.java +++ b/Mage/src/main/java/mage/filter/FilterPermanent.java @@ -1,4 +1,3 @@ - package mage.filter; import java.util.ArrayList; @@ -27,11 +26,6 @@ public class FilterPermanent extends FilterObject implements FilterIn super("permanent"); } - public FilterPermanent(final FilterPermanent filter) { - super(filter); - this.extraPredicates = new ArrayList<>(filter.extraPredicates); - } - public FilterPermanent(String name) { super(name); } @@ -43,11 +37,16 @@ public class FilterPermanent extends FilterObject implements FilterIn public FilterPermanent(Set subtypesList, String name) { super(name); - for (SubType subtype: subtypesList) { + for (SubType subtype : subtypesList) { this.add(new SubtypePredicate(subtype)); } } + public FilterPermanent(final FilterPermanent filter) { + super(filter); + this.extraPredicates = new ArrayList<>(filter.extraPredicates); + } + @Override public boolean checkObjectClass(Object object) { return object instanceof Permanent; @@ -63,6 +62,9 @@ public class FilterPermanent extends FilterObject implements FilterIn } public void add(ObjectPlayerPredicate predicate) { + if (isLockedFilter()) { + throw new UnsupportedOperationException("You may not modify a locked filter"); + } extraPredicates.add(predicate); } diff --git a/Mage/src/main/java/mage/filter/FilterPlayer.java b/Mage/src/main/java/mage/filter/FilterPlayer.java index 323180e1b9d..907dfb34340 100644 --- a/Mage/src/main/java/mage/filter/FilterPlayer.java +++ b/Mage/src/main/java/mage/filter/FilterPlayer.java @@ -1,4 +1,3 @@ - package mage.filter; import java.util.ArrayList; @@ -34,6 +33,9 @@ public class FilterPlayer extends FilterImpl { } public void add(ObjectPlayerPredicate predicate) { + if (isLockedFilter()) { + throw new UnsupportedOperationException("You may not modify a locked filter"); + } extraPredicates.add(predicate); } diff --git a/Mage/src/main/java/mage/filter/FilterStackObject.java b/Mage/src/main/java/mage/filter/FilterStackObject.java index dc180df68d1..f7627c2f751 100644 --- a/Mage/src/main/java/mage/filter/FilterStackObject.java +++ b/Mage/src/main/java/mage/filter/FilterStackObject.java @@ -1,4 +1,3 @@ - package mage.filter; import java.util.ArrayList; @@ -42,6 +41,9 @@ public class FilterStackObject extends FilterObject { } public void add(ObjectPlayerPredicate predicate) { + if (isLockedFilter()) { + throw new UnsupportedOperationException("You may not modify a locked filter"); + } extraPredicates.add(predicate); }