当2位玩家在线时,Bukkit倒计时翻倍

时间:2016-06-08 20:16:00

标签: java

我刚刚为一个迷你游戏创建了一个倒计时器,但是当我即将测试倒计时时,我注意到如果我是唯一一个在线倒计时工作完美,但当另一个玩家加入倒计时时加倍了这样:10,8,6,4等。我认为它有“for(Player p:Bukkit.getOnlinePlayers()){”的东西,但我不太确定。有人可以提供帮助吗?

这是我的倒计时课程:

Main plugin;

public StartCountdown(Main pl) {
    plugin = pl;
}

public static int timeUntilStart;

@Override
public void run() {
    for(Player p1 : Bukkit.getOnlinePlayers()){
            if(timeUntilStart == 0) {

                if(!Game.canStart()) {

                    plugin.restartCountdown();
                    ChatUtilities.broadcast(ChatColor.RED + "Not enough players to start. Countdown will");
                    ChatUtilities.broadcast(ChatColor.RED + "restart.");
                    p1.playSound(p1.getLocation(), Sound.ENDERDRAGON_WINGS, 5, 1);
                    return;
                }
                Game.start();
            }

                if(timeUntilStart == 1) {
            }
             for(Player p : Bukkit.getOnlinePlayers()){
                    p.setLevel(timeUntilStart);

            if(timeUntilStart < 11  || timeUntilStart == 60 || timeUntilStart == 30) {
                p.playSound(p.getLocation(), Sound.ORB_PICKUP, 5, 0);
                if(timeUntilStart == 1) {
                    p.playSound(p.getLocation(), Sound.ORB_PICKUP, 5, 1);
                }
                ChatUtilities.broadcast(String.valueOf(timeUntilStart)
                        + " §6Seconds until the game starts!");
                }

            timeUntilStart -= 1;
        }

             if(timeUntilStart == 0) {
                 ChatUtilities.broadcast("§6The round has started, good luck!");
             }






}

} }

1 个答案:

答案 0 :(得分:0)

您对减量时间(timeUntilStart -= 1;)的调用是在循环for(Player p1 : Bukkit.getOnlinePlayers())...内。 这意味着对于每个在线玩家,您将timeUntilStart减1。但是,每次运行只需要执行一次 - 将其放在每个玩家p1循环之外。

话虽如此,大多数逻辑应该每次运行一次,而不是每次运行一次(即除非你知道我不知道的事情,game.start应该只被调用一次) ......但这无关紧要,所以我不管它。