From 0abd111f729d4d44768f185386160b3a8598ae2f Mon Sep 17 00:00:00 2001 From: taoneill Date: Fri, 14 Jan 2011 14:14:21 -0500 Subject: [PATCH] Now saving zone blocks as soon as second corner is set. Also now saving blocks when changing corners. Now saving team lobby and monument blocks at all times. --- .../tommytony/war/WarPlayerListener.java | 47 ++++++------- .../tommytony/war/mappers/VolumeMapper.java | 27 ++++---- .../tommytony/war/mappers/WarzoneMapper.java | 68 ++++++++++--------- 3 files changed, 75 insertions(+), 67 deletions(-) diff --git a/war/src/main/java/bukkit/tommytony/war/WarPlayerListener.java b/war/src/main/java/bukkit/tommytony/war/WarPlayerListener.java index 095ea46..8f7d138 100644 --- a/war/src/main/java/bukkit/tommytony/war/WarPlayerListener.java +++ b/war/src/main/java/bukkit/tommytony/war/WarPlayerListener.java @@ -256,6 +256,7 @@ public class WarPlayerListener extends PlayerListener { "or /resetwarzone before changing the boundary). ")); } else { Warzone warzone = war.findWarzone(arguments[0]); + String message = ""; if(warzone == null) { // create the warzone warzone = new Warzone(war, player.getLocation().getWorld(), arguments[0]); @@ -270,8 +271,9 @@ public class WarPlayerListener extends PlayerListener { player.sendMessage(war.str("Warzone " + warzone.getName() + " added. Southeasternmost point set at x=" + (int)warzone.getSoutheast().getBlockX() + " z=" + (int)warzone.getSoutheast().getBlockZ() + ".")); } + WarzoneMapper.save(war, warzone, false); } else { - String message = ""; + // change existing warzone if(arguments[1].equals("northwest") || arguments[1].equals("nw")) { int reset = warzone.getVolume().resetBlocks(); warzone.setNorthwest(player.getLocation()); @@ -279,37 +281,36 @@ public class WarPlayerListener extends PlayerListener { warzone.initializeZone(); message += "Northwesternmost point set at x=" + (int)warzone.getNorthwest().getBlockX() + " z=" + (int)warzone.getNorthwest().getBlockZ() + " on warzone " + warzone.getName() + ". " + - reset + " blocks reset. New zone saved."; + reset + " blocks reset. Zone saved."; + } else { int reset = warzone.getVolume().resetBlocks(); warzone.setSoutheast(player.getLocation()); warzone.saveState(); warzone.initializeZone(); + message += "Southeasternmost point set at x=" + (int)warzone.getSoutheast().getBlockX() + " z=" + (int)warzone.getSoutheast().getBlockZ() + " on warzone " + warzone.getName() + ". " + - reset + " blocks reset. New zone saved."; + reset + " blocks reset. Zone saved."; } - - if(warzone.getNorthwest() == null) { - message += " Still missing northwesternmost point."; - } - if(warzone.getSoutheast() == null) { - message += " Still missing southeasternmost point."; - } - if(warzone.getNorthwest() != null && warzone.getSoutheast() != null) { - if(warzone.ready()) { - message += " Warzone " + warzone.getName() + " almost ready. Use /setteam while inside the warzone to create new teams. Make sure to use /savezone to " + - "set the warzone teleport point and initial state."; - } else if (warzone.tooSmall()) { - message += " Warzone " + warzone.getName() + " is too small. Min north-south size: 20. Min east-west size: 20."; - } else if (warzone.tooBig()) { - message += " Warzone " + warzone.getName() + " is too Big. Max north-south size: 1000. Max east-west size: 1000."; - } - } - player.sendMessage(war.str(message)); + WarzoneMapper.save(war, warzone, true); } - WarzoneMapper.save(war, warzone, false); - + if(warzone.getNorthwest() == null) { + message += " Still missing northwesternmost point."; + } + if(warzone.getSoutheast() == null) { + message += " Still missing southeasternmost point."; + } + if(warzone.getNorthwest() != null && warzone.getSoutheast() != null) { + if(warzone.ready()) { + message += " Warzone " + warzone.getName() + " outline done. Use /setteam, /setmonument and /savezone to complete the zone."; + } else if (warzone.tooSmall()) { + message += " Warzone " + warzone.getName() + " is too small. Min north-south size: 20. Min east-west size: 20."; + } else if (warzone.tooBig()) { + message += " Warzone " + warzone.getName() + " is too Big. Max north-south size: 1000. Max east-west size: 1000."; + } + } + player.sendMessage(war.str(message)); } event.setCancelled(true); } diff --git a/war/src/main/java/com/tommytony/war/mappers/VolumeMapper.java b/war/src/main/java/com/tommytony/war/mappers/VolumeMapper.java index c1062fc..bc6fe35 100644 --- a/war/src/main/java/com/tommytony/war/mappers/VolumeMapper.java +++ b/war/src/main/java/com/tommytony/war/mappers/VolumeMapper.java @@ -122,22 +122,22 @@ public class VolumeMapper { else out = new BufferedWriter(new FileWriter(new File("War/warzone-" + zoneName + "/volume-" + volume.getName() + ".dat"))); if(volume instanceof CenteredVolume) { out.write("center"); out.newLine(); - out.write(volume.getCornerOne().getX()); out.newLine(); - out.write(volume.getCornerOne().getY()); out.newLine(); - out.write(volume.getCornerOne().getZ()); out.newLine(); + out.write(Integer.toString(volume.getCornerOne().getX())); out.newLine(); + out.write(Integer.toString(volume.getCornerOne().getY())); out.newLine(); + out.write(Integer.toString(volume.getCornerOne().getZ())); out.newLine(); out.write("nothing"); out.newLine(); - out.write(0); out.newLine(); - out.write(0); out.newLine(); - out.write(0); out.newLine(); + out.write(Integer.toString(0)); out.newLine(); + out.write(Integer.toString(0)); out.newLine(); + out.write(Integer.toString(0)); out.newLine(); } else { out.write("corner1"); out.newLine(); - out.write(volume.getCornerOne().getX()); out.newLine(); - out.write(volume.getCornerOne().getY()); out.newLine(); - out.write(volume.getCornerOne().getZ()); out.newLine(); + out.write(Integer.toString(volume.getCornerOne().getX())); out.newLine(); + out.write(Integer.toString(volume.getCornerOne().getY())); out.newLine(); + out.write(Integer.toString(volume.getCornerOne().getZ())); out.newLine(); out.write("corner2"); out.newLine(); - out.write(volume.getCornerTwo().getX()); out.newLine(); - out.write(volume.getCornerTwo().getY()); out.newLine(); - out.write(volume.getCornerTwo().getZ()); out.newLine(); + out.write(Integer.toString(volume.getCornerTwo().getX())); out.newLine(); + out.write(Integer.toString(volume.getCornerTwo().getY())); out.newLine(); + out.write(Integer.toString(volume.getCornerTwo().getZ())); out.newLine(); } for(int i = 0; i < volume.getSizeX(); i++){ @@ -145,7 +145,7 @@ public class VolumeMapper { for(int k = 0; k < volume.getSizeZ(); k++) { BlockInfo info = volume.getBlockInfos()[i][j][k]; if(info == null) { - out.write("0,0,"); out.newLine(); + out.write("0,0,"); } else { if(info.getType() == Material.SIGN || info.getType() == Material.SIGN_POST) { String[] lines = info.getSignLines(); @@ -156,6 +156,7 @@ public class VolumeMapper { out.write(info.getTypeID() + "," + info.getData() + ","); } } + out.newLine(); } } } diff --git a/war/src/main/java/com/tommytony/war/mappers/WarzoneMapper.java b/war/src/main/java/com/tommytony/war/mappers/WarzoneMapper.java index b785ea2..d9828ac 100644 --- a/war/src/main/java/com/tommytony/war/mappers/WarzoneMapper.java +++ b/war/src/main/java/com/tommytony/war/mappers/WarzoneMapper.java @@ -153,16 +153,18 @@ public class WarzoneMapper { // lobby String lobbyStr = warzoneConfig.getString("lobby"); BlockFace lobbyFace = null; - if(lobbyStr.equals("south")) { - lobbyFace = BlockFace.South; - } else if(lobbyStr.equals("east")) { - lobbyFace = BlockFace.East; - } else if(lobbyStr.equals("north")) { - lobbyFace = BlockFace.North; - } else if(lobbyStr.equals("west")) { - lobbyFace = BlockFace.West; - } - warzone.setLobby(new ZoneLobby(war, warzone, lobbyFace)); + if(lobbyStr != null && !lobbyStr.equals("")){ + if(lobbyStr.equals("south")) { + lobbyFace = BlockFace.South; + } else if(lobbyStr.equals("east")) { + lobbyFace = BlockFace.East; + } else if(lobbyStr.equals("north")) { + lobbyFace = BlockFace.North; + } else if(lobbyStr.equals("west")) { + lobbyFace = BlockFace.West; + } + warzone.setLobby(new ZoneLobby(war, warzone, lobbyFace)); + } warzoneConfig.close(); @@ -195,7 +197,7 @@ public class WarzoneMapper { } - public static void save(War war, Warzone warzone, boolean saveBlocks) { + public static void save(War war, Warzone warzone, boolean saveAllBlocks) { (new File(war.getName()+"/warzone-"+warzone.getName())).mkdir(); PropertiesFile warzoneConfig = new PropertiesFile(war.getName() + "/warzone-" + warzone.getName() + "/warzone-" + warzone.getName() + ".txt"); //war.getLogger().info("Saving warzone " + warzone.getName() + "..."); @@ -265,34 +267,38 @@ public class WarzoneMapper { // lobby String lobbyStr = ""; - if(BlockFace.South == warzone.getLobby().getWall()) { - lobbyStr = "south"; - } else if(BlockFace.East == warzone.getLobby().getWall()) { - lobbyStr = "east"; - } else if(BlockFace.North == warzone.getLobby().getWall()) { - lobbyStr = "north"; - } else if(BlockFace.West == warzone.getLobby().getWall()) { - lobbyStr = "west"; - } + if(warzone.getLobby() != null) { + if(BlockFace.South == warzone.getLobby().getWall()) { + lobbyStr = "south"; + } else if(BlockFace.East == warzone.getLobby().getWall()) { + lobbyStr = "east"; + } else if(BlockFace.North == warzone.getLobby().getWall()) { + lobbyStr = "north"; + } else if(BlockFace.West == warzone.getLobby().getWall()) { + lobbyStr = "west"; + } + } warzoneConfig.setString("lobby", lobbyStr); warzoneConfig.save(); warzoneConfig.close(); - if(saveBlocks) { + if(saveAllBlocks) { // zone blocks VolumeMapper.save(warzone.getVolume(), warzone.getName(), war); + } - // monument blocks - for(Monument monument: monuments) { - VolumeMapper.save(monument.getVolume(), warzone.getName(), war); - } - - // team spawn blocks - for(Team team : teams) { - VolumeMapper.save(team.getVolume(), warzone.getName(), war); - } - + // monument blocks + for(Monument monument: monuments) { + VolumeMapper.save(monument.getVolume(), warzone.getName(), war); + } + + // team spawn blocks + for(Team team : teams) { + VolumeMapper.save(team.getVolume(), warzone.getName(), war); + } + + if(warzone.getLobby() != null) { VolumeMapper.save(warzone.getLobby().getVolume(), warzone.getName(), war); }