diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-06-09 14:29:05 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-06-09 14:29:05 -0400 |
commit | baee001a9eceeae9f12a5f701c138123ff21b177 (patch) | |
tree | 5402de4bc363eaefdda031a408fe2b98a70ac066 /src/main/java/com/MylesAndMore/Tumble/commands | |
parent | 2664109ebcc022e0f9e02c2bd173b70608a68a72 (diff) | |
download | Tumble-baee001a9eceeae9f12a5f701c138123ff21b177.tar.gz Tumble-baee001a9eceeae9f12a5f701c138123ff21b177.tar.bz2 Tumble-baee001a9eceeae9f12a5f701c138123ff21b177.zip |
Implement multi arena support, and various other improvements (pretty much a rewrite)
Diffstat (limited to 'src/main/java/com/MylesAndMore/Tumble/commands')
10 files changed, 305 insertions, 371 deletions
diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Config.java b/src/main/java/com/MylesAndMore/Tumble/commands/Config.java new file mode 100644 index 0000000..d91a5b5 --- /dev/null +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Config.java @@ -0,0 +1,35 @@ +package com.MylesAndMore.Tumble.commands; + +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class Config implements CommandExecutor, TabCompleter { + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "This cannot be run by the console"); + return false; + } + + if (!sender.hasPermission("tumble.config")) { + sender.sendMessage(ChatColor.RED + "You do not have permission to perform this command!"); + return false; + } + + sender.sendMessage(ChatColor.RED + "Not implemented yet"); // TODO + return true; + } + + @Override + public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + return new ArrayList<>(); + } +} diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java new file mode 100644 index 0000000..78ff183 --- /dev/null +++ b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java @@ -0,0 +1,48 @@ +package com.MylesAndMore.Tumble.commands; + +import com.MylesAndMore.Tumble.game.Game; +import com.MylesAndMore.Tumble.plugin.ConfigManager; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class ForceStart implements CommandExecutor, TabCompleter { + @Override + public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + + if (!sender.hasPermission("tumble.forcestart")) { + sender.sendMessage(ChatColor.RED + "You do not have permission to perform this command!"); + return false; + } + + Game game; + if (args.length < 1 || args[0] == null) { + game = ConfigManager.findGamePlayerIsIn((Player)sender); + if (game == null) { + sender.sendMessage(ChatColor.RED + "Missing arena name"); + return false; + } + } + else { + game = ConfigManager.arenas.get(args[0]).game; + } + + game.startGame(); + return true; + } + + @Override + public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (args.length == 1) { + return ConfigManager.arenas.keySet().stream().toList(); + } + return new ArrayList<>(); + } +} diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java new file mode 100644 index 0000000..7f266d7 --- /dev/null +++ b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java @@ -0,0 +1,48 @@ +package com.MylesAndMore.Tumble.commands; + +import com.MylesAndMore.Tumble.game.Game; +import com.MylesAndMore.Tumble.plugin.ConfigManager; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class ForceStop implements CommandExecutor, TabCompleter { + @Override + public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + + if (!sender.hasPermission("tumble.forcestop")) { + sender.sendMessage(ChatColor.RED + "You do not have permission to perform this command!"); + return false; + } + + Game game; + if (args.length < 1 || args[0] == null) { + game = ConfigManager.findGamePlayerIsIn((Player)sender); + if (game == null) { + sender.sendMessage(ChatColor.RED + "Missing arena name"); + return false; + } + } + else { + game = ConfigManager.arenas.get(args[0]).game; + } + + game.killGame(); + return true; + } + + @Override + public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (args.length == 1) { + return ConfigManager.arenas.keySet().stream().toList(); + } + return new ArrayList<>(); + } +} diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Join.java b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java new file mode 100644 index 0000000..4dd4ef8 --- /dev/null +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java @@ -0,0 +1,103 @@ +package com.MylesAndMore.Tumble.commands; + +import com.MylesAndMore.Tumble.game.Arena; +import com.MylesAndMore.Tumble.plugin.ConfigManager; +import com.MylesAndMore.Tumble.game.Game; +import com.MylesAndMore.Tumble.plugin.GameState; +import com.MylesAndMore.Tumble.plugin.GameType; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +public class Join implements CommandExecutor, TabCompleter { + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "This cannot be run by the console"); + return false; + } + + if (!sender.hasPermission("tumble.join")) { + sender.sendMessage(ChatColor.RED + "You do not have permission to perform this command!"); + return false; + } + + if (ConfigManager.findGamePlayerIsIn((Player)sender) != null) { + sender.sendMessage(ChatColor.RED + "You are already in a game! Leave it to join another one"); + } + + if (args.length < 1 || args[0] == null) { + sender.sendMessage(ChatColor.RED + "Missing arena name"); + return false; + } + String arenaName = args[0]; + if (!ConfigManager.arenas.containsKey(arenaName)) + { + sender.sendMessage(ChatColor.RED + "This arena does not exist"); + return false; + } + Arena arena = ConfigManager.arenas.get(arenaName); + + Game game; + if (args.length < 2 || args[1] == null) { + if (arena.game == null) { + sender.sendMessage(ChatColor.RED + "no game is currently taking place in this arena, specify the game type to start one"); + return false; + } + else { + game = arena.game; + } + } + else { + GameType type; + switch (args[1]) { + case "shovels", "shovel" -> type = GameType.SHOVELS; + case "snowballs", "snowball" -> type = GameType.SNOWBALLS; + case "mix", "mixed" -> type = GameType.MIXED; + default -> { + sender.sendMessage(ChatColor.RED + "Invalid game type"); + return false; + } + } + + if (arena.game == null) { + game = arena.game = new Game(arena, type); + } + else { + sender.sendMessage(ChatColor.RED + "A game of "+type+" is currently taking place in this arena, choose another arena or join it with /tumble:join "+arena.name+" "+type); + return false; + } + } + + if (game.gameState != GameState.WAITING) { + sender.sendMessage(ChatColor.RED + "This game is still in progress, wait until it finishes or join another game"); + return false; + } + + game.addPlayer((Player)sender); + sender.sendMessage(ChatColor.GREEN + "Joined game " + arena.name + " - " + game.type); + return true; + } + + @Override + public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (args.length == 1) { + return ConfigManager.arenas.keySet().stream().toList(); + } + if (args.length == 2) { + return Arrays.stream(GameType.values()).map(Objects::toString).collect(Collectors.toList()); + } + return new ArrayList<>(); + } +}
\ No newline at end of file diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java b/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java new file mode 100644 index 0000000..94255a4 --- /dev/null +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java @@ -0,0 +1,53 @@ +package com.MylesAndMore.Tumble.commands; + +import com.MylesAndMore.Tumble.game.Game; +import com.MylesAndMore.Tumble.plugin.ConfigManager; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class Leave implements CommandExecutor, TabCompleter { + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "This cannot be run by the console"); + return false; + } + + if (!sender.hasPermission("tumble.leave")) { + sender.sendMessage(ChatColor.RED + "You do not have permission to perform this command!"); + return false; + } + + Game game; + if (args.length < 1 || args[0] == null) { + game = ConfigManager.findGamePlayerIsIn((Player)sender); + if (game == null) { + sender.sendMessage(ChatColor.RED + "Missing arena name"); + return false; + } + } + else { + game = ConfigManager.arenas.get(args[0]).game; + } + + game.removePlayer((Player) sender); + return true; + } + + @Override + public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + if (args.length == 1) { + return ConfigManager.arenas.keySet().stream().toList(); + } + return new ArrayList<>(); + } +}
\ No newline at end of file diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java b/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java index ffc6dd8..5d35a03 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java @@ -1,22 +1,32 @@ package com.MylesAndMore.Tumble.commands; -import com.MylesAndMore.Tumble.plugin.Constants; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; import org.jetbrains.annotations.NotNull; -public class Reload implements CommandExecutor { +import java.util.ArrayList; +import java.util.List; + +import static com.MylesAndMore.Tumble.Main.plugin; + +public class Reload implements CommandExecutor, TabCompleter { + @Override public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (sender.hasPermission("tumble.reload")) { - Constants.getPlugin().reloadConfig(); - sender.sendMessage(ChatColor.GREEN + "Tumble configuration reloaded successfully."); - } - else { - sender.sendMessage(ChatColor.RED + Constants.getPermissionMessage()); + if (!sender.hasPermission("tumble.reload")) { + sender.sendMessage(ChatColor.RED + "You do not have permission to perform this command!"); + return false; } + plugin.onEnable(); + sender.sendMessage(ChatColor.GREEN + "Tumble configuration reloaded successfully."); return true; } + + @Override + public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + return new ArrayList<>(); + } } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetAutoStart.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetAutoStart.java deleted file mode 100644 index b3da74e..0000000 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetAutoStart.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.MylesAndMore.Tumble.commands; - -import com.MylesAndMore.Tumble.plugin.Constants; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; - -public class SetAutoStart implements CommandExecutor{ - @Override - public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (sender.hasPermission("tumble.autostart")) { - if (Constants.getGameWorld() != null) { - if (Constants.getLobbyWorld() != null) { - if (args.length == 2) { - // Check the player # argument and parse it into an int - int args0; - try { - args0 = Integer.parseInt(args[0]); - } catch (NumberFormatException nfe){ - sender.sendMessage(ChatColor.RED + "Player amount must be a valid number."); - return true; - } catch (Exception e){ - sender.sendMessage(ChatColor.RED + "Invalid player amount."); - return true; - } - // PlayerAmount & enable/disable were entered - if ((args0 >= 2) && (args0 <= 8)) { - if (Objects.equals(args[1], "enable")) { - // Write values to the config - Constants.getPlugin().getConfig().set("autoStart.players", args0); - Constants.getPlugin().getConfig().set("autoStart.enabled", true); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Configuration saved!"); - sender.sendMessage(ChatColor.GREEN + "Run " + ChatColor.GRAY + "/tumble:reload " + ChatColor.GREEN + "the changes to take effect."); - } - else if (Objects.equals(args[1], "disable")) { - Constants.getPlugin().getConfig().set("autoStart.players", args0); - Constants.getPlugin().getConfig().set("autoStart.enabled", false); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Configuration saved!"); - sender.sendMessage(ChatColor.GREEN + "Run " + ChatColor.GRAY + "/tumble:reload " + ChatColor.GREEN + "the changes to take effect."); - } - else { - return false; - } - } - else { - sender.sendMessage(ChatColor.RED + "Please enter a player amount between two and eight!"); - } - } - else if (args.length == 1) { - // Only PlayerAmount was entered - int args0; - try { - args0 = Integer.parseInt(args[0]); - } catch (NumberFormatException nfe){ - sender.sendMessage(ChatColor.RED + "Player amount must be a valid number."); - return true; - } catch (Exception e){ - sender.sendMessage(ChatColor.RED + "Invalid player amount."); - return true; - } - if ((args0 >= 2) && (args0 <= 8)) { - Constants.getPlugin().getConfig().set("autoStart.players", args0); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Configuration saved!"); - sender.sendMessage(ChatColor.GREEN + "Run " + ChatColor.GRAY + "/tumble:reload " + ChatColor.GREEN + "the changes to take effect."); - } - else { - sender.sendMessage(ChatColor.RED + "Please enter a player amount between two and eight!"); - } - } - else { - return false; - } - } - else { - sender.sendMessage(ChatColor.RED + "Please link a lobby world first!"); - } - } - else { - sender.sendMessage(ChatColor.RED + "Please link a game world first!"); - } - } - else { - sender.sendMessage(ChatColor.RED + Constants.getPermissionMessage()); - } - return true; - } -} diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLoc.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLoc.java deleted file mode 100644 index 38e6444..0000000 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLoc.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.MylesAndMore.Tumble.commands; - -import com.MylesAndMore.Tumble.plugin.Constants; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class SetWinnerLoc implements CommandExecutor { - @Override - public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (sender.hasPermission("tumble.winlocation")) { - if (Constants.getLobbyWorld() != null) { - if (sender instanceof Player) { - // Check the sender entered the correct number of args - if (args.length == 3) { - double args0 = 0; - double args1 = 0; - double args2 = 0; - try { - args0 = Double.parseDouble(args[0]); - args1 = Double.parseDouble(args[1]); - args2 = Double.parseDouble(args[2]); - } catch (NumberFormatException nfe){ - sender.sendMessage(ChatColor.RED + "Input arguments must be valid numbers."); - } catch (Exception e){ - sender.sendMessage(ChatColor.RED + "Invalid input arguments."); - } - // Check if any of the args were 0 (this will cause future problems, so we prevent it here) - if (!((args0 == 0) || (args1 == 0) || (args2 == 0))) { - Constants.getPlugin().getConfig().set("winnerTeleport.x", args0); - Constants.getPlugin().getConfig().set("winnerTeleport.y", args1); - Constants.getPlugin().getConfig().set("winnerTeleport.z", args2); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Win location successfully set!"); - sender.sendMessage(ChatColor.GREEN + "Run " + ChatColor.GRAY + "/tumble:reload " + ChatColor.GREEN + "the changes to take effect."); - } - else { - sender.sendMessage(ChatColor.RED + "Your coordinates cannot be zero!"); - sender.sendMessage(ChatColor.RED + "Use something like 0.5 (the middle of the block) instead."); - } - } - // If the sender entered no args, use their current location - else if (args.length == 0) { - Location senderPos = ((Player) sender).getLocation(); - // if so, check if any of their locations are zero - if (!((senderPos.getX() == 0) || (senderPos.getY() == 0) || (senderPos.getZ() == 0))) { - // set the config values to their current pos - Constants.getPlugin().getConfig().set("winnerTeleport.x", senderPos.getX()); - Constants.getPlugin().getConfig().set("winnerTeleport.y", senderPos.getY()); - Constants.getPlugin().getConfig().set("winnerTeleport.z", senderPos.getZ()); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Win location successfully set!"); - sender.sendMessage(ChatColor.GREEN + "Run " + ChatColor.GRAY + "/tumble:reload " + ChatColor.GREEN + "the changes to take effect."); - } - else { - sender.sendMessage(ChatColor.RED + "Your coordinates cannot be zero!"); - sender.sendMessage(ChatColor.RED + "Use something like 0.5 (the middle of the block) instead."); - } - } - else { - return false; - } - } - else if (sender instanceof ConsoleCommandSender) { - if (args.length == 3) { - double args0 = 0; - double args1 = 0; - double args2 = 0; - try { - args0 = Double.parseDouble(args[0]); - args1 = Double.parseDouble(args[1]); - args2 = Double.parseDouble(args[2]); - } catch (NumberFormatException nfe){ - sender.sendMessage(ChatColor.RED + "Input arguments must be valid numbers."); - } catch (Exception e){ - sender.sendMessage(ChatColor.RED + "Invalid input arguments."); - } - if (!((args0 == 0) || (args1 == 0) || (args2 == 0))) { - Constants.getPlugin().getConfig().set("winnerTeleport.x", args0); - Constants.getPlugin().getConfig().set("winnerTeleport.y", args1); - Constants.getPlugin().getConfig().set("winnerTeleport.z", args2); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Win location successfully set!"); - sender.sendMessage(ChatColor.GREEN + "Run " + ChatColor.GRAY + "/tumble:reload " + ChatColor.GREEN + "the changes to take effect."); - } - else { - sender.sendMessage(ChatColor.RED + "Your coordinates cannot be zero!"); - sender.sendMessage(ChatColor.RED + "Use something like 0.5 (the middle of the block) instead."); - } - } - else { - return false; - } - } - } - else { - sender.sendMessage(ChatColor.RED + "Please link a lobby world first!"); - } - } - else { - sender.sendMessage(ChatColor.RED + Constants.getPermissionMessage()); - } - return true; - } -} diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetWorldConfig.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetWorldConfig.java deleted file mode 100644 index 90e0a96..0000000 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetWorldConfig.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.MylesAndMore.Tumble.commands; - -import com.MylesAndMore.Tumble.plugin.Constants; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameRule; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; - -public class SetWorldConfig implements CommandExecutor { - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - // Catch for null arguments - if (args.length == 2) { - if (sender.hasPermission("tumble.link")){ - // Initialize vars for their respective command arguments - String world = args[0]; - String worldType = args[1]; - if (Objects.equals(worldType, "lobby")) { - // Check if the world is actually a world on the server - if (Bukkit.getWorld(world) != null) { - // Check if the world has already been configured - if (!Objects.equals(Constants.getGameWorld(), world)) { - // Set the specified value of the world in the config under lobbyWorld - Constants.getPlugin().getConfig().set("lobbyWorld", world); - Constants.getPlugin().saveConfig(); - sender.sendMessage(ChatColor.GREEN + "Lobby world successfully linked: " + ChatColor.GRAY + world); - sender.sendMessage(ChatColor.GREEN + "Please restart your server for the changes to take effect; " + ChatColor.RED + "reloading the plugin is insufficient!"); - } - else { - sender.sendMessage(ChatColor.RED + "That world has already been linked, please choose/create another world!"); - } - } - else { - sender.sendMessage(ChatColor.RED + "Failed to find a world named " + ChatColor.GRAY + world); - } - } - else if (Objects.equals(args[1], "game")) { - if (Bukkit.getWorld(world) != null) { - if (!Objects.equals(Constants.getLobbyWorld(), world)) { - Constants.getPlugin().getConfig().set("gameWorld", world); - Constants.getPlugin().saveConfig(); - // Set the gamerule of doImmediateRespawn in the gameWorld for later - Objects.requireNonNull(Bukkit.getWorld(world)).setGameRule(GameRule.DO_IMMEDIATE_RESPAWN, true); - Objects.requireNonNull(Bukkit.getWorld(world)).setGameRule(GameRule.KEEP_INVENTORY, true); - sender.sendMessage(ChatColor.GREEN + "Game world successfully linked: " + ChatColor.GRAY + world); - sender.sendMessage(ChatColor.GREEN + "Please restart your server for the changes to take effect; " + ChatColor.RED + "reloading the plugin is insufficient!"); - } - else { - sender.sendMessage(ChatColor.RED + "That world has already been linked, please choose/create another world!"); - } - } - else { - sender.sendMessage(ChatColor.RED + "Failed to find a world named " + ChatColor.GRAY + world); - } - } - else { - sender.sendMessage(ChatColor.RED + "Allowed world types are " + ChatColor.GRAY + "lobby " + ChatColor.RED + "and " + ChatColor.GRAY + "game" + ChatColor.RED + "."); - } - } - else { - sender.sendMessage(ChatColor.RED + Constants.getPermissionMessage()); - } - } - else { - return false; - } - return true; - } -} diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/StartGame.java b/src/main/java/com/MylesAndMore/Tumble/commands/StartGame.java deleted file mode 100644 index 706b33a..0000000 --- a/src/main/java/com/MylesAndMore/Tumble/commands/StartGame.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.MylesAndMore.Tumble.commands; - -import com.MylesAndMore.Tumble.game.Game; -import com.MylesAndMore.Tumble.plugin.Constants; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.util.Objects; - -public class StartGame implements CommandExecutor { - @Override - public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (sender.hasPermission("tumble.start")) { - if (Constants.getLobbyWorld() != null) { - if (Constants.getPlayersInLobby().size() > 1) { - if (Constants.getGameWorld() != null) { - if (!Objects.equals(Game.getGame().getGameState(), "waiting")) { - sender.sendMessage(ChatColor.BLUE + "Generating layers, please wait."); - // Use multiverse to load game world--if the load was successful, start game - if (Constants.getMVWorldManager().loadWorld(Constants.getGameWorld())) { - // If there is no starting argument, - if (args.length == 0) { - // pull which gamemode to initiate from the config file - if (!Game.getGame().startGame(Constants.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 + Constants.getPlugin().getConfig().getString("gameMode")); - } - } - } - // If there was an argument for gameType, pass that instead - 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]); - } - } - } - } - // If load was unsuccessful, give feedback - // Note: this should not occur unless the config file was edited externally, - // because the plugin prevents adding "worlds" that are not actually present to the config. - else { - sender.sendMessage(ChatColor.RED + "Failed to find a world named " + ChatColor.GRAY + Constants.getGameWorld()); - sender.sendMessage(ChatColor.RED + "Is the configuration file correct?"); - } - } - else { - sender.sendMessage(ChatColor.RED + "A game is already queued to begin!"); - } - } - else { - sender.sendMessage(ChatColor.RED + "Please link a game world first!"); - } - } - else { - sender.sendMessage(ChatColor.RED + "You can't start a game with yourself!"); - } - } - else { - sender.sendMessage(ChatColor.RED + "Please link a lobby world first!"); - } - } - else { - sender.sendMessage(ChatColor.RED + Constants.getPermissionMessage()); - } - return true; - } -} |