Solved Randomizing Teams

Discussion in 'Plugin Development' started by BugsyFTW, Jul 20, 2013.

Thread Status:
Not open for further replies.
  1. Hey Bukkit in this piece of code im trying to randomize some teams, but it gives an error when the second player it's chosen

    Line 491 = "String pls = in_lobby.get(x);"

    Code:

    Code:java
    1. Random r = new Random();
    2.  
    3. int total = in_lobby.size();
    4.  
    5. for(int i = 0; i < total; i++){
    6.  
    7. int x = r.nextInt(total);
    8.  
    9. String pls = in_lobby.get(x);
    10.  
    11. Player pl = Bukkit.getPlayer(pls);
    12.  
    13. if(red_team.size() > blue_team.size()){
    14. if(blue_team.contains(pl.getName()) || red_team.contains(pl.getName())){
    15. blue_team.add(pl.getName());
    16. in_lobby.remove(pl.getName());
    17. pl.sendMessage("You are in a team. BLUE");
    18. }
    19. }
    20. else if(blue_team.size() > red_team.size()){
    21. if(blue_team.contains(pl.getName()) || red_team.contains(pl.getName())){
    22. red_team.add(pl.getName());
    23. in_lobby.remove(pl.getName());
    24. pl.sendMessage("You are in a team. RED");
    25. }
    26. }
    27. else if(blue_team.size() == 0 && red_team.size() == 0){
    28. red_team.add(pl.getName());
    29. in_lobby.remove(pl.getName());
    30. pl.sendMessage("You are the first");
    31. }
    32. }



    Code:
    n
    java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
            at java.util.ArrayList.rangeCheck(ArrayList.java:604)
            at java.util.ArrayList.get(ArrayList.java:382)
            at me.bugsyftw.pb.Game.randomizeTeams(Game.java:491)
            at me.bugsyftw.pb.Game.sortTeams(Game.java:520)
            at me.bugsyftw.pb.Game$2.run(Game.java:474)
            at org.bukkit.craftbukkit.v1_6_R2.scheduler.CraftTask.run(CraftTask.java:53)
            at org.bukkit.craftbukkit.v1_6_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.jav$
            at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:522)
            at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
            at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
            at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
            at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    
     
  2. Offline

    TomFromCollege

    1. String pls = in_lobby.get(x-1);
      Try that? :p
     
  3. Offline

    TheE

    The problem is causes by the removal of contents in in_lobby while looping through it. I would suggest completely rewriting the algorithm using the list's sublist method on a randomly shuffled in_lobby (should be faster and cause much less problems). This question on stackoverflow should give you the idea.
     
  4. TheE Thanks, i've tried using shuffle but i do not know how to use or list sublist, i'll try and find out, Thanks for the help :)
     
Thread Status:
Not open for further replies.

Share This Page