2017-10-09 81 views
1

我正在制作Mine Craft java服务器插件,并且我想向所有拥有权限或包含在数组中的玩家发送消息 - 名单。我有一个循环设置,但它似乎发送消息的次数与有线上玩家的次数相同。我如何防止/解决这个问题?提前致谢! :)Bukkit(Java)发送消息的次数与人在线差不多

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

你通过'Bukkit.getOnlinePlayers循环()的''而不是pInGameNoDup' – Squiddie

+0

我改变了第一循环,但是我需要第二个循环遍历所有的在线玩家,这样每个人都可以看到游戏不会开始 –

回答

-1

啊!我在另一段代码中发现了这个错误。它看起来是这样的:

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

我称它由于某种原因,在一个循环中:我

+0

请在问题中包含其余代码,以便答案合理!如果你这样做,未来的用户将无法理解你! – Kerooker

+0

是的!对不起,我只是愚蠢,认为这是我提供的循环的一部分。 –

相关问题