2016-06-15 2 views
0

코드에이 문제가 있습니다. 내가 온라인으로 게임을 시작할 때 게임이 정상적으로 시작되고 카운트 다운이 멈추지 만 두 명 이상의 플레이어가 온라인 상태 일 때 게임이 시작되지 않고 하나의 플레이어 만 온라인 상태 였다면 카운트 다운이 시작됩니다. 결론이있는 사람은 누구입니까?카운트 다운이 중지되고 필요한 플레이어가 온라인 상태 일 때 게임을 시작합니다.

내 코드 :

@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

'if (Bukkit.getOnlinePlayers(). size() <= 2) {plugin.restartCountdown();을 사용하십시오. }'- 이것이 (Bukkit.getOnlinePlayers(). size() <= 1)'이면 안된다? – Pokechu22

답변

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 지식이 부족하고 비효율적 인 코드입니다.

0

yourInteger = Bukkit.getScheduler.sheduleSyncRepeatingTask을 사용하고 있습니까? 당신은 아마해야합니다.

예를 들어 미니 게임을 만들고 카운트 다운을 시작하려면 이미 카운트 다운되어 있는지 확인한 다음 앞에서 설명한대로 카운트 다운 작업을 호출 한 다음 새 메소드에서 새 메소드를 확인하십시오 < = 0이 아닌 = 0 오류가 발생했습니다. 시작할 수 없으면 Bukkit.getScheduler.cancelTask(yourInteger)