diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2024-07-01 01:08:26 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2024-07-01 01:08:26 -0400 |
commit | e1c1d130937c0e56535f8ab20fa0b2719b759a01 (patch) | |
tree | 74868e93516a5b6dabbf17a47980113c5bfbde60 /src/main | |
parent | 4a48e1a3a32f9a3b0b72be897377443c65ea55e8 (diff) | |
download | Tumble-e1c1d130937c0e56535f8ab20fa0b2719b759a01.tar.gz Tumble-e1c1d130937c0e56535f8ab20fa0b2719b759a01.tar.bz2 Tumble-e1c1d130937c0e56535f8ab20fa0b2719b759a01.zip |
config file validation, and non static managers
Diffstat (limited to 'src/main')
20 files changed, 256 insertions, 189 deletions
diff --git a/src/main/java/com/MylesAndMore/Tumble/Main.java b/src/main/java/com/MylesAndMore/Tumble/Main.java index eff7a10..067b839 100644 --- a/src/main/java/com/MylesAndMore/Tumble/Main.java +++ b/src/main/java/com/MylesAndMore/Tumble/Main.java @@ -15,13 +15,17 @@ import java.util.Objects; public class Main extends JavaPlugin{ public static Main plugin; + public static LanguageManager languageManager; + public static ArenaManager arenaManager; + public static ConfigManager configManager; + @Override public void onEnable() { plugin = this; - LanguageManager.init(); - ArenaManager.init(); - ConfigManager.init(); + languageManager = new LanguageManager(); + arenaManager = new ArenaManager(); + configManager = new ConfigManager(); Objects.requireNonNull(this.getCommand("tumble")).setExecutor(new Tumble()); new Metrics(this, 16940); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Create.java b/src/main/java/com/MylesAndMore/Tumble/commands/Create.java index aa39db3..d21f8a4 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Create.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Create.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -13,6 +11,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class Create implements SubCommand, CommandExecutor, TabCompleter { @Override public String getCommandName() { @@ -27,14 +28,14 @@ public class Create implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - ArenaManager.arenas.put(arenaName, new Arena(arenaName)); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("create-success")); + arenaManager.arenas.put(arenaName, new Arena(arenaName)); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("create-success")); return true; } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java index 905e5da..2d39c83 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Game; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class ForceStart implements SubCommand, CommandExecutor, TabCompleter { @Override @@ -31,35 +32,35 @@ public class ForceStart implements SubCommand, CommandExecutor, TabCompleter { Game game; if (args.length < 1 || args[0] == null) { - game = ArenaManager.findGamePlayerIsIn((Player)sender); + game = arenaManager.findGamePlayerIsIn((Player)sender); if (game == null) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } } else { String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - game = ArenaManager.arenas.get(arenaName).game; + game = arenaManager.arenas.get(arenaName).game; } if (game == null) { - sender.sendMessage(LanguageManager.fromKey("no-game-in-arena")); + sender.sendMessage(languageManager.fromKey("no-game-in-arena")); return false; } game.gameStart(); - sender.sendMessage(LanguageManager.fromKey("forcestart-success")); + sender.sendMessage(languageManager.fromKey("forcestart-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.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 index 3d98d91..5ca856b 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Game; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class ForceStop implements SubCommand, CommandExecutor, TabCompleter { @Override @@ -31,35 +32,35 @@ public class ForceStop implements SubCommand, CommandExecutor, TabCompleter { Game game; if (args.length < 1 || args[0] == null) { - game = ArenaManager.findGamePlayerIsIn((Player)sender); + game = arenaManager.findGamePlayerIsIn((Player)sender); if (game == null) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } } else { String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - game = ArenaManager.arenas.get(arenaName).game; + game = arenaManager.arenas.get(arenaName).game; } if (game == null) { - sender.sendMessage(LanguageManager.fromKey("no-game-in-arena")); + sender.sendMessage(languageManager.fromKey("no-game-in-arena")); return false; } game.gameEnd(); - sender.sendMessage(LanguageManager.fromKey("forcestop-success")); + sender.sendMessage(languageManager.fromKey("forcestop-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.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 index a887c99..3bda96c 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Join.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Join.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.game.Game; import com.MylesAndMore.Tumble.plugin.GameState; import com.MylesAndMore.Tumble.plugin.GameType; @@ -21,6 +19,9 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class Join implements SubCommand, CommandExecutor, TabCompleter { @Override @@ -37,25 +38,25 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } - if (ArenaManager.findGamePlayerIsIn((Player)sender) != null) { - sender.sendMessage(LanguageManager.fromKey("already-in-game")); + if (arenaManager.findGamePlayerIsIn((Player)sender) != null) { + sender.sendMessage(languageManager.fromKey("already-in-game")); } if (args.length < 1 || args[0] == null) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) + if (!arenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%", arenaName)); + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%", arenaName)); return false; } - Arena arena = ArenaManager.arenas.get(arenaName); + Arena arena = arenaManager.arenas.get(arenaName); Game game; if (args.length < 2 || args[1] == null) { @@ -74,7 +75,7 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { case "snowballs", "snowball" -> type = GameType.SNOWBALLS; case "mix", "mixed" -> type = GameType.MIXED; default -> { - sender.sendMessage(LanguageManager.fromKey("invalid-type")); + sender.sendMessage(languageManager.fromKey("invalid-type")); return false; } } @@ -88,7 +89,7 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { game = arena.game; } else { - sender.sendMessage(LanguageManager.fromKey("another-type-in-arena") + sender.sendMessage(languageManager.fromKey("another-type-in-arena") .replace("%type%",type.toString()) .replace("%arena%",arenaName)); return false; @@ -97,12 +98,12 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { } if (game.gameState != GameState.WAITING) { - sender.sendMessage(LanguageManager.fromKey("game-in-progress")); + sender.sendMessage(languageManager.fromKey("game-in-progress")); return false; } game.addPlayer((Player)sender); - sender.sendMessage(LanguageManager.fromKey("join-success") + sender.sendMessage(languageManager.fromKey("join-success") .replace("%type%", game.type.toString()) .replace("%arena%", arena.name)); return true; @@ -111,7 +112,7 @@ public class Join implements SubCommand, CommandExecutor, TabCompleter { @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } if (args.length == 2) { return Arrays.stream(GameType.values()).map(Objects::toString).collect(Collectors.toList()); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java b/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java index 0250cc6..f5a4eeb 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Leave.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Game; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class Leave implements SubCommand, CommandExecutor, TabCompleter { @Override @@ -30,18 +31,18 @@ public class Leave implements SubCommand, CommandExecutor, TabCompleter { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } - Game game = ArenaManager.findGamePlayerIsIn((Player)sender); + Game game = arenaManager.findGamePlayerIsIn((Player)sender); if (game == null) { - sender.sendMessage(LanguageManager.fromKey("no-game-in-arena")); + sender.sendMessage(languageManager.fromKey("no-game-in-arena")); return false; } game.removePlayer((Player) sender); - sender.sendMessage(LanguageManager.fromKey("leave-success") + sender.sendMessage(languageManager.fromKey("leave-success") .replace("%arena%", game.arena.name) .replace("%type%", game.type.toString())); return true; diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java b/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java index 66535d5..7d6041e 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Reload.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -13,7 +11,7 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -import static com.MylesAndMore.Tumble.Main.plugin; +import static com.MylesAndMore.Tumble.Main.*; public class Reload implements SubCommand, CommandExecutor, TabCompleter { @@ -30,14 +28,14 @@ public class Reload implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - for (Arena a : ArenaManager.arenas.values()) { + for (Arena a : arenaManager.arenas.values()) { if (a.game != null) { a.game.gameEnd(); } } plugin.onEnable(); - sender.sendMessage(LanguageManager.fromKey("reload-success")); + sender.sendMessage(languageManager.fromKey("reload-success")); return true; } diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java b/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java index 32ee232..2d6f9eb 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Remove.java @@ -1,7 +1,5 @@ package com.MylesAndMore.Tumble.commands; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -12,6 +10,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class Remove implements SubCommand, CommandExecutor, TabCompleter { @Override @@ -27,26 +28,26 @@ public class Remove implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - ArenaManager.arenas.remove(arenaName); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("remove-success")); + arenaManager.arenas.remove(arenaName); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("remove-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } return Collections.emptyList(); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java index 783434c..b98d186 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class SetGameSpawn implements SubCommand, CommandExecutor, TabCompleter { @Override public String getCommandName() { @@ -28,32 +29,32 @@ public class SetGameSpawn implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - Arena arena = ArenaManager.arenas.get(arenaName); + Arena arena = arenaManager.arenas.get(arenaName); arena.gameSpawn = ((Player)sender).getLocation(); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("set-success")); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("set-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } return Collections.emptyList(); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java index fec52ea..c6f7891 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class SetKillYLevel implements SubCommand, CommandExecutor, TabCompleter { @Override @@ -29,32 +30,32 @@ public class SetKillYLevel implements SubCommand, CommandExecutor, TabCompleter @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - Arena arena = ArenaManager.arenas.get(arenaName); + Arena arena = arenaManager.arenas.get(arenaName); arena.killAtY = ((int) ((Player) sender).getLocation().getY()); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("set-success")); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("set-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } return Collections.emptyList(); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java index e50b3e0..85e9fd8 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class SetLobby implements SubCommand, CommandExecutor, TabCompleter { @Override public String getCommandName() { @@ -28,32 +29,32 @@ public class SetLobby implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - Arena arena = ArenaManager.arenas.get(arenaName); + Arena arena = arenaManager.arenas.get(arenaName); arena.lobby = ((Player)sender).getLocation(); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("set-success")); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("set-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } return Collections.emptyList(); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java index d251d3f..be97431 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class SetWaitArea implements SubCommand, CommandExecutor, TabCompleter { @Override public String getCommandName() { @@ -28,32 +29,32 @@ public class SetWaitArea implements SubCommand, CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - Arena arena = ArenaManager.arenas.get(arenaName); + Arena arena = arenaManager.arenas.get(arenaName); arena.waitArea = ((Player)sender).getLocation(); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("set-success")); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("set-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } return Collections.emptyList(); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java b/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java index 64a0386..6e4550f 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java @@ -1,8 +1,6 @@ package com.MylesAndMore.Tumble.commands; import com.MylesAndMore.Tumble.game.Arena; -import com.MylesAndMore.Tumble.config.LanguageManager; -import com.MylesAndMore.Tumble.config.ArenaManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -14,6 +12,9 @@ import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.List; +import static com.MylesAndMore.Tumble.Main.arenaManager; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class SetWinnerLobby implements SubCommand, CommandExecutor, TabCompleter { @Override public String getCommandName() { @@ -28,32 +29,32 @@ public class SetWinnerLobby implements SubCommand, CommandExecutor, TabCompleter @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!(sender instanceof Player)) { - sender.sendMessage(LanguageManager.fromKey("not-for-console")); + sender.sendMessage(languageManager.fromKey("not-for-console")); return false; } if (args.length == 0 || args[0] == null || args[0].isEmpty()) { - sender.sendMessage(LanguageManager.fromKey("missing-arena-parameter")); + sender.sendMessage(languageManager.fromKey("missing-arena-parameter")); return false; } String arenaName = args[0]; - if (!ArenaManager.arenas.containsKey(arenaName)) { - sender.sendMessage(LanguageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); + if (!arenaManager.arenas.containsKey(arenaName)) { + sender.sendMessage(languageManager.fromKey("invalid-arena").replace("%arena%",arenaName)); return false; } - Arena arena = ArenaManager.arenas.get(arenaName); + Arena arena = arenaManager.arenas.get(arenaName); arena.winnerLobby = ((Player)sender).getLocation(); - ArenaManager.WriteConfig(); - sender.sendMessage(LanguageManager.fromKey("set-success")); + arenaManager.WriteConfig(); + sender.sendMessage(languageManager.fromKey("set-success")); return true; } @Override public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (args.length == 1) { - return ArenaManager.arenas.keySet().stream().toList(); + return arenaManager.arenas.keySet().stream().toList(); } return Collections.emptyList(); diff --git a/src/main/java/com/MylesAndMore/Tumble/commands/Tumble.java b/src/main/java/com/MylesAndMore/Tumble/commands/Tumble.java index f1d2e38..2cf5b90 100644 --- a/src/main/java/com/MylesAndMore/Tumble/commands/Tumble.java +++ b/src/main/java/com/MylesAndMore/Tumble/commands/Tumble.java @@ -1,6 +1,5 @@ package com.MylesAndMore.Tumble.commands; -import com.MylesAndMore.Tumble.config.LanguageManager; import com.MylesAndMore.Tumble.plugin.SubCommand; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -10,6 +9,8 @@ import org.jetbrains.annotations.NotNull; import java.util.*; +import static com.MylesAndMore.Tumble.Main.languageManager; + public class Tumble implements CommandExecutor, TabCompleter { private static final Map<String, SubCommand> subCommands = Map.ofEntries( @@ -30,14 +31,14 @@ public class Tumble implements CommandExecutor, TabCompleter { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { if (!subCommands.containsKey(args[0])) { - sender.sendMessage(LanguageManager.fromKey("unknown-command")); + sender.sendMessage(languageManager.fromKey("unknown-command")); return true; } var subCmd = subCommands.get(args[0]); if (!sender.hasPermission(subCmd.getPermission())) { - sender.sendMessage(LanguageManager.fromKey("no-permission").replace("%permission%", subCmd.getPermission())); + sender.sendMessage(languageManager.fromKey("no-permission").replace("%permission%", subCmd.getPermission())); return false; } diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java index 911b02e..aa29cf1 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java @@ -2,6 +2,7 @@ package com.MylesAndMore.Tumble.config; import com.MylesAndMore.Tumble.game.Arena; import com.MylesAndMore.Tumble.game.Game; +import com.MylesAndMore.Tumble.plugin.CustomConfig; import com.MylesAndMore.Tumble.plugin.Result; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -9,6 +10,7 @@ import org.bukkit.World; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; @@ -18,20 +20,17 @@ import static com.MylesAndMore.Tumble.Main.plugin; public class ArenaManager { - public static HashMap<String, Arena> arenas; + public HashMap<String, Arena> arenas; - private static final CustomConfig customConfig = new CustomConfig("arenas.yml"); - private static final FileConfiguration config = customConfig.getConfig(); + private final CustomConfig arenasYml = new CustomConfig("arenas.yml"); + private final FileConfiguration config = arenasYml.getConfig(); - public static void init() { - customConfig.saveDefaultConfig(); + public ArenaManager() { + arenasYml.saveDefaultConfig(); readConfig(); } - /** - * Reads config file and populates values above - */ - public static void readConfig() { + public void readConfig() { // arenas ConfigurationSection arenasSection = config.getConfigurationSection("arenas"); @@ -79,17 +78,28 @@ public class ArenaManager { } } - public static void WriteConfig() { + public void WriteConfig() { config.set("arenas", null); // clear everything for (Arena arena: arenas.values()) { - WriteWorld("arenas." + arena.name + ".game-spawn", arena.gameSpawn); - WriteWorld("arenas." + arena.name + ".lobby", arena.lobby); - WriteWorld("arenas." + arena.name + ".winner-lobby", arena.winnerLobby); - WriteWorld("arenas." + arena.name + ".wait-area", arena.waitArea); + if (arena.killAtY != null) { + config.set("arenas." + arena.name + ".kill-at-y", arena.killAtY); + } + if (arena.gameSpawn != null) { + WriteWorld("arenas." + arena.name + ".game-spawn", arena.gameSpawn); + } + if (arena.lobby != null) { + WriteWorld("arenas." + arena.name + ".lobby", arena.lobby); + } + if (arena.winnerLobby != null) { + WriteWorld("arenas." + arena.name + ".winner-lobby", arena.winnerLobby); + } + if (arena.waitArea != null) { + WriteWorld("arenas." + arena.name + ".wait-area", arena.waitArea); + } } - customConfig.saveConfig(); + arenasYml.saveConfig(); } @@ -98,7 +108,7 @@ public class ArenaManager { * @param p Player to search for * @return the game the player is in, or null if not found */ - public static Game findGamePlayerIsIn(Player p) { + public Game findGamePlayerIsIn(Player p) { for (Arena a : arenas.values()) { if (a.game != null && a.game.gamePlayers.contains(p)) { return a.game; @@ -119,7 +129,7 @@ public class ArenaManager { * success = true and a world * success = false and an error string */ - private static Result<Location> readWorld(@Nullable ConfigurationSection section) { + private Result<Location> readWorld(@Nullable ConfigurationSection section) { if (section == null) { return new Result<>("Section missing from config"); @@ -145,10 +155,7 @@ public class ArenaManager { return new Result<>(new Location(world,x,y,z)); } - private static void WriteWorld(String path, @Nullable Location location) { - if (location == null) { - return; - } + private void WriteWorld(String path, @NotNull Location location) { ConfigurationSection section = config.getConfigurationSection(path); diff --git a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java index 322f949..b5fbba6 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java @@ -1,20 +1,41 @@ package com.MylesAndMore.Tumble.config; -import org.bukkit.configuration.file.FileConfiguration; +import com.MylesAndMore.Tumble.plugin.CustomConfig; +import org.bukkit.configuration.Configuration; + +import java.util.Objects; + +import static com.MylesAndMore.Tumble.Main.plugin; public class ConfigManager { - private static final CustomConfig customConfig = new CustomConfig("config.yml"); - private static final FileConfiguration config = customConfig.getConfig(); + private final CustomConfig configYml = new CustomConfig("config.yml"); + private final Configuration config = configYml.getConfig(); + private final Configuration defaultConfig = Objects.requireNonNull(config.getDefaults()); + - public static boolean HideLeaveJoin; - public static int waitDuration; + public boolean HideLeaveJoin; + public int waitDuration; - public static void init() { - customConfig.saveDefaultConfig(); + public ConfigManager() { + configYml.saveDefaultConfig(); + validate(); readConfig(); } - public static void readConfig() { + public void validate() { + boolean invalid = false; + for (String key : defaultConfig.getKeys(true)) { + if (!config.contains(key,true)) { + plugin.getLogger().warning("config.yml is missing key '" + key + "'."); + invalid = true; + } + } + if (invalid) { + plugin.getLogger().severe("Errors were found in config.yml, default values will be used."); + } + } + + public void readConfig() { HideLeaveJoin = config.getBoolean("hide-join-leave-messages", false); waitDuration = config.getInt("wait-duration", 15); } diff --git a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java index f214902..cd96551 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java +++ b/src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java @@ -1,27 +1,42 @@ package com.MylesAndMore.Tumble.config; +import com.MylesAndMore.Tumble.plugin.CustomConfig; import org.bukkit.ChatColor; -import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.Configuration; + +import java.util.Objects; import static com.MylesAndMore.Tumble.Main.plugin; public class LanguageManager { - private static final CustomConfig customConfig = new CustomConfig("language.yml"); - private static final FileConfiguration config = customConfig.getConfig(); + private final CustomConfig languageYml = new CustomConfig("language.yml"); + private final Configuration config = languageYml.getConfig(); + private final Configuration defaultConfig = Objects.requireNonNull(config.getDefaults()); + + public LanguageManager() { + languageYml.saveDefaultConfig(); + validate(); + } - public static void init() { - customConfig.saveDefaultConfig(); + public void validate() { + boolean invalid = false; + for (String key : defaultConfig.getKeys(true)) { + if (!config.contains(key,true)) { + plugin.getLogger().warning("language.yml is missing key '" + key + "'."); + invalid = true; + } + } + if (invalid) { + plugin.getLogger().severe("Errors were found in language.yml, default values will be used."); + } } - public static String fromKey(String key) { + public String fromKey(String key) { return fromKeyNoPrefix("prefix") + fromKeyNoPrefix(key); } - public static String fromKeyNoPrefix(String key) { - String tmp = config.getString(key, "LANG_ERR"); - if (tmp.equals("LANG_ERR")) { - plugin.getLogger().severe("There was an error getting key '"+ key +"' from language.yml"); - } - return ChatColor.translateAlternateColorCodes('&',tmp); + public String fromKeyNoPrefix(String key) { + String val = config.getString(key, "LANG_ERR"); + return ChatColor.translateAlternateColorCodes('&',val); } } diff --git a/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java b/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java index 36d02b6..7abf774 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/EventListener.java @@ -2,8 +2,6 @@ package com.MylesAndMore.Tumble.game; import java.util.Objects; -import com.MylesAndMore.Tumble.config.ArenaManager; -import com.MylesAndMore.Tumble.config.ConfigManager; import com.MylesAndMore.Tumble.plugin.GameState; import com.MylesAndMore.Tumble.plugin.GameType; import org.bukkit.*; @@ -22,6 +20,7 @@ import org.bukkit.util.Vector; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.Nullable; +import static com.MylesAndMore.Tumble.Main.configManager; import static com.MylesAndMore.Tumble.Main.plugin; /** @@ -39,7 +38,7 @@ public class EventListener implements Listener { @EventHandler public void PlayerJoinEvent(PlayerJoinEvent event) { // Hide/show join message accordingly - if (ConfigManager.HideLeaveJoin) { + if (configManager.HideLeaveJoin) { event.setJoinMessage(null); } if (event.getPlayer().getWorld() == gameWorld) { @@ -51,7 +50,7 @@ public class EventListener implements Listener { @EventHandler public void PlayerQuitEvent(PlayerQuitEvent event) { // Hide/show leave message accordingly - if (ConfigManager.HideLeaveJoin) { + if (configManager.HideLeaveJoin) { event.setQuitMessage(null); } if (event.getPlayer().getWorld() == gameWorld) { diff --git a/src/main/java/com/MylesAndMore/Tumble/game/Game.java b/src/main/java/com/MylesAndMore/Tumble/game/Game.java index dd13b31..5988180 100644 --- a/src/main/java/com/MylesAndMore/Tumble/game/Game.java +++ b/src/main/java/com/MylesAndMore/Tumble/game/Game.java @@ -1,8 +1,5 @@ package com.MylesAndMore.Tumble.game; -import com.MylesAndMore.Tumble.config.ArenaManager; -import com.MylesAndMore.Tumble.config.ConfigManager; -import com.MylesAndMore.Tumble.config.LanguageManager; import com.MylesAndMore.Tumble.plugin.GameState; import com.MylesAndMore.Tumble.plugin.GameType; import net.md_5.bungee.api.ChatMessageType; @@ -18,7 +15,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -import static com.MylesAndMore.Tumble.Main.plugin; +import static com.MylesAndMore.Tumble.Main.*; /** * Everything relating to the Tumble game @@ -62,7 +59,9 @@ public class Game { Bukkit.getServer().getPluginManager().registerEvents(eventListener, plugin); for (Player p : gamePlayers) { - inventories.put(p, p.getInventory().getContents()); + if (!inventories.containsKey(p)) { + inventories.put(p, p.getInventory().getContents()); + } } roundStart(); @@ -115,7 +114,7 @@ public class Game { gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { clearInventories(gamePlayers); giveItems(gamePlayers, new ItemStack(Material.SNOWBALL)); - displayActionbar(gamePlayers, LanguageManager.fromKeyNoPrefix("showdown")); + displayActionbar(gamePlayers, languageManager.fromKeyNoPrefix("showdown")); playSound(gamePlayers, Sound.ENTITY_ELDER_GUARDIAN_CURSE, SoundCategory.HOSTILE, 1, 1); // End the round in another 2m30s gameID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, this::roundEnd, 3000); @@ -154,12 +153,12 @@ public class Game { } // If that player doesn't have three wins, nobody else does, so we need another round else { - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("round-over"), LanguageManager.fromKeyNoPrefix("round-winner").replace("%winner%", winner.getDisplayName()), 5, 60, 5); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("round-over"), languageManager.fromKeyNoPrefix("round-winner").replace("%winner%", winner.getDisplayName()), 5, 60, 5); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, this::roundStart, 100); } } else { - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("round-over"), LanguageManager.fromKeyNoPrefix("round-draw"), 5, 60, 5); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("round-over"), languageManager.fromKeyNoPrefix("round-draw"), 5, 60, 5); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, this::roundStart, 100); } } @@ -175,9 +174,9 @@ public class Game { Player winner = getPlayerWithMostWins(gameWins); if (winner != null) { - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("game-over"), LanguageManager.fromKeyNoPrefix("game-winner").replace("%winner%",winner.getDisplayName()), 5, 60, 5); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("game-over"), languageManager.fromKeyNoPrefix("game-winner").replace("%winner%",winner.getDisplayName()), 5, 60, 5); } - displayActionbar(gamePlayers, LanguageManager.fromKeyNoPrefix("lobby-in-10")); + displayActionbar(gamePlayers, languageManager.fromKeyNoPrefix("lobby-in-10")); // Wait 10s (200t), then Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { @@ -214,15 +213,28 @@ public class Game { * @param p Player to remove */ public void removePlayer(Player p) { - gamePlayers.remove(p); - if (gamePlayers.size() < 2) { - gameEnd(); + + if (gameState == GameState.WAITING) { + gamePlayers.remove(p); + if (gamePlayers.size() < 2) { + displayActionbar(gamePlayers, languageManager.fromKeyNoPrefix("waiting-for-players")); + } + + if (arena.waitArea != null) { + p.teleport(arena.lobby); + } } - p.getInventory().clear(); - if (inventories.containsKey(p)) { - p.getInventory().setContents(inventories.get(p)); + else { + gamePlayers.remove(p); + if (gamePlayers.size() < 2) { + gameEnd(); + } + p.getInventory().clear(); + if (inventories.containsKey(p)) { + p.getInventory().setContents(inventories.get(p)); + } + p.teleport(arena.lobby); } - p.teleport(arena.lobby); } /** @@ -234,6 +246,7 @@ public class Game { gamePlayers.add(p); // save inventory if (arena.waitArea != null) { + inventories.put(p,p.getInventory().getContents()); p.teleport(arena.waitArea); p.getInventory().clear(); } @@ -241,7 +254,7 @@ public class Game { autoStart(); } else { - displayActionbar(Collections.singletonList(p), LanguageManager.fromKeyNoPrefix("waiting-for-players")); + displayActionbar(Collections.singletonList(p), languageManager.fromKeyNoPrefix("waiting-for-players")); } } @@ -250,9 +263,9 @@ public class Game { */ public void autoStart() { // Wait for the player to load in - int waitDuration = ConfigManager.waitDuration; + int waitDuration = configManager.waitDuration; Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { - displayActionbar(gamePlayers, LanguageManager.fromKeyNoPrefix("time-till-start").replace("%wait%",waitDuration+"")); + displayActionbar(gamePlayers, languageManager.fromKeyNoPrefix("time-till-start").replace("%wait%",waitDuration+"")); playSound(gamePlayers, Sound.BLOCK_NOTE_BLOCK_CHIME, SoundCategory.BLOCKS, 1, 1); // Schedule a process to start the game in 300t (15s) and save the PID so we can cancel it later if needed autoStartID = Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, this::gameStart, waitDuration * 20L); @@ -307,16 +320,16 @@ public class Game { */ private void countdown(Runnable doAfter) { playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1); - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("count-3"), null, 3, 10, 7); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("count-3"), null, 3, 10, 7); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1); - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("count-2"), null, 3, 10, 7); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("count-2"), null, 3, 10, 7); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 1); - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("count-1"), null, 3, 10, 7); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("count-1"), null, 3, 10, 7); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { playSound(gamePlayers, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, SoundCategory.NEUTRAL, 5, 2); - displayTitles(gamePlayers, LanguageManager.fromKeyNoPrefix("count-go"), null, 1, 5, 1); + displayTitles(gamePlayers, languageManager.fromKeyNoPrefix("count-go"), null, 1, 5, 1); doAfter.run(); }, 20); }, 20); @@ -405,9 +418,7 @@ public class Game { * @param pitch The pitch of the sound */ private void playSound(@NotNull List<Player> players, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { - for (Player aPlayer : players) { - aPlayer.playSound(aPlayer.getLocation(), sound, category, volume, pitch); - } + players.forEach(player -> player.playSound(player.getLocation(), sound, category, volume, pitch)); } /** diff --git a/src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java b/src/main/java/com/MylesAndMore/Tumble/plugin/CustomConfig.java index 20a0aa5..b77a59d 100644 --- a/src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java +++ b/src/main/java/com/MylesAndMore/Tumble/plugin/CustomConfig.java @@ -1,4 +1,4 @@ -package com.MylesAndMore.Tumble.config; +package com.MylesAndMore.Tumble.plugin; import com.google.common.base.Charsets; import org.bukkit.configuration.file.FileConfiguration; |