use of pl.themolka.arcade.game.Game in project Arcade2 by ShootGame.
the class GeneralCommands method recycle.
//
// /recycle command
//
@CommandInfo(name = "recycle", description = "Re-cycle current map", usage = "[seconds]", permission = "arcade.command.cycle")
public void recycle(Sender sender, CommandContext context) {
if (this.plugin.getGames().getCurrentGame() == null) {
throw new CommandException("Game is not running right now.");
}
MapQueue queue = this.plugin.getGames().getQueue();
queue.setNextMap(this.plugin.getGames().getCurrentGame().getMap().getMapInfo());
CycleCommandEvent commandEvent = new CycleCommandEvent(this.plugin, sender, context, queue.getNextMap());
this.plugin.getEventBus().publish(commandEvent);
if (commandEvent.isCanceled()) {
return;
}
int seconds = context.getParamInt(0, (int) CycleCountdown.DEFAULT_DURATION.getSeconds());
if (seconds < 3) {
seconds = 3;
}
CycleStartEvent startEvent = new CycleStartEvent(this.plugin, queue.getNextMap(), seconds);
this.plugin.getEventBus().publish(startEvent);
this.plugin.getGames().setNextRestart(false);
Game game = this.plugin.getGames().getCurrentGame();
if (game != null) {
for (Countdown countdown : game.getRunningCountdowns()) {
countdown.cancelCountdown();
}
CycleCountdown countdown = this.plugin.getGames().getCycleCountdown();
countdown.cancelCountdown();
countdown.setDuration(Duration.ofSeconds(seconds));
countdown.countSync();
}
}
use of pl.themolka.arcade.game.Game in project Arcade2 by ShootGame.
the class GeneralCommands method restart.
//
// /restart command
//
@CommandInfo(name = "restart", description = "Cycle to next map", flags = { "f", "force" }, usage = "[-force] [seconds]", permission = "arcade.command.restart")
public void restart(Sender sender, CommandContext context) {
int seconds = context.getParamInt(0, (int) RestartCountdown.DEFAULT_DURATION.getSeconds());
if (seconds < 3) {
seconds = 3;
}
boolean force = context.hasFlag("f") || context.hasFlag("force");
CycleCommandEvent event = new CycleCommandEvent(this.plugin, sender, context, force);
this.plugin.getEventBus().publish(event);
if (event.isCanceled()) {
return;
}
this.plugin.getGames().setNextRestart(true);
Game game = this.plugin.getGames().getCurrentGame();
if (game != null) {
for (Countdown countdown : game.getRunningCountdowns()) {
countdown.cancelCountdown();
}
RestartCountdown countdown = this.plugin.getGames().getRestartCountdown();
countdown.cancelCountdown();
countdown.setDuration(Duration.ofSeconds(seconds));
countdown.countSync();
}
}
use of pl.themolka.arcade.game.Game in project Arcade2 by ShootGame.
the class MapCommands method setNext.
//
// /setnext command
//
@CommandInfo(name = { "setnext", "sn" }, description = "Set next map in the queue", flags = { "a", "after", "c", "current", "r", "restart" }, usage = "[-after] [-current|-restart|<map...>]", permission = "arcade.command.setnext", completer = "setNextCompleter")
public void setNext(Sender sender, CommandContext context) {
boolean paramAfter = context.hasFlag("a") || context.hasFlag("after");
boolean paramCurrent = context.hasFlag("c") || context.hasFlag("current");
boolean paramRestart = context.hasFlag("r") || context.hasFlag("restart");
String paramMap = context.getParams(0);
if (paramRestart) {
this.plugin.getGames().setNextRestart(true);
throw new CommandException(this.plugin.getServerName() + " will be restarted after this game.");
}
List<OfflineMap> results = new ArrayList<>();
if (paramCurrent) {
Game game = this.plugin.getGames().getCurrentGame();
if (game == null) {
throw new CommandException("No game running right now.");
}
results.add(game.getMap().getMapInfo());
} else if (paramMap != null) {
results.addAll(this.plugin.getMaps().findMap(paramMap));
} else {
throw new CommandUsageException("You need to type map name, use -current or -restart flag");
}
if (results.isEmpty()) {
throw new CommandException("No results found.");
} else if (results.size() > 1) {
sender.sendError("Found " + results.size() + " results. Setting next the best one...");
}
this.setNextMap(sender, results.get(0), !paramAfter);
}
use of pl.themolka.arcade.game.Game in project Arcade2 by ShootGame.
the class DevelopmentCommands method recycleNow.
//
// /recyclenow command
//
@CommandInfo(name = { "recyclenow" }, description = "Re-cycle now current map", permission = "arcade.command.cyclenow")
public void recycleNow(Sender sender, CommandContext context) {
if (this.development.getPlugin().getGames().getCurrentGame() == null) {
throw new CommandException("Game is not running right now.");
}
OfflineMap target = this.development.getPlugin().getGames().getCurrentGame().getMap().getMapInfo();
GeneralCommands.CycleCommandEvent commandEvent = new GeneralCommands.CycleCommandEvent(this.development.getPlugin(), sender, context, target);
this.development.getPlugin().getEventBus().publish(commandEvent);
if (commandEvent.isCanceled()) {
return;
}
CycleStartEvent startEvent = new CycleStartEvent(this.development.getPlugin(), target, 0);
this.development.getPlugin().getEventBus().publish(startEvent);
this.development.getPlugin().getGames().setNextRestart(false);
Game game = this.development.getPlugin().getGames().getCurrentGame();
if (game != null) {
for (Countdown countdown : game.getRunningCountdowns()) {
countdown.cancelCountdown();
}
sender.sendSuccess("Re-cycling now to " + target.getName() + "...");
this.development.getPlugin().getGames().cycle(target);
}
}
use of pl.themolka.arcade.game.Game in project Arcade2 by ShootGame.
the class CycleCountdown method onTick.
@Override
public void onTick(long ticks) {
if (!this.plugin.getGames().getQueue().hasNextMap()) {
this.cancelCountdown();
return;
} else if (this.getProgress() > 1) {
return;
}
OfflineMap nextMap = this.plugin.getGames().getQueue().getNextMap();
Game game = this.plugin.getGames().getCurrentGame();
if (game == null) {
return;
}
String message = this.getPrintMessage(this.getCycleMessage(nextMap.getName()));
BossBar bossBar = this.getBossBar();
bossBar.setProgress(Percentage.finite(this.getProgress()));
bossBar.setText(new TextComponent(message));
for (ArcadePlayer online : this.plugin.getPlayers()) {
GamePlayer player = online.getGamePlayer();
if (player != null) {
bossBar.addPlayer(player, BAR_PRIORITY);
}
}
}
Aggregations