@Override
  public void startEvent() {
    super.startEvent();
    Server server = Bukkit.getServer();

    int osize = teams.size();
    nrounds = getNRounds(osize);
    int nteams = (int) Math.pow(2, nrounds);
    server.broadcastMessage(
        Log.colorChat(
            eventParams.getPrefix()
                + "&e The "
                + eventParams.toPrettyString()
                + oParms.getName()
                + " tournament is starting!"));

    preliminary_round = teams.size() != nteams;
    if (preliminary_round) nrounds++;

    TreeMap<Double, Team> sortTeams = new TreeMap<Double, Team>(Collections.reverseOrder());
    BTInterface bti = new BTInterface(eventParams);
    //		System.out.println("startEvent:: bti=" + bti);
    for (Team t : teams) {
      Double elo = Defaults.DEFAULT_ELO;
      if (bti.isValid()) {
        elo = (double) bti.getElo(t);
      }
      while (sortTeams.containsKey(elo)) {
        elo += 0.0001;
      }
      sortTeams.put(elo, t);
    }
    competingTeams.addAll(teams);
    teams.clear();
    aliveTeams.clear();
    ArrayList<Team> ts = new ArrayList<Team>(sortTeams.values());
    for (Team t : ts) {
      teams.add(t);
      aliveTeams.add(t);
    }
    server.broadcastMessage(
        Log.colorChat(
            eventParams.getPrefix()
                + "&6 "
                + teams.size()
                + " &e"
                + MessageUtil.getTeamsOrPlayers(teams.size())
                + " will compete in a &6"
                + nrounds
                + "&e round tournament"));
    if (preliminary_round) {
      makePreliminaryRound();
    } else {
      makeNextRound();
    }
    startRound();
  }
 @Override
 public void addTeam(Team t) {
   super.addTeam(t);
   int size = teams.size();
   int nrounds = getNRounds(size);
   int idealteam = (int) Math.pow(2, nrounds);
   if (size > 2 && size % idealteam == 0) {
     Bukkit.broadcastMessage(
         Log.colorChat(
             eventParams.getPrefix()
                 + "&6"
                 + size
                 + " "
                 + MessageUtil.getTeamsOrPlayers(teams.size())
                 + "&e have joined, Current tournament will have &6"
                 + nrounds
                 + "&e rounds"));
   }
 }
 private void announceTourneySize() {
   int size = 0;
   for (Team t : teams) {
     if (t.size() > 0) size++;
   }
   int nrounds = getNRounds(size);
   int idealteam = (int) Math.pow(eventParams.getMinTeams(), nrounds);
   if (nrounds > 1 && size % idealteam == 0) {
     Bukkit.broadcastMessage(
         Log.colorChat(
             eventParams.getPrefix()
                 + "&6"
                 + size
                 + " "
                 + MessageUtil.getTeamsOrPlayers(teams.size())
                 + "&e have joined, Current tournament will have &6"
                 + nrounds
                 + "&e rounds"));
   }
 }