diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index 657c8ef5027..3834ad3e11e 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -2,6 +2,8 @@ package mage.watchers; import java.io.Serializable; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.util.UUID; import mage.constants.WatcherScope; import mage.game.Game; @@ -76,6 +78,15 @@ public abstract class Watcher implements Serializable { public abstract void watch(GameEvent event, Game game); - public abstract Watcher copy(); + public T copy(){ + try { + Constructor constructor = this.getClass().getDeclaredConstructor(getClass()); + constructor.setAccessible(true); + return (T) constructor.newInstance(this); + } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } + return null; + } } diff --git a/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java index c6f896e376d..57506bf6832 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java @@ -34,10 +34,10 @@ public class BlockedAttackerWatcher extends Watcher { } } - @Override - public BlockedAttackerWatcher copy() { - return new BlockedAttackerWatcher(this); - } +// @Override +// public BlockedAttackerWatcher copy() { +// return new BlockedAttackerWatcher(this); +// } @Override public void watch(GameEvent event, Game game) { diff --git a/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java b/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java index 0c2f96491db..b27a6a62473 100644 --- a/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java @@ -36,9 +36,4 @@ public class BloodthirstWatcher extends Watcher { } } } - - @Override - public BloodthirstWatcher copy() { - return new BloodthirstWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java index e2ce491c06a..7f30b3b5ca4 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java @@ -81,10 +81,10 @@ public class CastSpellLastTurnWatcher extends Watcher { } return 0; } - - @Override - public CastSpellLastTurnWatcher copy() { - return new CastSpellLastTurnWatcher(this); - } +// +// @Override +// public CastSpellLastTurnWatcher copy() { +// return new CastSpellLastTurnWatcher(this); +// } } diff --git a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java index 6091ea5de8c..f99ca683b4d 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java @@ -60,9 +60,9 @@ public class CastSpellYourLastTurnWatcher extends Watcher { public Integer getAmountOfSpellsCastOnPlayersTurn(UUID playerId) { return amountOfSpellsCastOnPrevTurn.getOrDefault(playerId, 0); } - - @Override - public CastSpellYourLastTurnWatcher copy() { - return new CastSpellYourLastTurnWatcher(this); - } +// +// @Override +// public CastSpellYourLastTurnWatcher copy() { +// return new CastSpellYourLastTurnWatcher(this); +// } } diff --git a/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java b/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java index 9c7fdb1bb2d..0f28c0a3966 100644 --- a/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java @@ -46,11 +46,6 @@ public class DamageDoneWatcher extends Watcher { this.damagedObjects = new HashMap<>(watcher.damagedObjects); } - @Override - public DamageDoneWatcher copy() { - return new DamageDoneWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { diff --git a/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java b/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java index 4e2877f1d95..349c6ce5332 100644 --- a/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java @@ -33,9 +33,9 @@ public class MorbidWatcher extends Watcher { } } - @Override - public MorbidWatcher copy() { - return new MorbidWatcher(this); - } +// @Override +// public MorbidWatcher copy() { +// return new MorbidWatcher(this); +// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java b/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java index d95ef4b62d0..21ab1cc6a1f 100644 --- a/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java @@ -56,8 +56,4 @@ public class PlanarRollWatcher extends Watcher { numberTimesPlanarDieRolled.clear(); } - @Override - public PlanarRollWatcher copy() { - return new PlanarRollWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java index a14a63fe391..d3e26cfa744 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java @@ -30,10 +30,6 @@ public class PlayerDamagedBySourceWatcher extends Watcher { this.damageSourceIds.addAll(watcher.damageSourceIds); } - @Override - public PlayerDamagedBySourceWatcher copy() { - return new PlayerDamagedBySourceWatcher(this); - } @Override public void watch(GameEvent event, Game game) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java index a04027185d8..d6a28c4d396 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java @@ -77,8 +77,8 @@ public class PlayerLostLifeNonCombatWatcher extends Watcher { amountOfLifeLostThisTurn.clear(); } - @Override - public PlayerLostLifeNonCombatWatcher copy() { - return new PlayerLostLifeNonCombatWatcher(this); - } +// @Override +// public PlayerLostLifeNonCombatWatcher copy() { +// return new PlayerLostLifeNonCombatWatcher(this); +// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java index c12b3711a0e..b90a4e44578 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java @@ -75,8 +75,8 @@ public class PlayerLostLifeWatcher extends Watcher { amountOfLifeLostThisTurn.clear(); } - @Override - public PlayerLostLifeWatcher copy() { - return new PlayerLostLifeWatcher(this); - } +// @Override +// public PlayerLostLifeWatcher copy() { +// return new PlayerLostLifeWatcher(this); +// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java index 9587c7001df..ebd2eda0896 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java @@ -35,10 +35,6 @@ public class PlayersAttackedThisTurnWatcher extends Watcher { } } - @Override - public PlayersAttackedThisTurnWatcher copy() { - return new PlayersAttackedThisTurnWatcher(this); - } @Override public void watch(GameEvent event, Game game) {