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