我的代码遇到了这个问题。当我是唯一在线游戏时,游戏将开始正常,倒计时将停止,但当有两个或更多玩家在线游戏时,游戏将无法启动,如果只有一个玩家在线,倒计时将从120开始。有结论的人吗?
我的代码:
@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);
}else{
if(Game.canStart()) {
if(Bukkit.getOnlinePlayers().size() >= 2) {
Game.start();
}
}
}
}
}
boolean broadcast = false;
for (Player p : Bukkit.getOnlinePlayers()) {
p.setLevel(timeUntilStart);
if (timeUntilStart < 6 || timeUntilStart == 10 || timeUntilStart == 120 ||timeUntilStart == 60 || timeUntilStart == 30) {
p.playSound(p.getLocation(), Sound.ORB_PICKUP, 5, 0);
if (timeUntilStart == 0) p.playSound(p.getLocation(), Sound.ZOMBIE_INFECT , 5, 1);
broadcast = true;
}
}
if (broadcast) ChatUtilities.broadcast(String.valueOf(timeUntilStart) + " §3Seconds until the game starts!");
{
}
timeUntilStart -= 1;
if (timeUntilStart < 0) {timeUntilStart = 0;
if(Bukkit.getOnlinePlayers().size() <= 2) {
plugin.restartCountdown();
}else{
if(Bukkit.getOnlinePlayers().size() >= 2) {
Game.start();
}
}
}
}
}
答案 0 :(得分:0)
if (broadcast) ChatUtilities.broadcast(String.valueOf(timeUntilStart) + " §3Seconds until the game starts!");
{
}
那是什么?你为什么放这些{}?
if (timeUntilStart < 0) {timeUntilStart = 0;
if(Bukkit.getOnlinePlayers().size() <= 2) {
plugin.restartCountdown();
}else{
if(Bukkit.getOnlinePlayers().size() >= 2) {
Game.start();
}
不需要它,因为当计时器达到0时你已经开始游戏了。
但是当有两个或更多在线玩家时,如果只有一个玩家在线,那么游戏就不会开始,倒计时从120开始将会发生。
我们无法帮助您,在您的代码中没有任何可以做到的。
但是当有两个或更多在线玩家时,游戏就无法启动
也许这是与你的Game.canStart()方法有关的问题。
你是否从Ben的教程中复制了这段代码?他们真的很糟糕。糟糕的Java知识和低效的代码。
答案 1 :(得分:0)
您使用的是yourInteger = Bukkit.getScheduler.sheduleSyncRepeatingTask
吗?你可能应该。
例如,如果您正在制作迷你游戏并且想要开始倒计时,您将检查它是否已经倒计时然后按照新方法之前的说明调用倒计时任务,然后在新方法内检查是否是&lt; = 0 not = 0错误。如果无法启动,请使用Bukkit.getScheduler.cancelTask(yourInteger)