diff --git a/war/src/main/java/bukkit/tommytony/war/War.java b/war/src/main/java/bukkit/tommytony/war/War.java index 9bdcc67..a21b1d1 100644 --- a/war/src/main/java/bukkit/tommytony/war/War.java +++ b/war/src/main/java/bukkit/tommytony/war/War.java @@ -177,32 +177,7 @@ public class War extends JavaPlugin { return this.commandHandler.handle(sender, cmd, commandLabel, args); if (sender instanceof Player) { - Player player = (Player) sender; - String command = cmd.getName(); - String[] arguments = null; - // Handle both /war and /. I.e. "/war zone temple" == "/zone temple" - String helpMessage = "War is on. Please pick your battle. " + "Try /warhub, /zones and /zone. Further instructions at war.tommytony.com/instructions."; - if ((command.equals("war") || command.equals("War")) && args.length > 0) { - command = args[0]; - arguments = new String[args.length - 1]; - for (int i = 1; i <= arguments.length; i++) { - arguments[i - 1] = args[i]; - } - if (arguments.length == 1 && (arguments[0].equals("help") || arguments[0].equals("h"))) { - this.msg(player, helpMessage); - } - } else if (command.equals("war") || command.equals("War")) { - this.msg(player, helpMessage); - } else { - arguments = args; - } - - // Player commands: /warzones, /warzone, /teams, /join, /leave - if (command.equals("zones") || command.equals("warzones")) { - this.performZones(player); - } else if (command.equals("zone") || command.equals("warzone")) { - this.performZone(player, arguments); - } else if (command.equals("teams")) { + if (command.equals("teams")) { this.performTeams(player); } else if (command.equals("join") && this.canPlayWar(player)) { this.performJoin(player, arguments); @@ -931,32 +906,6 @@ public class War extends JavaPlugin { } } - public void performZone(Player player, String[] arguments) { - if (arguments.length < 1) { - this.badMsg(player, "Usage: /zone ."); - } else if (!this.canWarp(player)) { - this.badMsg(player, "Can't warp to zone. You need the 'war.warp' permission."); - } else { - boolean warped = false; - for (Warzone warzone : this.getWarzones()) { - if (warzone.getName().toLowerCase().startsWith(arguments[0].toLowerCase()) && warzone.getTeleport() != null) { - Team playerTeam = this.getPlayerTeam(player.getName()); - if (playerTeam != null) { - Warzone playerWarzone = this.getPlayerTeamWarzone(player.getName()); - playerWarzone.handlePlayerLeave(player, warzone.getTeleport(), true); - } else { - player.teleport(warzone.getTeleport()); - } - warped = true; - break; - } - } - if (!warped) { - this.badMsg(player, "No such warzone."); - } - } - } - private boolean updateZoneFromNamedParams(Warzone warzone, Player player, String[] arguments) { try { Map namedParams = new HashMap(); diff --git a/war/src/main/java/bukkit/tommytony/war/command/AbstractWarzoneCommand.java b/war/src/main/java/bukkit/tommytony/war/command/AbstractWarzoneCommand.java index a4036a2..1576ad2 100644 --- a/war/src/main/java/bukkit/tommytony/war/command/AbstractWarzoneCommand.java +++ b/war/src/main/java/bukkit/tommytony/war/command/AbstractWarzoneCommand.java @@ -1,19 +1,41 @@ package bukkit.tommytony.war.command; +import org.bukkit.Location; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import bukkit.tommytony.war.War; import bukkit.tommytony.war.WarCommandHandler; import com.tommytony.war.Warzone; +import com.tommytony.war.ZoneLobby; public abstract class AbstractWarzoneCommand extends AbstractWarCommand { - protected int parameterCount = 0; protected Warzone zone = null; public AbstractWarzoneCommand(WarCommandHandler handler, CommandSender sender, String[] args) { super(handler, sender, args); - - // TODO: Find the warzone either from name (support console too) or from location } + public Warzone getWarzoneFromLocation(Player player) { + return this.getWarzoneFromLocation(player.getLocation()); + } + public Warzone getWarzoneFromLocation(Location location) { + Warzone zone = War.war.warzone(location); + if (zone == null) { + ZoneLobby lobby = War.war.lobby(location); + if (lobby == null) return null; + zone = lobby.getZone(); + } + return zone; + } + + public Warzone getWarzoneFromName(String name) { + for (Warzone zone : War.war.getWarzones()) { + if (zone.getName().toLowerCase().equals(name.toLowerCase())) { + return zone; + } + } + return null; + } } diff --git a/war/src/main/java/bukkit/tommytony/war/command/TeamsCommand.java b/war/src/main/java/bukkit/tommytony/war/command/TeamsCommand.java new file mode 100644 index 0000000..a703023 --- /dev/null +++ b/war/src/main/java/bukkit/tommytony/war/command/TeamsCommand.java @@ -0,0 +1,31 @@ +package bukkit.tommytony.war.command; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import bukkit.tommytony.war.WarCommandHandler; + +import com.tommytony.war.Warzone; + +public class TeamsCommand extends AbstractWarzoneCommand { + public TeamsCommand(WarCommandHandler handler, CommandSender sender, String[] args) { + super(handler, sender, args); + } + + public boolean handle() { + Warzone zone; + if (this.args.length == 1) { + zone = this.getWarzoneFromName(this.args[0]); + } else { + if (!(this.sender instanceof Player)) { + return false; + } + zone = this.getWarzoneFromLocation((Player) this.sender); + } + if (zone == null) { + return false; + } +// zone.getTeams(); + return true; + } +}