2017-10-09 4 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

私が最初に変更ループは、しかし、私は2番目のループがすべてのオンラインプレーヤーを通過するように誰もがゲームが開始されていないことを見ることができます – Squiddie

+0

'のBukkit.getOnlinePlayers 'をループしている –

答えて

-1

Ah!別のコードにバグが見つかりました。それはこのような何かを見て:

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

私は、ループ内のいくつかの理由のためにそれを呼んでいた:私は

あなたは() `代わりpInGameNoDup`
+0

答えに意味があるように、質問の残りのコードを含めてください!このようにすれば、将来のユーザーはあなたを理解できなくなります! – Kerooker

+0

はい!私はちょうど馬鹿にされていて、それが私が提供したループの一部であると思っていたのは残念です。 –

関連する問題