package tc.oc.pgm.ffa;
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.NestedCommand;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import tc.oc.pgm.commands.CommandUtils;
public class FreeForAllCommands {
private FreeForAllCommands() {}
public static class Parent {
@Command(
aliases = {"players", "ffa"},
desc = "Commands related to free-for-all matches",
min = 1,
max = -1
)
@NestedCommand({FreeForAllCommands.class})
public static void players() {
}
}
@Command(
aliases = {"min"},
desc = "Change the minimum number of players required to start the match.",
min = 1,
max = 1
)
@CommandPermissions("pgm.team.size")
public static void min(CommandContext args, CommandSender sender) throws CommandException {
FreeForAllMatchModule ffa = CommandUtils.getMatchModule(FreeForAllMatchModule.class, sender);
if("default".equals(args.getString(0))) {
ffa.setMinPlayers(null);
} else {
int minPlayers = args.getInteger(0);
if(minPlayers < 0) throw new CommandException("min-players cannot be less than 0");
if(minPlayers > ffa.getMaxPlayers()) throw new CommandException("min-players cannot be greater than max-players");
ffa.setMinPlayers(minPlayers);
}
sender.sendMessage(ChatColor.WHITE + "Minimum players is now " + ChatColor.AQUA + ffa.getMinPlayers());
}
@Command(
aliases = {"max", "size"},
desc = "Change the maximum number of players allowed to participate in the match.",
min = 1,
max = 2
)
@CommandPermissions("pgm.team.size")
public static void max(CommandContext args, CommandSender sender) throws CommandException {
FreeForAllMatchModule ffa = CommandUtils.getMatchModule(FreeForAllMatchModule.class, sender);
if("default".equals(args.getString(0))) {
ffa.setMaxPlayers(null, null);
} else {
int maxPlayers = args.getInteger(0);
if(maxPlayers < 0) throw new CommandException("max-players cannot be less than 0");
int maxOverfill = args.argsLength() >= 2 ? args.getInteger(1) : maxPlayers;
if(maxOverfill < maxPlayers) throw new CommandException("max-overfill cannot be less than max-players");
if(maxPlayers < ffa.getMinPlayers()) throw new CommandException("max-players cannot be less than min-players");
ffa.setMaxPlayers(maxPlayers, maxOverfill);
}
sender.sendMessage(ChatColor.WHITE + "Maximum players is now " + ChatColor.AQUA + ffa.getMaxPlayers() +
ChatColor.WHITE + " and overfill is " + ChatColor.AQUA + ffa.getMaxOverfill());
}
}