@Override public void sideboard() { for (MatchPlayer player : this.players) { if (!player.hasQuit()) { if (player.getDeck() != null) { player.setSideboarding(); player.getPlayer().sideboard(this, player.getDeck()); } else { logger.error("Player " + player.getName() + " has no deck: " + player.getPlayer().getId()); } } } synchronized (this) { while (!isDoneSideboarding()) { try { this.wait(); } catch (InterruptedException ex) { } } } }
@Override public boolean hasEnded() { // Some workarounds to end match if for unknown reason the match was not ended regularly if (getGame() == null && isDoneSideboarding()) { checkIfMatchEnds(); } if (getGame() != null && getGame().hasEnded()) { for (MatchPlayer matchPlayer : players) { if (matchPlayer.getPlayer().hasQuit() && !matchPlayer.hasQuit()) { logger.warn("MatchPlayer was not set to quit matchId " + this.getId() + " - " + matchPlayer.getName()); matchPlayer.setQuit(true); } } checkIfMatchEnds(); } return endTime != null; }