diff --git a/Mage.Server/src/main/java/mage/server/draft/DraftManagerImpl.java b/Mage.Server/src/main/java/mage/server/draft/DraftManagerImpl.java index ffa104b61ef..749982c4c09 100644 --- a/Mage.Server/src/main/java/mage/server/draft/DraftManagerImpl.java +++ b/Mage.Server/src/main/java/mage/server/draft/DraftManagerImpl.java @@ -69,7 +69,10 @@ public class DraftManagerImpl implements DraftManager { @Override public void timeout(UUID gameId, UUID userId) { - draftControllers.get(gameId).timeout(userId); + if (draftControllers.containsKey(gameId)) { + // timeout calls from timer, so it can be too late here (e.g. after real draft ends) + draftControllers.get(gameId).timeout(userId); + } } @Override diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 36624034e15..9238ac9a01a 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -537,6 +537,7 @@ public abstract class PlayerImpl implements Player, Serializable { // runtime check: inRange filled on beginTurn, but unit tests adds cards by cheat engine before game starting, // so inRange will be empty and some ETB effects can be broken (example: Spark Double puts direct to battlefield). // Cheat engine already have a workaround, so that error must not be visible in normal situation. + // TODO: that's error possible on GameView call before real game start (too laggy players on starting???) throw new IllegalStateException("Wrong code usage (game is not started, but you call getInRange in some effects)."); }