aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/Main.java10
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Create.java13
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/ForceStart.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/ForceStop.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Join.java29
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Leave.java13
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Reload.java8
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Remove.java19
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetGameSpawn.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetKillYLevel.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetLobby.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetWaitArea.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/SetWinnerLobby.java21
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/commands/Tumble.java7
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/ArenaManager.java49
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/ConfigManager.java37
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/config/LanguageManager.java39
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/game/EventListener.java7
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/game/Game.java65
-rw-r--r--src/main/java/com/MylesAndMore/Tumble/plugin/CustomConfig.java (renamed from src/main/java/com/MylesAndMore/Tumble/config/CustomConfig.java)2
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;