2017-10-09 2 views
1

Je crée un plugin serveur Mine Craft java, et je veux envoyer un message à tous les joueurs qui ont une permission ou qui sont inclus dans un tableau ... liste. J'ai une configuration de boucle, mais il semble envoyer le message autant de fois qu'il y a de joueurs en ligne. Comment puis-je empêcher/réparer ceci? Merci d'avance! :)Bukkit (Java) Message envoyé autant de fois que les gens sont en ligne

public void checkStart() { 
    HashSet<Player> listToSet = new HashSet<Player>(this.plugin.pInGame); 
    ArrayList<Player> pInGameNoDup = new ArrayList<Player>(listToSet); 

    //^changing the ArrayList to a Hashset then back to Arraylist to avoid duplicates (maybe this is the issue?) 

    int sizeCheck = pInGameNoDup.size(); 
    if (sizeCheck >= 2) { 
     for (Player p : Bukkit.getOnlinePlayers()) { 
      if (pInGameNoDup.contains(p) || p.isOp()) { 
       p.sendMessage(label + "The Game of DeathTag has begun! Now chosing who will be it..."); 
       randomIt(); 
       p.sendMessage(label + this.plugin.it.getName() + " has been randomly chosen to be it!"); 
      } 
     } 
    } else { 
     for (Player p : Bukkit.getOnlinePlayers()) { 
      if (p.hasPermission("tag.join") || p.isOp()) { 
       p.sendMessage(label + "Not Enough People have joined, the game will not start"); 
       setDefault(); 
      } 
     } 
    } 
} 
+0

nous parcourons 'Bukkit.getOnlinePlayers()' au lieu de 'pInGameNoDup' – Squiddie

+0

J'ai changé le premier boucle, mais j'ai besoin de la deuxième boucle pour passer par tous les joueurs en ligne afin que tout le monde puisse voir qu'un jeu ne démarre pas –

Répondre

-1

Ah! J'ai trouvé le bug dans un autre morceau de code. Il avait l'air quelque chose comme ceci:

for (Player p : Bukkit.getOnlinePlayers()) { 
    checkStart(); 
    } 

je l'appelais pour une raison quelconque dans une boucle: Je

+0

S'il vous plaît inclure le reste du code dans la question, de sorte que la réponse est logique! Si vous le faites de cette façon, les futurs utilisateurs ne seront pas en mesure de vous comprendre! – Kerooker

+0

Oui! Je suis désolé d'avoir été stupide et j'ai pensé que cela faisait partie de la boucle que j'ai fournie. –