public void playCard(IServerPlayer p, CardInterface c) throws IOException {
        if (!order.isCurrentPlayer(p)) {
            pm.sendErrorPacket(p.getName(), "It is not your turn!", ErrorReason.NOT_YOUR_TURN);
            return;
        }
        if (!stats.allForecastsMade()) {
            pm.sendErrorPacket(p.getName(), "There are still forecasts missing!", ErrorReason.NOT_ALL_FORECASTS_MADE);
            return;
        }

        // check if the player is allowed to put this card on the table
        if (p.hasCard(c)) {
            int val = c.getValue();
            if (val == 0 || val == CardNames.getCardsPerNation() - 1) {
                handleAddCard(p, c);
            } else if (t.getNationOnTable() >= 0) {
                if (p.hasNation(t.getNationOnTable()) && t.getNationOnTable() != c.getNation()) {
                    pm.sendErrorPacket(p.getName(), String.format("You have to play a card of the nation %s!", t.getNationOnTable()), ErrorReason.WRONG_NATION_PLAYED);
                } else {
                    handleAddCard(p, c);
                }
            } else {
                handleAddCard(p, c);
            }
        } else {
            pm.sendErrorPacket(p.getName(), "You do not have this card! This incident will be reported.", ErrorReason.DOES_NOT_HAVE_CARD);
        }

    }