diff --git a/src/main/java/com/alttd/ctf/commands/CommandManager.java b/src/main/java/com/alttd/ctf/commands/CommandManager.java
index 87bbb23..dda631f 100644
--- a/src/main/java/com/alttd/ctf/commands/CommandManager.java
+++ b/src/main/java/com/alttd/ctf/commands/CommandManager.java
@@ -35,6 +35,7 @@ public class CommandManager implements CommandExecutor, TabExecutor {
subCommands = Arrays.asList(
new ChangeTeam(gameManager),
+ new SkipPhase(gameManager),
new Start(gameManager, flag),
new CreateTeam(main, gameManager),
new SelectClass(gameManager, worldBorderApi),
diff --git a/src/main/java/com/alttd/ctf/commands/subcommands/SkipPhase.java b/src/main/java/com/alttd/ctf/commands/subcommands/SkipPhase.java
new file mode 100644
index 0000000..5135f0a
--- /dev/null
+++ b/src/main/java/com/alttd/ctf/commands/subcommands/SkipPhase.java
@@ -0,0 +1,46 @@
+package com.alttd.ctf.commands.subcommands;
+
+import com.alttd.ctf.commands.SubCommand;
+import com.alttd.ctf.config.Messages;
+import com.alttd.ctf.game.GameManager;
+import com.alttd.ctf.team.Team;
+import lombok.AllArgsConstructor;
+import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
+import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import java.util.List;
+import java.util.Optional;
+
+@AllArgsConstructor
+public class SkipPhase extends SubCommand {
+
+ private final GameManager gameManager;
+
+ @Override
+ public int onCommand(CommandSender commandSender, String[] args) {
+ if (!gameManager.skipPhase()) {
+ commandSender.sendRichMessage("The phase was not skipped because there is no running game or there is no next phase");
+ return 0;
+ }
+ commandSender.sendRichMessage("The current phase was skipped!");
+ return 0;
+ }
+
+ @Override
+ public String getName() {
+ return "skipphase";
+ }
+
+ @Override
+ public List getTabComplete(CommandSender commandSender, String[] args) {
+ return List.of();
+ }
+
+ @Override
+ public String getHelpMessage() {
+ return Messages.HELP.SKIP_PHASE;
+ }
+}
diff --git a/src/main/java/com/alttd/ctf/config/Messages.java b/src/main/java/com/alttd/ctf/config/Messages.java
index 0e77159..3184137 100644
--- a/src/main/java/com/alttd/ctf/config/Messages.java
+++ b/src/main/java/com/alttd/ctf/config/Messages.java
@@ -27,6 +27,7 @@ public class Messages extends AbstractConfig {
public static String CREATE_TEAM = "Create a team: /ctf createteam ";
public static String START = "Start a new game: /ctf start ";
public static String SELECT_CLASS = "Open class selection: /ctf selectclass";
+ public static String SKIP_PHASE = "Skip the current phase: /ctf skipphase";
@SuppressWarnings("unused")
private static void load() {
@@ -37,6 +38,7 @@ public class Messages extends AbstractConfig {
CREATE_TEAM = config.getString(prefix, "create-team", CREATE_TEAM);
START = config.getString(prefix, "start", START);
SELECT_CLASS = config.getString(prefix, "select-class", SELECT_CLASS);
+ SKIP_PHASE = config.getString(prefix, "skip-phase", SKIP_PHASE);
}
}
diff --git a/src/main/java/com/alttd/ctf/game/GameManager.java b/src/main/java/com/alttd/ctf/game/GameManager.java
index 1d70922..842d94e 100644
--- a/src/main/java/com/alttd/ctf/game/GameManager.java
+++ b/src/main/java/com/alttd/ctf/game/GameManager.java
@@ -99,4 +99,11 @@ public class GameManager {
.max()
.orElse(0);
}
+
+ public boolean skipPhase() {
+ if (runningGame == null) {
+ return false;
+ }
+ return runningGame.skipCurrentPhase();
+ }
}
diff --git a/src/main/java/com/alttd/ctf/game/RunningGame.java b/src/main/java/com/alttd/ctf/game/RunningGame.java
index 3b4ed49..23028d3 100644
--- a/src/main/java/com/alttd/ctf/game/RunningGame.java
+++ b/src/main/java/com/alttd/ctf/game/RunningGame.java
@@ -87,13 +87,14 @@ public class RunningGame implements Runnable {
}
}
- public void skipCurrentPhase() {
+ public boolean skipCurrentPhase() {
GamePhase nextPhase = (currentPhase.ordinal() + 1 < GamePhase.values().length) ? GamePhase.values()[currentPhase.ordinal() + 1] : null;
if (nextPhase == null) {
log.warn("Tried to skip phase {} but there is no next phase", currentPhase);
- return;
+ return false;
}
nextPhaseActions(currentPhase, nextPhase);
+ return true;
}
public void end() {
diff --git a/version.properties b/version.properties
index b35572e..04c499f 100644
--- a/version.properties
+++ b/version.properties
@@ -1,3 +1,3 @@
-#Sat Feb 08 23:31:55 CET 2025
-buildNumber=33
+#Tue Feb 11 21:41:29 CET 2025
+buildNumber=37
version=0.1