BedWars gerechte Teamaufteilung

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

BedWars gerechte Teamaufteilung

Beitragvon Laufwerk » Fr 29. Jul 2016, 17:10

Hey,

ich habe ein kleines Problem mit meinem BedWars Plugin.
Ich habe eine Teamaufteilung programmierr, jedoch dauert sie einige Sekunden lang bei 5 Spielern (um die 2 - 3 Sekunden).
Vielleicht kann mir jemand zeigen, wie ich diesen optimieren kann, dass er nun schneller läuft.

Hier mein aktueller Code:

Code: Alles auswählen
  1.    public void addPlayerInRandomTeam() {
  2.       List<Player> playersWithOutTeam = new ArrayList<Player>();
  3.       
  4.       for (Player all : Bukkit.getOnlinePlayers()) {
  5.          if (!Main.getInstance().getTeamManager().getPlayerTeam().containsKey(all)) {
  6.             playersWithOutTeam.add(all);
  7.          }
  8.       }
  9.       
  10.       Random r = new Random();
  11.       int size = playersWithOutTeam.size();
  12.         List<Team> teamsWithlessUsers = getTeamsByLessUsers();
  13.       for (int i = 0; i < size; i++) {
  14.          Team team = teamsWithlessUsers.get(r.nextInt(getTeamsByLessUsers().size()));
  15.          teamsWithlessUsers.remove(team);
  16.             if (teamsWithlessUsers.size() == 0) {
  17.                teamsWithlessUsers = getTeamsByLessUsers();
  18.             }
  19.          Player tar = playersWithOutTeam.get(i);
  20.          team.addTeamMember(tar.getName());
  21.          playersWithOutTeam.remove(tar);
  22.          ScoreboardManager.setScoreboardTag(tar);
  23.          Main.getInstance().getTeamManager().getPlayerTeam().put(tar, team);
  24.       }
  25.       
  26.    }
  27.    
  28.    private List<Team> getTeamsByLessUsers() {
  29.       int lowestPlayers = 0;
  30.       for (Team teams : getTeams()) {
  31.          if (teams.getTeamMembers().size() < lowestPlayers) {
  32.             lowestPlayers = teams.getTeamMembers().size();
  33.          }
  34.       }
  35.       
  36.       List<Team> teamsForMorePl = new ArrayList<Team>();
  37.       for (Team teams : getTeams()) {
  38.          if (teams.getTeamMembers().size() == lowestPlayers) {
  39.             teamsForMorePl.add(teams);
  40.          }
  41.       }
  42.       return teamsForMorePl;
  43.    }


Ich freue mich über jede Antwort :)
Mitr freundlichen Grüßen,

Laufwerk
Benutzeravatar
Laufwerk
 
Beiträge: 2
Registriert: Fr 29. Jul 2016, 17:07

Re: BedWars gerechte Teamaufteilung

Beitragvon Letsplaybar » Fr 29. Jul 2016, 18:16

nutze das system von mir: https://www.spigotmc.org/resources/team-api.26031/
das ist eine Teamapi die das macht und auch ein teamchat drin hat.
Bild
Helfe Wo ich kann.
Mein MinecraftServer: Letsplaybaro.de - Suchen Developer/Bilder

I hacked 127.0.0.1!!! :)
Benutzeravatar
Letsplaybar
 
Beiträge: 195
Registriert: Mo 1. Feb 2016, 17:21
Wohnort: Berlin

Re: BedWars gerechte Teamaufteilung

Beitragvon Laufwerk » Sa 30. Jul 2016, 19:37

Ich hab das alles ja schon, TeamChat ist auch implementiert. Ich brauche nur einen schnelleren Algorithmus
Benutzeravatar
Laufwerk
 
Beiträge: 2
Registriert: Fr 29. Jul 2016, 17:07

Re: BedWars gerechte Teamaufteilung

Beitragvon Letsplaybar » So 31. Jul 2016, 00:25

Hier ist sonst noch mal der code von der API vileicht hilft er dir.
http://github.letsplaybar.de:8888/Letsplaybar/Team-API.git
jedenfalls bei mir geht das ganze innerhalb von millisekunden
Bild
Helfe Wo ich kann.
Mein MinecraftServer: Letsplaybaro.de - Suchen Developer/Bilder

I hacked 127.0.0.1!!! :)
Benutzeravatar
Letsplaybar
 
Beiträge: 195
Registriert: Mo 1. Feb 2016, 17:21
Wohnort: Berlin


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste