diff --git a/war/src/main/java/bukkit/tommytony/war/WarCommandHandler.java b/war/src/main/java/bukkit/tommytony/war/WarCommandHandler.java index 7730890..6cb0164 100644 --- a/war/src/main/java/bukkit/tommytony/war/WarCommandHandler.java +++ b/war/src/main/java/bukkit/tommytony/war/WarCommandHandler.java @@ -87,6 +87,8 @@ public class WarCommandHandler { commandObj = new DeleteTeamCommand(this, sender, arguments); } else if (command.equals("setteamflag")) { commandObj = new SetTeamFlagCommand(this, sender, arguments); + } else if (command.equals("deleteteamflag")) { + commandObj = new DeleteTeamFlagCommand(this, sender, arguments); } else if (command.equals("setmonument")) { commandObj = new SetMonumentCommand(this, sender, arguments); } else if (command.equals("deletemonument")) { diff --git a/war/src/main/java/bukkit/tommytony/war/command/DeleteTeamFlagCommand.java b/war/src/main/java/bukkit/tommytony/war/command/DeleteTeamFlagCommand.java new file mode 100644 index 0000000..dc7170d --- /dev/null +++ b/war/src/main/java/bukkit/tommytony/war/command/DeleteTeamFlagCommand.java @@ -0,0 +1,70 @@ +package bukkit.tommytony.war.command; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.tommytony.war.Monument; +import com.tommytony.war.Team; +import com.tommytony.war.Warzone; +import com.tommytony.war.ZoneLobby; +import com.tommytony.war.mappers.WarzoneMapper; + +import bukkit.tommytony.war.WarCommandHandler; + +/** + * Deletes a monument. + * + * @author Tim Düsterhus + */ +public class DeleteTeamFlagCommand extends AbstractZoneMakerCommand { + public DeleteTeamFlagCommand(WarCommandHandler handler, CommandSender sender, String[] args) throws NotZoneMakerException { + super(handler, sender, args); + } + + @Override + public boolean handle() { + Warzone zone; + + if (this.args.length == 0) { + return false; + } else if (this.args.length == 2) { + zone = Warzone.getZoneByName(this.args[0]); + this.args[0] = this.args[1]; + } else if (this.args.length == 1) { + if (!(this.getSender() instanceof Player)) { + return false; + } + zone = Warzone.getZoneByLocation((Player) this.getSender()); + if (zone == null) { + ZoneLobby lobby = ZoneLobby.getLobbyByLocation((Player) this.getSender()); + if (lobby == null) { + return false; + } + zone = lobby.getZone(); + } + } else { + return false; + } + + if (zone == null) { + return true; + } + + Team teamFlagTeam = null; + for (Team team : zone.getTeams()) { + if (team.getName().startsWith(this.args[0].toLowerCase())) { + teamFlagTeam = team; + } + } + if (teamFlagTeam != null) { + teamFlagTeam.deleteTeamFlag(); + + WarzoneMapper.save(zone, false); + this.msg(teamFlagTeam.getName() + " flag removed."); + } else { + this.badMsg("No such team flag."); + } + + return true; + } +} diff --git a/war/src/main/java/com/tommytony/war/Team.java b/war/src/main/java/com/tommytony/war/Team.java index 7fcf2a6..992ebce 100644 --- a/war/src/main/java/com/tommytony/war/Team.java +++ b/war/src/main/java/com/tommytony/war/Team.java @@ -1,7 +1,9 @@ package com.tommytony.war; +import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import org.bukkit.Location; import org.bukkit.Material; @@ -508,7 +510,7 @@ public class Team { this.initializeTeamFlag(); } - + public boolean isTeamFlagBlock(Block block) { if (this.teamFlag != null) { int flagX = this.teamFlag.getBlockX(); @@ -524,4 +526,16 @@ public class Team { public Location getTeamFlag() { return this.teamFlag; } + + public void deleteTeamFlag() { + this.getFlagVolume().resetBlocks(); + this.setFlagVolume(null); + this.teamFlag = null; + + // remove volume file + String filePath = War.war.getDataFolder().getPath() + "/dat/warzone-" + this.warzone.getName() + "/volume-" + this.getName() + "flag.dat"; + if (!new File(filePath).delete()) { + War.war.log("Failed to delete file " + filePath, Level.WARNING); + } + } } diff --git a/war/src/main/java/plugin.yml b/war/src/main/java/plugin.yml index 8f0054c..6b039e0 100644 --- a/war/src/main/java/plugin.yml +++ b/war/src/main/java/plugin.yml @@ -139,6 +139,11 @@ commands: usage: Deletes the team. Team must exist. Provide a zone name if not standing in warzone or lobby. Ex - /deleteteam [zone-name] + deleteteamflag: + description: War> Deletes the specified team's flag. Team and flag must exist. + usage: Deletes the specified team's flag. Team and flag must exist. Provide a zone name if not standing in warzone or lobby. + Ex - + /deleteteamflag [zone-name] deletemonument: description: War> Deletes the monument. usage: Deletes the monument. Provide a zone name if not standing in warzone or lobby. diff --git a/war/target/classes/plugin.yml b/war/target/classes/plugin.yml index 8f0054c..6b039e0 100644 --- a/war/target/classes/plugin.yml +++ b/war/target/classes/plugin.yml @@ -139,6 +139,11 @@ commands: usage: Deletes the team. Team must exist. Provide a zone name if not standing in warzone or lobby. Ex - /deleteteam [zone-name] + deleteteamflag: + description: War> Deletes the specified team's flag. Team and flag must exist. + usage: Deletes the specified team's flag. Team and flag must exist. Provide a zone name if not standing in warzone or lobby. + Ex - + /deleteteamflag [zone-name] deletemonument: description: War> Deletes the monument. usage: Deletes the monument. Provide a zone name if not standing in warzone or lobby.