2020import org .bukkit .potion .PotionEffect ;
2121import org .bukkit .potion .PotionEffectType ;
2222import org .bukkit .scheduler .BukkitRunnable ;
23+ import org .bukkit .scheduler .BukkitTask ;
2324import org .bukkit .scoreboard .Scoreboard ;
2425import org .bukkit .scoreboard .ScoreboardManager ;
2526import org .bukkit .scoreboard .Team ;
@@ -38,6 +39,9 @@ public class HasCommand implements CommandExecutor, TabCompleter, Listener {
3839 private TeleportManager teleportManager ;
3940 private Team noNameTagTeam ;
4041 private Map <Player , Integer > timers = new HashMap <>();
42+ private int globalTimer = 0 ;
43+ private BukkitTask globalTask = null ;
44+ private BukkitTask countdownTask = null ;
4145
4246 public HasCommand () {
4347 this .teleportManager = new TeleportManager ();
@@ -48,9 +52,6 @@ public HasCommand() {
4852 @ Override
4953 public boolean onCommand (CommandSender sender , Command cmd , String label , String [] args ) {
5054 selectRandomPlayer ();
51- for (Player player : Bukkit .getOnlinePlayers ()) {
52- resetActionbarTimer ();
53- }
5455 if (cmd .getName ().equalsIgnoreCase ("has" )) {
5556 if (!sender .hasPermission ("has.run" )) {
5657 sender .sendMessage ("§cDu hast keine Berechtigung um diesen Befehl auszuführen!" );
@@ -73,8 +74,25 @@ else if (args[0].equalsIgnoreCase("help")) {
7374 sender .sendMessage ("Bitte benutze /hashelp!" );
7475 return true ;
7576 }
76- else if (args [0 ].equalsIgnoreCase ("debug " )) {
77+ else if (args [0 ].equalsIgnoreCase ("debugstart " )) {
7778 sender .sendMessage ("§cBenutzt!" );
79+ for (Player player : Bukkit .getOnlinePlayers ()) {
80+ startGlobalTimer ();
81+ }
82+ return true ;
83+ }
84+ else if (args [0 ].equalsIgnoreCase ("debugstop" )) {
85+ sender .sendMessage ("§cBenutzt!" );
86+ for (Player player : Bukkit .getOnlinePlayers ()) {
87+ stopGlobalTimer ();
88+ }
89+ return true ;
90+ }
91+ else if (args [0 ].equalsIgnoreCase ("debugreset" )) {
92+ sender .sendMessage ("§cBenutzt!" );
93+ for (Player player : Bukkit .getOnlinePlayers ()) {
94+ resetGlobalTimer ();
95+ }
7896 return true ;
7997 }
8098 else if (args [0 ].equalsIgnoreCase ("beep" )) {
@@ -113,7 +131,7 @@ else if (args[0].equalsIgnoreCase("version")) {
113131 sender .sendMessage ("§cDu hast keine Berechtigung um diesen Befehl auszuführen!" );
114132 return true ;
115133 }
116- sender .sendMessage ("§c[HASPlugin] §rHASPlugin Version 2.7.0 " );
134+ sender .sendMessage ("§c[HASPlugin] §rHASPlugin Version 2.7.1 " );
117135 return true ;
118136 }
119137 else if (args [0 ].equalsIgnoreCase ("stop" )) {
@@ -312,7 +330,7 @@ public void run() {
312330 break ;
313331 case 0 :
314332 enablepvp ();
315- startTimerForAllPlayers ();
333+ startGlobalTimer ();
316334 break ;
317335 }
318336
@@ -418,7 +436,7 @@ private void cancelgame() {
418436 player .setGameMode (GameMode .ADVENTURE );
419437 player .getInventory ().clear ();
420438 disablepvp ();
421- stopActionbarTimer ( player );
439+ stopGlobalTimer ( );
422440 gamerunning = false ;
423441 }
424442 }
@@ -437,7 +455,7 @@ private void checkIfSelectedPlayerKilledEveryone() {
437455 disablepvp ();
438456 for (Player player : Bukkit .getOnlinePlayers ()) {
439457 player .sendTitle ("§2Alle Gefunden!" , "§cSucher: §r" + selectedPlayer .getName (), 10 , 70 , 20 );
440- stopActionbarTimer ( player );
458+ stopGlobalTimer ( );
441459 }
442460 Bukkit .getScheduler ().runTaskLater (HASPlugin .getPlugin (), () -> {
443461 teleportAllPlayers ();
@@ -454,7 +472,7 @@ private void endgame() {
454472 disablepvp ();
455473 for (Player player : Bukkit .getOnlinePlayers ()) {
456474 player .sendTitle ("§2Alle Gefunden!" , "§cSucher: §r" + selectedPlayer .getName (), 10 , 70 , 20 );
457- stopActionbarTimer ( player );
475+ stopGlobalTimer ( );
458476 }
459477 Bukkit .getScheduler ().runTaskLater (HASPlugin .getPlugin (), () -> {
460478 teleportAllPlayers ();
@@ -502,59 +520,59 @@ public void playbeep(Player executor) {
502520 }
503521 }
504522 }
505- public void startActionbarTimer (Player player ) {
506- if (timers .containsKey (player )) {
507- player .sendMessage (ChatColor .RED + "Du hast bereits einen Timer gestartet!" );
523+
524+
525+ public void startGlobalTimer () {
526+ if (globalTask != null ) {
527+ // Der Timer läuft bereits
508528 return ;
509529 }
510530
511- timers . put ( player , 0 ) ;
512- new BukkitRunnable () {
531+ globalTimer = 0 ;
532+ globalTask = new BukkitRunnable () {
513533 @ Override
514534 public void run () {
515- int time = timers .get (player );
516- time ++;
517-
518- if (!timers .containsKey (player )) {
519- cancel ();
520- return ;
521- }
522-
523- timers .put (player , time );
524- updateActionBar (player , time ); // Aktualisiert die Actionbar mit der aktuellen Zeit
535+ globalTimer ++;
536+ updateGlobalActionBar ();
525537 }
526538 }.runTaskTimer (HASPlugin .getPlugin (), 0 , 20 );
527539 }
528540
529- public void startTimerForAllPlayers () {
530- for (Player player : Bukkit .getOnlinePlayers ()) {
531- startActionbarTimer (player );
541+ public void stopGlobalTimer () {
542+ if (globalTask != null ) {
543+ globalTask .cancel ();
544+ globalTask = null ;
545+ updateGlobalActionBar ();
546+ globalTimer = 0 ;
532547 }
533548 }
534-
535- private void updateActionBar (Player player , int time ) {
536- String actionBarMessage ;
537- if (time >= 60 ) {
538- int minutes = time / 60 ;
539- int seconds = time % 60 ;
540- String minuteString = (minutes != 1 ) ? " Minuten" : " Minute" ;
541- String secondString = (seconds != 1 ) ? " Sekunden" : " Sekunde" ;
542- actionBarMessage = ChatColor .GREEN + "Timer: " + ChatColor .WHITE + minutes + minuteString + " " + seconds + secondString ;
543- } else {
544- actionBarMessage = ChatColor .GREEN + "Timer: " + ChatColor .WHITE + time + " Sekunden" ;
549+ public void resetGlobalTimer () {
550+ stopGlobalTimer ();
551+ globalTimer = 0 ;
552+ updateGlobalActionBar ();
553+
554+ // Wenn bereits ein Countdown läuft, breche ihn ab
555+ if (countdownTask != null ) {
556+ countdownTask .cancel ();
545557 }
546558
547- player .spigot ().sendMessage (ChatMessageType .ACTION_BAR , TextComponent .fromLegacyText (actionBarMessage ));
548-
559+ // Starte einen neuen Countdown für 5 Sekunden
560+ countdownTask = new BukkitRunnable () {
561+ @ Override
562+ public void run () {
563+ globalTimer = 0 ;
564+ updateGlobalActionBar ();
565+ }
566+ }.runTaskLater (HASPlugin .getPlugin (), 5 * 20 ); // 5 Sekunden (20 Ticks pro Sekunde)
549567 }
550568
551- public void stopActionbarTimer (Player player ) {
552- timers .remove (player );
553- }
554- public void resetActionbarTimer () {
569+ public void updateGlobalActionBar () {
570+ String actionBarMessage = ChatColor .GREEN + "Globaler Timer: " + ChatColor .WHITE + globalTimer + " Sekunden" ;
571+
555572 for (Player player : Bukkit .getOnlinePlayers ()) {
556- timers . put ( player , 0 );
573+ player . spigot (). sendMessage ( ChatMessageType . ACTION_BAR , TextComponent . fromLegacyText ( actionBarMessage ) );
557574 }
558575 }
559576
577+
560578}
0 commit comments