diff options
| -rw-r--r-- | README.md | 8 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java | 6 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/Tumble/commands/Join.java | 13 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/Tumble/commands/Reload.java | 2 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java | 7 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java | 11 | ||||
| -rw-r--r-- | src/main/java/com/MylesAndMore/Tumble/game/Game.java | 13 | ||||
| -rw-r--r-- | src/main/resources/language.yml | 3 | ||||
| -rw-r--r-- | src/main/resources/plugin.yml | 29 | 
9 files changed, 60 insertions, 32 deletions
| @@ -1,11 +1,3 @@ -## temporary stuff (not ready for merge) -### todo -- [ ] separate waiting state code -- [ ] fix join command -- [ ] improve inventory saving -- [ ] improve Game.leave() method -- [ ] put javadoc comments everywhere -  # Tumble    ## Overview   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 | 
