package de.oppermann.bastian.spleef.commands; import java.util.ArrayList; import java.util.List; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.google.common.collect.Sets; import de.oppermann.bastian.spleef.arena.SpleefArena; import de.oppermann.bastian.spleef.util.Language; import de.oppermann.bastian.spleef.util.SpleefArenaConfiguration; import de.oppermann.bastian.spleef.util.command.AbstractArgument; import de.oppermann.bastian.spleef.util.command.SpleefCommand.CommandHelp; import de.oppermann.bastian.spleef.util.command.SpleefCommand.CommandResult; public class FlagsArgument extends AbstractArgument { private static final SpleefArenaConfiguration DEFAULT_CONFIGURATION = new SpleefArenaConfiguration(); /** * Class constructor. */ public FlagsArgument() { super(new String[]{Language.COMMAND_FLAGS.toString()}, -1, "spleef.flags", null, Language.COMMAND_FLAGS_DESCRIPTION.toString()); } /* * (non-Javadoc) * @see de.oppermann.bastian.spleef.util.command.AbstractArgument#executeForPlayer(org.bukkit.entity.Player, org.bukkit.command.Command, java.lang.String[]) */ @Override public CommandResult executeForPlayer(Player player, Command cmd, String[] args) { if (args.length > 2 || args.length < 1) { // only 1 or 2 arguments are allowed return CommandResult.ERROR; } if (!player.hasPermission(getPermission())) { return CommandResult.NO_PERMISSION; } if (args.length == 1) { player.sendMessage(Language.FLAGS_LIST_HEAD.toString()); sendValue(player, Language.FLAG_CUSTOMINVENTORY, "/"); sendValue(player, Language.FLAG_CUSTOMINVENTORY_ENABLED, String.valueOf(DEFAULT_CONFIGURATION.hasCustomInventory())); sendValue(player, Language.FLAG_ENABLED, String.valueOf(!DEFAULT_CONFIGURATION.isDisabled())); sendValue(player, Language.FLAG_FREEZE_PLAYERS, String.valueOf(DEFAULT_CONFIGURATION.freezePlayers())); sendValue(player, Language.FLAG_MODIFY_GRAVITY, String.valueOf(DEFAULT_CONFIGURATION.modifyGravity())); sendValue(player, Language.FLAG_GRAVITY, String.valueOf(DEFAULT_CONFIGURATION.getGravity())); sendValue(player, Language.FLAG_INSTANT_BLOCK_DESTORY, String.valueOf(DEFAULT_CONFIGURATION.instanstBlockDestroy())); sendValue(player, Language.FLAG_SNOWBALLS_ENABLED, String.valueOf(DEFAULT_CONFIGURATION.isEnableSnowballs())); sendValue(player, Language.FLAG_MAX_SNOWBALLS, String.valueOf(DEFAULT_CONFIGURATION.getMaxSnowballs())); sendValue(player, Language.FLAG_MIN_PLAYERS, String.valueOf(DEFAULT_CONFIGURATION.getMinPlayers())); sendValue(player, Language.FLAG_MODE, DEFAULT_CONFIGURATION.getMode().getLanguageName()); sendValue(player, Language.FLAG_REQUIRED_PLAYERS_TO_START_COUNTDOWN, String.valueOf(DEFAULT_CONFIGURATION.getRequiredPlayersToStartCountdown())); sendValue(player, Language.FLAG_REWARD_MONEY_PARTICIPATION, String.valueOf(DEFAULT_CONFIGURATION.getMoneyParticipationReward())); sendValue(player, Language.FLAG_REWARD_MONEY_WINNING, String.valueOf(DEFAULT_CONFIGURATION.getMoneyWinningReward())); sendValue(player, Language.FLAG_REWARD_POINTS_PARTICIPATION, String.valueOf(DEFAULT_CONFIGURATION.getPointsParticipationReward())); sendValue(player, Language.FLAG_REWARD_POINTS_WINNING, String.valueOf(DEFAULT_CONFIGURATION.getPointsWinningReward())); sendValue(player, Language.FLAG_SPECTATE_LOCATION, locToString(DEFAULT_CONFIGURATION.getSpectateLocation())); sendValue(player, Language.FLAG_SPECTATE_TYPE, DEFAULT_CONFIGURATION.getSpectateType().getLanguageName()); sendValue(player, Language.FLAG_VEHICLE, DEFAULT_CONFIGURATION.getVehicle() == null ? "/" : DEFAULT_CONFIGURATION.getVehicle().name().toLowerCase()); player.sendMessage(Language.FLAGS_LIST_BOTTOM.toString()); return CommandResult.SUCCESS; } if (args.length == 2) { SpleefArena arena = null; for (SpleefArena sArena : SpleefArena.getSpleefArenas()) { if (sArena.getName().equals(args[1])) { arena = sArena; break; } } if (arena == null) { player.sendMessage(Language.NO_ARENA_WITH_NAME.toString().replace("%arena%", args[1])); return CommandResult.SUCCESS; } SpleefArenaConfiguration configuration = arena.getConfiguration(); player.sendMessage(Language.FLAGS_LIST_HEAD.toString()); sendValue(player, Language.FLAG_CUSTOMINVENTORY, "/", "/"); sendValue(player, Language.FLAG_CUSTOMINVENTORY_ENABLED, String.valueOf(DEFAULT_CONFIGURATION.hasCustomInventory()), String.valueOf(configuration.hasCustomInventory())); sendValue(player, Language.FLAG_ENABLED, String.valueOf(!DEFAULT_CONFIGURATION.isDisabled()), String.valueOf(!configuration.isDisabled())); sendValue(player, Language.FLAG_FREEZE_PLAYERS, String.valueOf(DEFAULT_CONFIGURATION.freezePlayers()), String.valueOf(configuration.freezePlayers())); sendValue(player, Language.FLAG_MODIFY_GRAVITY, String.valueOf(DEFAULT_CONFIGURATION.modifyGravity()), String.valueOf(configuration.modifyGravity())); sendValue(player, Language.FLAG_GRAVITY, String.valueOf(DEFAULT_CONFIGURATION.getGravity()), String.valueOf(configuration.getGravity())); sendValue(player, Language.FLAG_INSTANT_BLOCK_DESTORY, String.valueOf(DEFAULT_CONFIGURATION.instanstBlockDestroy()), String.valueOf(configuration.instanstBlockDestroy())); sendValue(player, Language.FLAG_SNOWBALLS_ENABLED, String.valueOf(DEFAULT_CONFIGURATION.isEnableSnowballs()), String.valueOf(configuration.isEnableSnowballs())); sendValue(player, Language.FLAG_MAX_SNOWBALLS, String.valueOf(DEFAULT_CONFIGURATION.getMaxSnowballs()), String.valueOf(configuration.getMaxSnowballs())); sendValue(player, Language.FLAG_MIN_PLAYERS, String.valueOf(DEFAULT_CONFIGURATION.getMinPlayers()), String.valueOf(configuration.getMinPlayers())); sendValue(player, Language.FLAG_MODE, DEFAULT_CONFIGURATION.getMode().getLanguageName(), configuration.getMode().getLanguageName()); sendValue(player, Language.FLAG_REQUIRED_PLAYERS_TO_START_COUNTDOWN, String.valueOf(DEFAULT_CONFIGURATION.getRequiredPlayersToStartCountdown()), String.valueOf(configuration.getRequiredPlayersToStartCountdown())); sendValue(player, Language.FLAG_REWARD_MONEY_PARTICIPATION, String.valueOf(DEFAULT_CONFIGURATION.getMoneyParticipationReward()), String.valueOf(configuration.getMoneyParticipationReward())); sendValue(player, Language.FLAG_REWARD_MONEY_WINNING, String.valueOf(DEFAULT_CONFIGURATION.getMoneyWinningReward()), String.valueOf(configuration.getMoneyWinningReward())); sendValue(player, Language.FLAG_REWARD_POINTS_PARTICIPATION, String.valueOf(DEFAULT_CONFIGURATION.getPointsParticipationReward()), String.valueOf(configuration.getPointsParticipationReward())); sendValue(player, Language.FLAG_REWARD_POINTS_WINNING, String.valueOf(DEFAULT_CONFIGURATION.getPointsWinningReward()), String.valueOf(configuration.getPointsWinningReward())); sendValue(player, Language.FLAG_SPECTATE_LOCATION, locToString(DEFAULT_CONFIGURATION.getSpectateLocation()), locToString(configuration.getSpectateLocation())); sendValue(player, Language.FLAG_SPECTATE_TYPE, DEFAULT_CONFIGURATION.getSpectateType().getLanguageName(), configuration.getSpectateType().getLanguageName()); sendValue(player, Language.FLAG_VEHICLE, DEFAULT_CONFIGURATION.getVehicle() == null ? "/" : DEFAULT_CONFIGURATION.getVehicle().name().toLowerCase(), configuration.getVehicle() == null ? "/" : configuration.getVehicle().name().toLowerCase()); player.sendMessage(Language.FLAGS_LIST_BOTTOM.toString()); return CommandResult.SUCCESS; } return CommandResult.ERROR; // should never happen } /* * (non-Javadoc) * @see de.oppermann.bastian.spleef.util.command.AbstractArgument#executeForServer(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String[]) */ @Override public CommandResult executeForServer(CommandSender sender, Command cmd, String[] args) { return CommandResult.ONLY_PLAYER; // the console can't join an arena } /* * (non-Javadoc) * @see de.oppermann.bastian.spleef.util.command.AbstractArgument#onTabComplete(org.bukkit.entity.Player, java.lang.String[]) */ @Override public List<String> onTabComplete(Player sender, String[] args) { ArrayList<String> list = new ArrayList<>(); if (args.length == 1) { list.add(Language.COMMAND_FLAGS.toString()); } if (args.length == 2) { list.addAll(Sets.newHashSet(SpleefArena.getArenaNames())); } return list; } /* * (non-Javadoc) * @see de.oppermann.bastian.spleef.util.command.AbstractArgument#getCommandHelp() */ @Override public CommandHelp getCommandHelp() { return new CommandHelp("/%cmd% " + Language.COMMAND_FLAGS + " " + Language.ARGUMENT_ARENA_OPTIONAL, getDescription()); } private String locToString(Location location) { if (location == null) { return "/"; } int x = location.getBlockX(); int y = location.getBlockY(); int z = location.getBlockZ(); String world = location.getWorld().getName(); return "(" + world + ", x: " + x + ", y: " + y + ", z: " + z + ")"; } private void sendValue(Player player, Language flag, String defaultValue) { sendValue(player, flag, defaultValue, null); } private void sendValue(Player player, Language flag, String defaultValue, String value) { String message; if (value == null) { message = Language.FLAGS_LIST_WITHOUT_VALUE.toString(); } else { message = Language.FLAGS_LIST_WITH_VALUE.toString(); message = message.replace("%value%", value); } message = message.replace("%flag%", flag.toString()); message = message.replace("%defaultValue%", defaultValue); player.sendMessage(message); } }