Merging /renameZone. Maybe I would've liked this better under /zonecfg to keep the command count as low as possible, but this will do. There's too many settings already anyway. I'm keeping plugin.yml in classes because it lets me build in a snap in eclipse instead of through mvn. I know: it's lame.

This commit is contained in:
taoneill 2011-09-19 22:19:38 -04:00
commit 23893c60da
6 changed files with 173 additions and 64 deletions

View File

@ -79,6 +79,8 @@ public class WarCommandHandler {
commandObj = new ResetZoneCommand(this, sender, arguments);
} else if (command.equals("nextbattle")) {
commandObj = new NextBattleCommand(this, sender, arguments);
} else if (command.equals("renamezone")) {
commandObj = new RenameZoneCommand(this, sender, arguments);
} else if (command.equals("setteam")) {
commandObj = new SetTeamCommand(this, sender, arguments);
} else if (command.equals("deleteteam")) {

View File

@ -0,0 +1,98 @@
package bukkit.tommytony.war.command;
import java.io.File;
import java.util.logging.Level;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.tommytony.war.Warzone;
import com.tommytony.war.ZoneLobby;
import com.tommytony.war.mappers.PropertiesFile;
import com.tommytony.war.mappers.WarMapper;
import com.tommytony.war.mappers.WarzoneMapper;
import bukkit.tommytony.war.War;
import bukkit.tommytony.war.WarCommandHandler;
public class RenameZoneCommand extends AbstractZoneMakerCommand {
public RenameZoneCommand(WarCommandHandler handler, CommandSender sender, String[] args) throws NotZoneMakerException {
super(handler, sender, args);
}
@Override
public boolean handle() {
Warzone zone;
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 false;
}
// kill old reference
zone.unload();
War.war.getWarzones().remove(zone);
// rename zone file
(new File(War.war.getDataFolder().getPath() + "/warzone-" + zone.getName() + ".txt")).renameTo(new File(War.war.getDataFolder().getPath() + "/warzone-" + this.args[0] + ".txt"));
// rename zone folder
(new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zone.getName())).renameTo(new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + this.args[0]));
// TODO: Move renaming into ZoneVolumeMapper?
// rename volume files
String oldStart = War.war.getDataFolder().getPath() + "/dat/warzone-" + this.args[0] + "/volume-" + zone.getName() + ".";
String newStart = War.war.getDataFolder().getPath() + "/dat/warzone-" + this.args[0] + "/volume-" + this.args[0] + ".";
(new File(oldStart + "corners")).renameTo(new File(newStart + "corners"));
(new File(oldStart + "blocks")).renameTo(new File(newStart + "blocks"));
(new File(oldStart + "signs")).renameTo(new File(newStart + "signs"));
(new File(oldStart + "invs")).renameTo(new File(newStart + "invs"));
// set new name
PropertiesFile warzoneConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/warzone-" + this.args[0] + ".txt");
warzoneConfig.setString("name", this.args[0]);
warzoneConfig.save();
warzoneConfig.close();
War.war.log("Loading zone " + this.args[0] + "...", Level.INFO);
Warzone newZone = WarzoneMapper.load(this.args[0], false);
War.war.getWarzones().add(newZone);
// zone.getVolume().loadCorners();
newZone.getVolume().loadCorners();
if (newZone.getLobby() != null) {
newZone.getLobby().getVolume().resetBlocks();
}
if (newZone.isResetOnLoad()) {
newZone.getVolume().resetBlocks();
}
newZone.initializeZone();
// save war config
WarMapper.save();
if (War.war.getWarHub() != null) { // warhub has to change
War.war.getWarHub().getVolume().resetBlocks();
War.war.getWarHub().initialize();
}
this.msg("Warzone " + zone.getName() + " renamed to " + this.args[0] + ".");
return true;
}
}

View File

@ -546,5 +546,4 @@ public class WarzoneMapper {
War.war.log("Failed to delete file " + zoneFile.getName(), Level.WARNING);
}
}
}

View File

@ -501,11 +501,11 @@ public class ZoneVolumeMapper {
* war Instance of war
*/
public static void delete(Volume volume) {
ZoneVolumeMapper.deleteFile("War/dat/volume-" + volume.getName() + ".dat");
ZoneVolumeMapper.deleteFile("War/dat/volume-" + volume.getName() + ".corners");
ZoneVolumeMapper.deleteFile("War/dat/volume-" + volume.getName() + ".blocks");
ZoneVolumeMapper.deleteFile("War/dat/volume-" + volume.getName() + ".signs");
ZoneVolumeMapper.deleteFile("War/dat/volume-" + volume.getName() + ".invs");
ZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".dat");
ZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".corners");
ZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".blocks");
ZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".signs");
ZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".invs");
}
/**

View File

@ -129,6 +129,11 @@ commands:
usage: Deletes the zone after resetting all blocks. Provide a zone name if not standing in warzone or lobby.
Ex -
/deletezone [zone-name]
renamezone:
description: War> Renames the zone
usage: Renames the zone. Provide a zone name if not standing in warzone or lobby.
Ex -
/renamezone [zone-name] <new-name>
deleteteam:
description: War> Deletes the team. Team must exist.
usage: Deletes the team. Team must exist. Provide a zone name if not standing in warzone or lobby.

View File

@ -129,6 +129,11 @@ commands:
usage: Deletes the zone after resetting all blocks. Provide a zone name if not standing in warzone or lobby.
Ex -
/deletezone [zone-name]
renamezone:
description: War> Renames the zone
usage: Renames the zone. Provide a zone name if not standing in warzone or lobby.
Ex -
/renamezone [zone-name] <new-name>
deleteteam:
description: War> Deletes the team. Team must exist.
usage: Deletes the team. Team must exist. Provide a zone name if not standing in warzone or lobby.