diff options
Diffstat (limited to 'src')
8 files changed, 60 insertions, 24 deletions
diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java index 5ca856b..24f430c 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java @@ -19,12 +19,12 @@ public class ForceStop implements SubCommand, CommandExecutor, TabCompleter { @Override public String getCommandName() { - return "forcestop"; + return "forceStop"; } @Override public String getPermission() { - return "tumble.forcestop"; + return "tumble.forceStop"; } @Override @@ -52,7 +52,7 @@ public class ForceStop implements SubCommand, CommandExecutor, TabCompleter { return false; } - game.gameEnd(); + game.stopGame(); sender.sendMessage(languageManager.fromKey("forcestop-success")); return true; } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Join.java b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java index 3bda96c..1dbbad6 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Join.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java @@ -5,7 +5,6 @@ import com.MylesAndMore.Tumble.game.Game; import com.MylesAndMore.Tumble.plugin.GameState; import com.MylesAndMore.Tumble.plugin.GameType; import com.MylesAndMore.Tumble.plugin.SubCommand; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -37,7 +36,7 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (!(sender instanceof Player)) { + if (!(sender instanceof Player p)) { sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } @@ -61,7 +60,7 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { 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"); + sender.sendMessage(languageManager.fromKey("specify-game-type")); return false; } else { @@ -97,6 +96,14 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { } } + if (game.arena.gameSpawn == null) { + if (p.isOp()) { + sender.sendMessage(languageManager.fromKey("arena-not-ready-op")); + } else { + sender.sendMessage(languageManager.fromKey("arena-not-ready")); + } + } + if (game.gameState != GameState.WAITING) { sender.sendMessage(languageManager.fromKey("game-in-progress")); return false; diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java b/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java index 7d6041e..03ce42d 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java @@ -30,7 +30,7 @@ public class Reload implements SubCommand, CommandExecutor, TabCompleter { for (Arena a : arenaManager.arenas.values()) { if (a.game != null) { - a.game.gameEnd(); + a.game.stopGame(); } } diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java index b5fbba6..3b56f7f 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java @@ -8,14 +8,13 @@ import java.util.Objects; import static com.MylesAndMore.Tumble.Main.plugin; public class ConfigManager { + public boolean HideLeaveJoin; + public int waitDuration; + private final CustomConfig configYml = new CustomConfig("config.yml"); private final Configuration config = configYml.getConfig(); private final Configuration defaultConfig = Objects.requireNonNull(config.getDefaults()); - - public boolean HideLeaveJoin; - public int waitDuration; - public ConfigManager() { configYml.saveDefaultConfig(); validate(); diff --git a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java index cd96551..917ce78 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java @@ -36,7 +36,16 @@ public class LanguageManager { } public String fromKeyNoPrefix(String key) { - String val = config.getString(key, "LANG_ERR"); + String val = config.getString(key); + + if (val == null) { + val = defaultConfig.getString(key); + } + + if (val == null) { + val = "LANG_ERR"; + } + return ChatColor.translateAlternateColorCodes('&',val); } } diff --git a/src/main/java/com/MylesAndMore/Tumble/game/Game.java b/src/main/java/com/MylesAndMore/Tumble/game/Game.java index 5988180..20d8869 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/Game.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/Game.java @@ -166,7 +166,8 @@ public class Game { /** * Ends game: Displays overall winner and teleports players to lobby */ - public void gameEnd() { + private void gameEnd() { + if (!gamePlayers.isEmpty()) { setGamemode(gamePlayers, GameMode.SPECTATOR); @@ -207,6 +208,16 @@ public class Game { arena.game = null; } + public void stopGame() { + gamePlayers.forEach(this::removePlayer); + Bukkit.getServer().getScheduler().cancelTask(gameID); + gameID = -1; + Bukkit.getServer().getScheduler().cancelTask(autoStartID); + autoStartID = -1; + HandlerList.unregisterAll(eventListener); + arena.game = null; + } + /** * Removes a player from the game. * Called when a player leaves the server, or if they issue the leave command diff --git a/src/main/resources/language.yml b/src/main/resources/language.yml index e48023b..7b67114 100644 --- a/src/main/resources/language.yml +++ b/src/main/resources/language.yml @@ -11,6 +11,9 @@ not-for-console: "&4This cannot be run by the console" game-in-progress: "&4This game is still in progress!&7 wait until it finishes or join another game" another-type-in-arena: "A game of %type% is currently taking place in this arena!&7 choose another arena or join it with &a/tmbl join %arena% %type%" already-in-game: "&4You are already in a game! Leave it to join another one." +arena-not-ready: "&4This arena is not finished being set up" +arena-not-ready-op: "&4Incomplete arena. &7Set a game spawn with /tmbl setGameSpawn" +specify-game-type: "&4No game is currently taking place in this arena, provide the game type to start one" create-success: "&aArena created successfully! &eBefore you can join, you must set a game spawn location with /tmbl setGameSpawn" forcestart-success: "&aStarting game." diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ed246c5..feac687 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -10,9 +10,8 @@ softdepend: [Multiverse-Core] commands: tumble: - description: Joins a Tumble match. - usage: '§cUsage: /tumble' - permission: tumble.join + description: Base command for Rumble + usage: "/tmbl <subCommand> ..." aliases: tmbl permissions: @@ -22,16 +21,24 @@ permissions: tumble.leave: description: Allows you to leave a Tumble match. default: true - tumble.forcestart: - description: Allows you to force start a Tumble match. + tumble.forceStart: default: op - tumble.forcestop: - description: Allows you to force stop a Tumble match. - default: op - tumble.config: - description: Allows you to get a notification if Tumble is out of date. + tumble.forceStop: default: op tumble.reload: - description: Allows you to reload the plugin's config. + default: op + tumble.create: + default: op + tumble.remove: + default: op + tumble.setGameSpawn: + default: op + tumble.setKillYLevel: + default: op + tumble.setLobby: + default: op + tumble.setWaitArea: + default: op + tumble.setWinnerLobby: default: op |