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