package tc.oc.pgm.start; import com.sk89q.minecraft.util.commands.Command; import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissions; import com.sk89q.minecraft.util.commands.CommandUsageException; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.TranslatableComponent; import org.bukkit.command.CommandSender; import tc.oc.commons.core.chat.Component; import tc.oc.commons.bukkit.chat.ComponentRenderers; import tc.oc.pgm.match.Match; import tc.oc.pgm.PGMTranslations; import tc.oc.pgm.commands.CommandUtils; import static tc.oc.commons.bukkit.commands.CommandUtils.*; public class StartCommands { private StartCommands() {} @Command( aliases = {"start", "begin"}, desc = "Queues the start of the match in a certain amount of seconds", usage = "[countdown time] [huddle time]", min = 0, max = 2 ) @CommandPermissions("pgm.start") public static void start(CommandContext args, CommandSender sender) throws CommandException { Match match = CommandUtils.getMatch(sender); StartMatchModule smm = CommandUtils.getMatchModule(StartMatchModule.class, sender); switch(match.matchState()) { case Idle: case Starting: case Huddle: if(smm.canStart(true)) { smm.forceStartCountdown(getDuration(args, 0), getDuration(args, 1)); } else { ComponentRenderers.send(sender, new Component(new TranslatableComponent("command.admin.start.unknownState"), ChatColor.RED)); for(UnreadyReason reason : smm.getUnreadyReasons(true)) { ComponentRenderers.send(sender, new Component(ChatColor.RED).text(" * ").extra(reason.getReason())); } } break; case Running: throw new CommandException(PGMTranslations.get().t("command.admin.start.matchRunning", sender)); case Finished: throw new CommandException(PGMTranslations.get().t("command.admin.start.matchFinished", sender)); default: throw new CommandException(PGMTranslations.get().t("command.admin.start.unknownState", sender)); } } @Command( aliases = {"autostart"}, desc = "Enable or disable match auto-start", usage = "[on|off]", min = 0, max = 1 ) @CommandPermissions("pgm.start") public static void autostart(CommandContext args, CommandSender sender) throws CommandException { StartMatchModule smm = CommandUtils.getMatchModule(StartMatchModule.class, sender); boolean autostart; if(args.argsLength() >= 1) { switch(args.getString(0)) { case "on": autostart = true; break; case "off": autostart = false; break; default: throw new CommandUsageException("Invalid", "[on|off]"); } } else { autostart = !smm.isAutoStart(); } smm.setAutoStart(autostart); if(autostart) { sender.sendMessage(ChatColor.GREEN + PGMTranslations.get().t("command.admin.autoStartEnabled", sender)); smm.autoStartCountdown(); } else { sender.sendMessage(ChatColor.BLUE + PGMTranslations.get().t("command.admin.autoStartDisabled", sender)); } } }