From 8e7437efcb67ebfa14b5fbea0424c48a8284b6aa Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Wed, 16 Aug 2023 23:22:46 +0200 Subject: [PATCH] Add Start Command --- src/TowerRun.properties | 4 +- src/de/steamwar/towerrun/TowerRun.java | 4 +- .../towerrun/commands/StartCommand.java | 49 +++++++++++++++++++ .../towerrun/countdowns/Countdown.java | 2 + .../towerrun/countdowns/LobbyCountdown.java | 8 ++- 5 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 src/de/steamwar/towerrun/commands/StartCommand.java 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