aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/MylesAndMore/Tumble/commands
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2024-06-09 14:29:05 -0400
committersowgro <tpoke.ferrari@gmail.com>2024-06-09 14:29:05 -0400
commitbaee001a9eceeae9f12a5f701c138123ff21b177 (patch)
tree5402de4bc363eaefdda031a408fe2b98a70ac066 /src/main/java/com/MylesAndMore/Tumble/commands
parent2664109ebcc022e0f9e02c2bd173b70608a68a72 (diff)
downloadTumble-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')
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Config.java35
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java48
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java48
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Join.java103
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Leave.java53
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Reload.java26
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetAutoStart.java94
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLoc.java110
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetWorldConfig.java74
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/StartGame.java85
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;
- }
-}