RedstoneFuture 2 роки тому
батько
коміт
a88e27257e

+ 8 - 9
missilewars-plugin/src/main/java/de/butzlabben/missilewars/commands/MWCommands.java

@@ -29,7 +29,7 @@ import de.butzlabben.missilewars.game.Game;
 import de.butzlabben.missilewars.game.GameManager;
 import de.butzlabben.missilewars.game.enums.GameResult;
 import de.butzlabben.missilewars.game.enums.GameState;
-import de.butzlabben.missilewars.game.enums.MapChooseProcedure;
+import de.butzlabben.missilewars.game.enums.VoteState;
 import de.butzlabben.missilewars.game.missile.Missile;
 import de.butzlabben.missilewars.game.missile.MissileFacing;
 import org.bukkit.command.CommandSender;
@@ -153,17 +153,16 @@ public class MWCommands extends BaseCommand {
             return;
         }
 
-        if (game.isReady())
-            game.startGame();
-        else {
-            if (game.getLobby().getMapChooseProcedure() != MapChooseProcedure.MAPVOTING && game.getArena() == null) {
-                player.sendMessage(Messages.getMessage(true, Messages.MessageEnum.GAME_CAN_NOT_STARTET));
-            } else {
+        if (!game.isReady()) {
+            if (game.getMapVoting().getState() == VoteState.RUNNING) {
                 game.getMapVoting().setVotedArena();
-                player.sendMessage(Messages.getMessage(true, Messages.MessageEnum.VOTE_FINISHED)
-                        .replace("%map%", game.getArena().getDisplayName()));
+            } else {
+                player.sendMessage(Messages.getMessage(true, Messages.MessageEnum.GAME_CAN_NOT_STARTET));
             }
+            return;
         }
+
+        game.startGame();
     }
 
     @Subcommand("stop")

+ 5 - 1
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/Game.java

@@ -185,6 +185,9 @@ public class Game {
             throw new IllegalStateException("The arena is not yet set");
         }
 
+        // Clear the player inventory
+        applyForAllPlayers(player -> player.getInventory().setItem(4, new ItemStack(Material.AIR)));
+
         scoreboardManager.resetScoreboard();
 
         equipmentManager = new EquipmentManager(this);
@@ -197,6 +200,7 @@ public class Game {
         FightStats.checkTables();
         Logger.DEBUG.log("Fights: " + fights);
 
+        ready = true;
     }
 
     private void updateGameListener(GameBoundListener newListener) {
@@ -363,7 +367,7 @@ public class Game {
             }
 
             // map choose menu:
-            if (lobby.getMapChooseProcedure() == MapChooseProcedure.MAPVOTING && mapVoting.getState() == VoteState.RUNNING) {
+            if (mapVoting.getState() == VoteState.RUNNING) {
                 if (player.hasPermission("mw.vote")) {
                     player.getInventory().setItem(4, new OrcItem(Material.NETHER_STAR, "§3Vote Map").getItemStack());
                 }

+ 11 - 2
missilewars-plugin/src/main/java/de/butzlabben/missilewars/game/MapVoting.java

@@ -118,6 +118,9 @@ public class MapVoting {
      * This method unlocks the map voting.
      */
     public void startVote() {
+        if (game.getLobby().getMapChooseProcedure() != MapChooseProcedure.MAPVOTING)
+            throw new IllegalStateException("Defined map choose procedure is not \"MAPVOTING\"");
+
         state = VoteState.RUNNING;
     }
 
@@ -125,6 +128,9 @@ public class MapVoting {
      * This method locks the map voting again.
      */
     public void stopVote() {
+        if (game.getLobby().getMapChooseProcedure() != MapChooseProcedure.MAPVOTING)
+            throw new IllegalStateException("Defined map choose procedure is not \"MAPVOTING\"");
+
         state = VoteState.FINISH;
     }
 
@@ -143,7 +149,7 @@ public class MapVoting {
      */
     public void setVotedArena() {
         if (game.getLobby().getMapChooseProcedure() != MapChooseProcedure.MAPVOTING)
-            throw new IllegalStateException("MapChooseProcedure is not \"MAPVOTING\"");
+            throw new IllegalStateException("Defined map choose procedure is not \"MAPVOTING\"");
 
         if (onlyOneArenaFound()) return;
         if (state != VoteState.RUNNING) return;
@@ -154,7 +160,10 @@ public class MapVoting {
         if (arena == null) throw new IllegalStateException("Voted arena is not present");
         game.setArena(arena);
 
-        game.finalStartGame();
+        game.broadcast(Messages.getMessage(true, Messages.MessageEnum.VOTE_FINISHED)
+                .replace("%map%", game.getArena().getDisplayName()));
+
+        game.finalGamePreparations();
     }
     
 }