この問題は、カウントダウンタイマーがマイナスになり、 0 -1、-2、-3など は、私はこの問題を解決することができますどのように誰もが知っている、今、かなり長い時間のためにそれで苦労されて:ここではPBukkitカウントダウンタイマーは無限(2,1、-1、-2など)をカウントダウンし始めます。
は私のカウントダウンクラスです:
@Override
public void run() {
if (timeUntilStart == 0) {
if (!Game.canStart()) {
if(Bukkit.getOnlinePlayers().size() <= 2) {
plugin.restartCountdown();
ChatUtilities.broadcast(ChatColor.RED + "Not enough players to start. Countdown will");
ChatUtilities.broadcast(ChatColor.RED + "restart.");
for (Player p : Bukkit.getOnlinePlayers()) p.playSound(p.getLocation(), Sound.ENDERDRAGON_WINGS, 5, 1);
return;
}else{
if(Game.canStart()) {
if(Bukkit.getOnlinePlayers().size() >= 2) {
Game.start();
}
}
}
}
}
boolean broadcast = false;
for (Player p : Bukkit.getOnlinePlayers()) {
p.setLevel(timeUntilStart);
if (timeUntilStart < 11 || timeUntilStart == 120 ||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);
broadcast = true;
}
}
if (broadcast) ChatUtilities.broadcast(String.valueOf(timeUntilStart) + " §6Seconds until the game starts!");{
}
{
timeUntilStart -= 1;
}
}
}
のようなカウントダウンをキャンセルします。おそらく、この混乱を取り除くのに役立つだろう。 –
'timeUntilStart = 0; {timeUntilStart = 0;;'の後に 'timeUntilStart - = 1;'を使用してゼロより下にならないようにするにはどうすればよいですか? –
@AndrewMortonそれは動作しません、またはほとんど私たちは知らない。 run()メソッドは、BukkitRunnableまたはタスク内で実行されることに注意してください。したがって、timeUntilStartの値を0に設定すると、タスクはまだ実行されているので、変数に1を引きます。だから、彼は糸#停止や他の同様の方法を使用する必要があります。 – RoccoDev