public void setForecast(String name, int forecast) throws IOException {
        if (!order.isCurrentPlayer(pm.getPlayerWithName(name))) {
            pm.sendErrorPacket(name, "It is not your turn!", ErrorReason.NOT_YOUR_TURN);
            return;
        }
        if (stats.allForecastsMade()) {
            pm.sendErrorPacket(name, "All forecasts are already made!", ErrorReason.ALL_FORECASTS_MADE);
            return;
        }
        if (forecast > stats.getCurrentRoundNo()) {
            pm.sendErrorPacket(name, String.format("You can not make more than %d tricks this round!", stats.getCurrentRoundNo()), ErrorReason.TOO_MANY_FORECASTS);
            return;
        }
        LOG.debug(String.format("%s tries to make %d tricks!", name, forecast));
        log.addLine(String.format("%s tries to make %d tricks!", name, forecast));
        PlayerInterface p = pm.getPlayerWithName(name);
        stats.setForecast(p, stats.getCurrentRoundNo(), forecast);
        order.advanceCurrentPlayer();
        data.setActivePlayer(order.getCurrentPlayer());
        if (stats.allForecastsMade()) {
            LOG.info("All forecasts are made! Clearing table and setting new State...");
            data.clearCardsOnTable();
            data.setState(GameState.PLAYING);
        }
        pm.updateClients(data);
    }