package com.tommytony.war.command; import java.util.logging.Level; import org.bukkit.Location; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.tommytony.war.Team; import com.tommytony.war.War; import com.tommytony.war.Warzone; import com.tommytony.war.config.TeamKind; import com.tommytony.war.mapper.WarzoneYmlMapper; /** * Places a teamflag * * @author Tim Düsterhus */ public class SetTeamFlagCommand extends AbstractZoneMakerCommand { public SetTeamFlagCommand(WarCommandHandler handler, CommandSender sender, String[] args) throws NotZoneMakerException { super(handler, sender, args); } @Override public boolean handle() { if (!(this.getSender() instanceof Player)) { this.badMsg("You can't do this if you are not in-game."); return true; } Player player = (Player) this.getSender(); if (this.args.length != 1) { return false; } Warzone zone = Warzone.getZoneByLocation(player); if (zone == null) { return false; } else if (!this.isSenderAuthorOfZone(zone)) { return true; } TeamKind kind = TeamKind.teamKindFromString(this.args[0]); Team team = zone.getTeamByKind(kind); if (team == null) { // no such team yet this.msg("Place the team spawn first."); } else if (team.getFlagVolume() == null) { // new team flag team.setTeamFlag(player.getLocation()); Location playerLoc = player.getLocation(); player.teleport(new Location(playerLoc.getWorld(), playerLoc.getBlockX() + 1, playerLoc.getBlockY(), playerLoc.getBlockZ())); this.msg("Team " + team.getName() + " flag added here."); WarzoneYmlMapper.save(zone); War.war.log(this.getSender().getName() + " created team " + team.getName() + " flag in warzone " + zone.getName(), Level.INFO); } else { // relocate flag team.getFlagVolume().resetBlocks(); team.setTeamFlag(player.getLocation()); Location playerLoc = player.getLocation(); player.teleport(new Location(playerLoc.getWorld(), playerLoc.getBlockX() + 1, playerLoc.getBlockY(), playerLoc.getBlockZ() + 1)); this.msg("Team " + team.getName() + " flag moved."); WarzoneYmlMapper.save(zone); War.war.log(this.getSender().getName() + " moved team " + team.getName() + " flag in warzone " + zone.getName(), Level.INFO); } return true; } }