Browse Source

Fixing Restartall command for running games

RedstoneFuture 9 months ago
parent
commit
a32fa4d64f

+ 16 - 3
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/Game.java

@@ -52,6 +52,7 @@ import de.butzlabben.missilewars.util.geometry.GameArea;
 import de.butzlabben.missilewars.util.geometry.Geometry;
 import de.butzlabben.missilewars.util.serialization.Serializer;
 import lombok.Getter;
+import lombok.Setter;
 import lombok.ToString;
 import org.bukkit.*;
 import org.bukkit.entity.Fireball;
@@ -75,6 +76,7 @@ import java.util.function.Consumer;
 @ToString(of = {"gameWorld", "players", "lobby", "arena", "state"})
 public class Game {
 
+    @Setter private GameState state = GameState.LOBBY;
     private static final Map<String, Integer> cycles = new HashMap<>();
     private static int fights = 0;
     private final Map<UUID, MWPlayer> players = new HashMap<>();
@@ -82,7 +84,6 @@ public class Game {
     private final Lobby lobby;
     private final Map<UUID, BukkitTask> playerTasks = new HashMap<>();
     private final List<Location> portalBlocks = new ArrayList<>();
-    private GameState state = GameState.LOBBY;
     private TeamManager teamManager;
     private boolean ready = false;
     private boolean restart = false;
@@ -314,9 +315,21 @@ public class Game {
     }
     
     public void resetGame() {
-        // Teleporting players; the event listener will handle the teleport event
-        applyForAllPlayers(this::teleportToAfterGameSpawn);
+        
+        Logger.DEBUG.log("Stopping");
 
+        for (BukkitTask bt : playerTasks.values()) {
+            bt.cancel();
+        }
+
+        Logger.DEBUG.log("Stopping for players");
+        for (Player player : gameWorld.getWorld().getPlayers()) {
+
+            Logger.DEBUG.log("Stopping for: " + player.getName());
+            teleportToAfterGameSpawn(player);
+
+        }
+        
         // Deactivation of all event handlers
         HandlerList.unregisterAll(listener);
         taskManager.stopTimer();

+ 1 - 0
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/GameManager.java

@@ -53,6 +53,7 @@ public class GameManager {
         List<Game> gamesListCache = new ArrayList<>(games.values());
         
         for (Game game : gamesListCache) {
+            game.setState(GameState.END);
             restartGame(game.getLobby(), false);
         }
     }