aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/MylesAndMore
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/MylesAndMore')
-rw-r--r--src/main/java/com/MylesAndMore/tumble/Game.java57
-rw-r--r--src/main/java/com/MylesAndMore/tumble/commands/StartGame.java40
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]);
+ }
}
}
}