diff options
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/com/MylesAndMore/tumble/Game.java | 57 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/tumble/commands/StartGame.java | 40 | 
2 files changed, 54 insertions, 43 deletions
diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index f3c7ef4..2106e9a 100644 --- a/src/main/java/com/MylesAndMore/tumble/Game.java +++ b/src/main/java/com/MylesAndMore/tumble/Game.java @@ -30,8 +30,6 @@ public class Game {      // Define local game vars -    // The gameType keeps the current game type (shocker) -    private static String gameType = TumbleManager.getGameType();      // The gameState keeps the current state of the game (I'm so creative, I know)      private String gameState;      // Define a variable for the roundType @@ -57,9 +55,10 @@ public class Game {      /**       * Creates a new Game +     * @param type The type of game       * @return true if the game succeeds creation, and false if not       */ -    public boolean startGame() { +    public boolean startGame(@NotNull String type) {          // Check if the game is starting or running, if so, do not start          if (Objects.equals(gameState, "starting")) {              return false; @@ -68,15 +67,14 @@ public class Game {              return false;          }          else { -            gameState = "starting"; -            if (Objects.equals(TumbleManager.getGameType(), "shovels")) { +            // Define the gameType +            if (Objects.equals(type, "shovels")) { +                gameState = "starting";                  // Set the roundType to gameType since it won't change for this mode -                roundType = gameType; +                roundType = type;                  // Generate the correct layers for a Shovels game                  // The else statement is just in case the generator fails; this command will fail -                if (generateLayers(gameType)) { -                    // If the layer generation succeeds, give players diamond shovels -                    giveItems(lobbyPlayers, new ItemStack(Material.DIAMOND_SHOVEL)); +                if (generateLayers(type)) {                      // Send all players from lobby to the game                      scatterPlayers(lobbyPlayers);                      // Keep in mind that after this runs, this command will complete and return true @@ -85,29 +83,24 @@ public class Game {                      return false;                  }              } -            else if (Objects.equals(TumbleManager.getGameType(), "snowballs")) { -                roundType = gameType; -                if (generateLayers(gameType)) { -                    giveItems(lobbyPlayers, new ItemStack(Material.SNOWBALL)); +            else if (Objects.equals(type, "snowballs")) { +                gameState = "starting"; +                roundType = type; +                if (generateLayers(type)) {                      scatterPlayers(lobbyPlayers);                  }                  else {                      return false;                  }              } -            else if (Objects.equals(TumbleManager.getGameType(), "mixed")) { -                // Mixed gamemode (choose random shovels/0 or snowballs/1) -                if (Random.nextInt(2) == 0) { -                    roundType = "shovels"; -                    generateLayers("shovels"); -                    giveItems(lobbyPlayers, new ItemStack(Material.DIAMOND_SHOVEL)); +            else if (Objects.equals(type, "mixed")) { +                gameState = "starting"; +                roundType = type; +                if (generateLayers(type)) {                      scatterPlayers(lobbyPlayers);                  }                  else { -                    roundType = "snowballs"; -                    generateLayers("snowballs"); -                    giveItems(lobbyPlayers, new ItemStack(Material.SNOWBALL)); -                    scatterPlayers(lobbyPlayers); +                    return false;                  }              }              else { @@ -141,7 +134,7 @@ public class Game {                          }, 20);                      }, 20);                  }, 20); -            }, 100);    +            }, 100);          }          return true;      } @@ -183,13 +176,13 @@ public class Game {      /**       * Generates the layers in the gameWorld for a certain gameType -     * @param gameType can be either "shovels", "snowballs", or "mixed", anything else will fail generation +     * @param type can be either "shovels", "snowballs", or "mixed", anything else will fail generation       * @return true if gameType was recognized and layers were (hopefully) generated, false if unrecognized       */ -    private boolean generateLayers(String gameType) { +    private boolean generateLayers(String type) {          // Create a new Location for the layers to work with--this is so that we don't modify the actual gameSpawn var          Location layer = new Location(gameSpawn.getWorld(), gameSpawn.getX(), gameSpawn.getY(), gameSpawn.getZ(), gameSpawn.getYaw(), gameSpawn.getPitch()); -        if (Objects.equals(roundType, "shovels")) { +        if (Objects.equals(type, "shovels")) {              layer.setY(layer.getY() - 1);              Generator.generateLayer(layer, 17, 1, Material.SNOW_BLOCK);              Generator.generateLayer(layer, 13, 1, Material.AIR); @@ -199,9 +192,9 @@ public class Game {              Generator.generateLayer(layer, 4, 1, Material.PODZOL);              layer.setY(layer.getY() + 2);              Generator.generateLayer(layer, 4, 2, Material.TALL_GRASS); -            roundType = "shovels"; +            giveItems(lobbyPlayers, new ItemStack(Material.DIAMOND_SHOVEL));          } -        else if (Objects.equals(roundType, "snowballs")) { +        else if (Objects.equals(type, "snowballs")) {              layer.setY(layer.getY() - 1);              Generator.generateLayer(layer, 17, 1, Material.COAL_ORE);              Generator.generateLayer(layer, 13, 1, Material.AIR); @@ -210,9 +203,9 @@ public class Game {              Generator.generateLayer(layer, 4, 1, Material.AIR);              layer.setY(layer.getY() - 1);              Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA); -            roundType = "snowballs"; +            giveItems(lobbyPlayers, new ItemStack(Material.SNOWBALL));          } -        else if (Objects.equals(gameType, "mixed")) { +        else if (Objects.equals(type, "mixed")) {              // Randomly select either shovels or snowballs and re-run the method              if (Random.nextInt(2) == 0) {                  generateLayers("shovels"); @@ -338,7 +331,7 @@ public class Game {          else {              displayTitles(gamePlayers, ChatColor.RED + "Round over!", ChatColor.GOLD + winner.getName() + " has won the round!", 5, 60, 5);              // Re-generate layers -            generateLayers(gameType); +            generateLayers(roundType);              // Wait 5s (100t) for tp method              Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(TumbleManager.getPlugin(), () -> {                  // Re-scatter players diff --git a/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java b/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java index 315219a..17d2a34 100644 --- a/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java +++ b/src/main/java/com/MylesAndMore/tumble/commands/StartGame.java @@ -19,21 +19,39 @@ public class StartGame implements CommandExecutor {                  if (TumbleManager.getPlayersInLobby().size() > 0) {                      // Check if there is a gameWorld specified in config                      if (TumbleManager.getGameWorld() != null) { +                        sender.sendMessage(ChatColor.BLUE + "Starting game, please wait.");                          // Use multiverse to load game world                          // If the load was successful, start game                          if (TumbleManager.getMVWorldManager().loadWorld(TumbleManager.getGameWorld())) { -                            // Check which gamemode to initiate from the config file -                            if (!Game.getGame().startGame()) { -                                sender.sendMessage(ChatColor.BLUE + "Starting game, please wait."); -                                // Sender feedback for if the game failed to start -                                if (Objects.equals(Game.getGame().getGameState(), "starting")) { -                                    sender.sendMessage(ChatColor.RED + "A game is already starting!"); +                            // If there is no starting argument, +                            if (args.length == 0) { +                                // pull which gamemode to initiate from the config file +                                if (!Game.getGame().startGame(TumbleManager.getGameType())) { +                                    // Sender feedback for if the game failed to start +                                    if (Objects.equals(Game.getGame().getGameState(), "starting")) { +                                        sender.sendMessage(ChatColor.RED + "A game is already starting!"); +                                    } +                                    else if (Objects.equals(Game.getGame().getGameState(), "running")) { +                                        sender.sendMessage(ChatColor.RED + "A game is already running!"); +                                    } +                                    else { +                                        sender.sendMessage(ChatColor.RED + "Failed to recognize game of type " + ChatColor.GRAY + TumbleManager.getPlugin().getConfig().getString("gameMode")); +                                    }                                  } -                                else if (Objects.equals(Game.getGame().getGameState(), "running")) { -                                    sender.sendMessage(ChatColor.RED + "A game is already running!"); -                                } -                                else { -                                    sender.sendMessage(ChatColor.RED + "Failed to recognize game of type " + ChatColor.GRAY + TumbleManager.getPlugin().getConfig().getString("gameMode")); +                            } +                            // If there was an argument for gameType, pass that into the startGame method +                            else { +                                if (!Game.getGame().startGame(args[0])) { +                                    // Sender feedback for if the game failed to start +                                    if (Objects.equals(Game.getGame().getGameState(), "starting")) { +                                        sender.sendMessage(ChatColor.RED + "A game is already starting!"); +                                    } +                                    else if (Objects.equals(Game.getGame().getGameState(), "running")) { +                                        sender.sendMessage(ChatColor.RED + "A game is already running!"); +                                    } +                                    else { +                                        sender.sendMessage(ChatColor.RED + "Failed to recognize game of type " + ChatColor.GRAY + args[0]); +                                    }                                  }                              }                          }  | 
