diff --git a/src/TowerRun.properties b/src/TowerRun.properties
index ab702e2..89728d2 100644
--- a/src/TowerRun.properties
+++ b/src/TowerRun.properties
@@ -24,4 +24,6 @@ GAME_START=
GAME_WIN=§a{0} §7has won the game§8!
GAME_STARTING=§7Starting: §e{0}s§8!
GAME_WAITING=§7Waiting for players§8!
-SERVER_STOPPING=§cThe server stops in §e{0}s§8!
\ No newline at end of file
+SERVER_STOPPING=§cThe server stops in §e{0}s§8!
+
+COMMAND_START=§aThe game will start soon§8!
\ No newline at end of file
diff --git a/src/de/steamwar/towerrun/TowerRun.java b/src/de/steamwar/towerrun/TowerRun.java
index 9f93eb9..e92e4a3 100644
--- a/src/de/steamwar/towerrun/TowerRun.java
+++ b/src/de/steamwar/towerrun/TowerRun.java
@@ -20,6 +20,7 @@
package de.steamwar.towerrun;
import de.steamwar.message.Message;
+import de.steamwar.towerrun.commands.StartCommand;
import de.steamwar.towerrun.countdowns.EndCountdown;
import de.steamwar.towerrun.countdowns.LobbyCountdown;
import de.steamwar.towerrun.listener.GlobalListener;
@@ -56,7 +57,8 @@ public class TowerRun extends JavaPlugin {
new GlobalListener();
new LobbyListener();
new NotLobbyListener();
- new LobbyCountdown();
+ final LobbyCountdown lobbyCountdown = new LobbyCountdown();
new EndCountdown();
+ new StartCommand(lobbyCountdown);
}
}
diff --git a/src/de/steamwar/towerrun/commands/StartCommand.java b/src/de/steamwar/towerrun/commands/StartCommand.java
new file mode 100644
index 0000000..fea225c
--- /dev/null
+++ b/src/de/steamwar/towerrun/commands/StartCommand.java
@@ -0,0 +1,49 @@
+/*
+ * This file is a part of the SteamWar software.
+ *
+ * Copyright (C) 2023 SteamWar.de-Serverteam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package de.steamwar.towerrun.commands;
+
+import de.steamwar.command.SWCommand;
+import de.steamwar.command.TypeValidator;
+import de.steamwar.sql.SteamwarUser;
+import de.steamwar.sql.UserGroup;
+import de.steamwar.towerrun.TowerRun;
+import de.steamwar.towerrun.countdowns.LobbyCountdown;
+import org.bukkit.entity.Player;
+
+public class StartCommand extends SWCommand {
+ private final LobbyCountdown countdown;
+
+ public StartCommand(LobbyCountdown countdown) {
+ super("start", "skip");
+ this.countdown = countdown;
+ }
+
+ @Register
+ public void command(@Validator Player player) {
+ countdown.setOverride(true);
+ countdown.setTime(10);
+ TowerRun.getMessage().send("COMMAND_START", player);
+ }
+
+ @ClassValidator(value = Player.class, local = true)
+ public TypeValidator playerValidator() {
+ return (commandSender, player, messageSender) -> SteamwarUser.get(player.getUniqueId()).getUserGroup() != UserGroup.Member;
+ }
+}
diff --git a/src/de/steamwar/towerrun/countdowns/Countdown.java b/src/de/steamwar/towerrun/countdowns/Countdown.java
index a0e1879..538eac5 100644
--- a/src/de/steamwar/towerrun/countdowns/Countdown.java
+++ b/src/de/steamwar/towerrun/countdowns/Countdown.java
@@ -22,6 +22,7 @@ package de.steamwar.towerrun.countdowns;
import de.steamwar.towerrun.TowerRun;
import de.steamwar.towerrun.state.GameStateToggleListener;
import de.steamwar.towerrun.state.GameStates;
+import lombok.Setter;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitTask;
@@ -29,6 +30,7 @@ import java.util.EnumSet;
public abstract class Countdown extends GameStateToggleListener {
+ @Setter
protected int time = defaultTime();
protected BukkitTask task;
diff --git a/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java b/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java
index fe9cc9c..01bd2e9 100644
--- a/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java
+++ b/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java
@@ -24,6 +24,8 @@ import de.steamwar.towerrun.config.Config;
import de.steamwar.towerrun.game.TowerRunGame;
import de.steamwar.towerrun.state.GameStateToggleListener;
import de.steamwar.towerrun.state.GameStates;
+import lombok.Getter;
+import lombok.Setter;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
@@ -32,8 +34,12 @@ import org.bukkit.scheduler.BukkitTask;
import java.util.EnumSet;
+@Getter
public class LobbyCountdown extends Countdown {
+ @Setter
+ private boolean override = false;
+
public LobbyCountdown() {
super(EnumSet.of(GameStates.LOBBY));
}
@@ -50,7 +56,7 @@ public class LobbyCountdown extends Countdown {
@Override
boolean timerShouldCancel() {
- return super.timerShouldCancel();
+ return !override && Bukkit.getOnlinePlayers().size() < Config.MIN_PLAYERS;
}
@Override