public void notifyAITrade(Trade tr) {
		if (_ais.size() == 0) return;
		catanai.Player mover;
		catanai.Move offer;
		String mover_id = Integer.toString(_server.getClientPool()
				.getPlayerFromTrade(tr.getTradeID()));
		BoardObject.type ins[] = tr.getIns();
		BoardObject.type out[] = tr.getOuts();
		ArrayList<Resource> in_r = new ArrayList<Resource>();
		ArrayList<Resource> out_r = new ArrayList<Resource>();
		for (BoardObject.type tp : ins) {
			if (tp == null) continue;
			in_r.add(RES_C_REV.get(tp));
		}
		for (BoardObject.type tp : out) {
			if (tp == null) continue;
			out_r.add(RES_C_REV.get(tp));
		}
		for (AIPlayer ai : _ais) {
			mover = ai.getPlayer(mover_id);
			if (mover == ai) continue;
			if (tr.isPropose()) {
				offer = new ProposeTrade(mover, in_r, out_r, tr.getTradeID());
				ai.registerTrade((ProposeTrade) offer);
			}
			else if (tr.isComplete()) {
				offer = new FulfillTrade(mover, null, in_r, out_r, tr.getTradeID());
				ai.completeTrade((FulfillTrade) offer);
			}
		}
	}