Dividing Players Fairly To Teams

Discussion in 'Spigot Plugin Development' started by toxiccoke, May 18, 2015.

  1. Hi
    I am trying to make a paintball mini-game but i am having some troubles when adding players to teams
    to i want to make this so it will add a player to a team when they join i have done this here but for some reason when a player joins it will take the player that was already online and move it to the other team i cannot work out why if some one could help me out that would be great.
    Code (Text):
        public void onJoin(PlayerJoinEvent e){
            int i = 0;
            for(Player p : Bukkit.getOnlinePlayers()){
                if(i < Bukkit.getOnlinePlayers().length / 2){
                    p.setPlayerListName(ChatColor.RED + p.getName());
                    ChatUtils.sendMessage(p, "You Have Been Added To The Red Team");
                    p.setPlayerListName(ChatColor.BLUE + p.getName());
                    ChatUtils.sendMessage(p, "You Have Been Added To The Blue Team");
    If you need more information or more code i am happy to supply it
    Thanks toxiccoke
  2. I Will Think About It!
    • Funny Funny x 2
  3. -.-
    Either give the solution or don't post at all.

    OP, you should store the players in lists/hashmaps.
    Code (Text):
    List<String> redteam = new ArrayList<String>();
    List<String> blueteam = new ArrayList<String>();

    // on join, blah, blah
    if(redteam().size() < blueteam().size()) {
    • Friendly Friendly x 2
  4. Maybe this?

    Code (Java):
    if (redTeam.size() > blueTeam.size()) {
    // if the red team is larger than the blue team, add them to the blue team
    else if (blueTeam.size() > redTeam.size()) {
    // if the blue team is larger than the red team, add them to the red team
    else {
    // if neither of the above is the case, lets assign them to a random team
    Random r = new Random();
    #4 Arman, May 18, 2015
    Last edited: May 18, 2015
  5. Seems about right.