diff --git a/war/pom.xml b/war/pom.xml index 667f962..3fbfaf9 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tommytony war - 1.10-SNAPSHOT + 2.0-SNAPSHOT jar War http://war.tommytony.com @@ -15,21 +15,17 @@ UTF-8 + + maven.cmastudios.me + https://maven.cmastudios.me/ + spigot-repo https://hub.spigotmc.org/nexus/content/groups/public/ - - cma-repo - http://ftp.cmastudios.me/maven/ - - - tagapi-repo - http://repo.kitteh.org/content/repositories/public/ - sk89q-repo - http://maven.sk89q.com/repo/ + https://maven.sk89q.com/repo/ @@ -48,8 +44,8 @@ - cma-repo - ftp://ftp.cmastudios.me/srv/ftp/maven + maven.cmastudios.me + s3://maven.cmastudios.me/ @@ -93,8 +89,9 @@ - org.apache.maven.wagon - wagon-ftp + org.kuali.maven.wagons + maven-s3-wagon + 1.2.1 @@ -121,7 +118,7 @@ org.bukkit bukkit - 1.12-R0.1-SNAPSHOT + 1.13-R0.1-SNAPSHOT org.kitteh @@ -137,9 +134,9 @@ test - com.sk89q - worldedit - 5.5.8 + com.tommytony + worldedit-bukkit + 7.0.0-beta-01 jar diff --git a/war/src/main/java/com/tommytony/war/Team.java b/war/src/main/java/com/tommytony/war/Team.java index 546146e..de11bf2 100644 --- a/war/src/main/java/com/tommytony/war/Team.java +++ b/war/src/main/java/com/tommytony/war/Team.java @@ -330,7 +330,7 @@ public class Team { this.getTeamConfig().resolveInt( TeamConfig.LIFEPOOL)).split("\n"); } - signBlock.setType(Material.SIGN_POST); + signBlock.setType(Material.SIGN); org.bukkit.block.Sign block = (org.bukkit.block.Sign) signBlock .getState(); org.bukkit.material.Sign data = (Sign) block.getData(); @@ -350,7 +350,6 @@ public class Team { private void setBlock(int x, int y, int z, TeamKind kind) { BlockState block = this.warzone.getWorld().getBlockAt(x, y, z).getState(); block.setType(kind.getMaterial()); - block.setData(kind.getBlockData()); block.update(true); } @@ -616,7 +615,6 @@ public class Team { // flag BlockState flagBlock = this.warzone.getWorld().getBlockAt(x, y + 1, z).getState(); flagBlock.setType(this.kind.getMaterial()); - flagBlock.setData(this.kind.getBlockData()); flagBlock.update(true); // Flag post using Orientation diff --git a/war/src/main/java/com/tommytony/war/War.java b/war/src/main/java/com/tommytony/war/War.java index e2fd943..2363ebb 100644 --- a/war/src/main/java/com/tommytony/war/War.java +++ b/war/src/main/java/com/tommytony/war/War.java @@ -12,10 +12,7 @@ import com.tommytony.war.mapper.WarzoneYmlMapper; import com.tommytony.war.spout.SpoutDisplayer; import com.tommytony.war.structure.*; import com.tommytony.war.ui.UIManager; -import com.tommytony.war.utility.Loadout; -import com.tommytony.war.utility.PlayerState; -import com.tommytony.war.utility.SizeCounter; -import com.tommytony.war.utility.WarLogFormatter; +import com.tommytony.war.utility.*; import com.tommytony.war.volume.Volume; import net.milkbowl.vault.economy.Economy; import org.bukkit.ChatColor; @@ -83,7 +80,7 @@ public class War extends JavaPlugin { private Economy econ = null; private SpoutDisplayer spoutMessenger = null; private HubLobbyMaterials warhubMaterials = new HubLobbyMaterials( - new ItemStack(Material.GLASS), new ItemStack(Material.WOOD), + new ItemStack(Material.GLASS), new ItemStack(Material.OAK_WOOD), new ItemStack(Material.OBSIDIAN), new ItemStack(Material.GLOWSTONE)); private UIManager UIManager; @@ -224,23 +221,19 @@ public class War extends JavaPlugin { this.getDefaultInventories().clearLoadouts(); HashMap defaultLoadout = new HashMap(); - ItemStack stoneSword = new ItemStack(Material.STONE_SWORD, 1, (byte) 8); - stoneSword.setDurability((short) 8); + ItemStack stoneSword = Compat.createDamagedIS(Material.STONE_SWORD, 1, (byte) 8); defaultLoadout.put(0, stoneSword); - ItemStack bow = new ItemStack(Material.BOW, 1, (byte) 8); - bow.setDurability((short) 8); + ItemStack bow = Compat.createDamagedIS(Material.BOW, 1, (byte) 8); defaultLoadout.put(1, bow); ItemStack arrows = new ItemStack(Material.ARROW, 7); defaultLoadout.put(2, arrows); - ItemStack stonePick = new ItemStack(Material.IRON_PICKAXE, 1, (byte) 8); - stonePick.setDurability((short) 8); + ItemStack stonePick = Compat.createDamagedIS(Material.IRON_PICKAXE, 1, (byte) 8); defaultLoadout.put(3, stonePick); - ItemStack stoneSpade = new ItemStack(Material.STONE_SPADE, 1, (byte) 8); - stoneSword.setDurability((short) 8); + ItemStack stoneSpade = Compat.createDamagedIS(Material.STONE_SHOVEL, 1, (byte) 8); defaultLoadout.put(4, stoneSpade); this.getDefaultInventories().addLoadout("default", defaultLoadout); @@ -1127,7 +1120,7 @@ public class War extends JavaPlugin { public void addWandBearer(Player player, String zoneName) { if (this.wandBearers.containsKey(player.getName())) { String alreadyHaveWand = this.wandBearers.get(player.getName()); - if (player.getInventory().first(Material.WOOD_SWORD) != -1) { + if (player.getInventory().first(Material.WOODEN_SWORD) != -1) { if (zoneName.equals(alreadyHaveWand)) { this.badMsg(player, "You already have a wand for zone " + alreadyHaveWand + ". Drop the wooden sword first."); } else { @@ -1140,7 +1133,7 @@ public class War extends JavaPlugin { // lost his sword, or new warzone if (zoneName.equals(alreadyHaveWand)) { // same zone, give him a new sword - player.getInventory().addItem(new ItemStack(Material.WOOD_SWORD, 1, (byte) 8)); + player.getInventory().addItem(new ItemStack(Material.WOODEN_SWORD, 1, (byte) 8)); this.msg(player, "Here's a new sword for zone " + zoneName + "."); } } @@ -1149,7 +1142,7 @@ public class War extends JavaPlugin { this.badMsg(player, "Your inventory is full. Please drop an item and try again."); } else { this.wandBearers.put(player.getName(), zoneName); - player.getInventory().addItem(new ItemStack(Material.WOOD_SWORD, 1, (byte) 8)); + player.getInventory().addItem(new ItemStack(Material.WOODEN_SWORD, 1, (byte) 8)); // player.getWorld().dropItem(player.getLocation(), new ItemStack(Material.WOOD_SWORD)); this.msg(player, "You now have a wand for zone " + zoneName + ". Left-click with wooden sword for corner 1. Right-click for corner 2."); War.war.log(player.getName() + " now has a wand for warzone " + zoneName, Level.INFO); diff --git a/war/src/main/java/com/tommytony/war/Warzone.java b/war/src/main/java/com/tommytony/war/Warzone.java index 38c69bb..899c669 100644 --- a/war/src/main/java/com/tommytony/war/Warzone.java +++ b/war/src/main/java/com/tommytony/war/Warzone.java @@ -103,7 +103,7 @@ public class Warzone { private HubLobbyMaterials lobbyMaterials = null; private WarzoneMaterials warzoneMaterials = new WarzoneMaterials( - new ItemStack(Material.OBSIDIAN), new ItemStack(Material.FENCE), + new ItemStack(Material.OBSIDIAN), new ItemStack(Material.OAK_FENCE), new ItemStack(Material.GLOWSTONE)); private boolean isEndOfGame = false; @@ -1123,7 +1123,7 @@ public class Warzone { return; if (this.getScoreboard() == null) return; - if (this.scoreboard.getObjective(this.getScoreboardType().getDisplayName()) == null) { + if (this.scoreboard.getObjective(this.getScoreboardType().name()) == null) { for (String entry : this.scoreboard.getEntries()) { this.scoreboard.resetScores(entry); } @@ -1131,8 +1131,8 @@ public class Warzone { for (Objective obj : this.scoreboard.getObjectives()) { obj.unregister(); } - scoreboard.registerNewObjective(this.getScoreboardType().getDisplayName(), "dummy"); - Objective obj = scoreboard.getObjective(this.getScoreboardType().getDisplayName()); + scoreboard.registerNewObjective(this.getScoreboardType().name(), "dummy", this.getScoreboardType().getDisplayName()); + Objective obj = scoreboard.getObjective(this.getScoreboardType().name()); Validate.isTrue(obj.isModifiable(), "Cannot modify players' scores on the " + this.name + " scoreboard."); obj.setDisplaySlot(DisplaySlot.SIDEBAR); } diff --git a/war/src/main/java/com/tommytony/war/command/SetZoneCommand.java b/war/src/main/java/com/tommytony/war/command/SetZoneCommand.java index f4d42e6..c021047 100644 --- a/war/src/main/java/com/tommytony/war/command/SetZoneCommand.java +++ b/war/src/main/java/com/tommytony/war/command/SetZoneCommand.java @@ -1,13 +1,9 @@ package com.tommytony.war.command; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.bukkit.selections.CuboidSelection; -import com.sk89q.worldedit.bukkit.selections.Selection; +import com.tommytony.war.War; +import com.tommytony.war.utility.Compat; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.Location; - -import com.tommytony.war.War; public class SetZoneCommand extends AbstractZoneMakerCommand { @@ -30,20 +26,15 @@ public class SetZoneCommand extends AbstractZoneMakerCommand { } else if (this.args.length > 2) { return false; } else if (this.args.length == 1) { - if (War.war.getServer().getPluginManager().isPluginEnabled("WorldEdit")) { - WorldEditPlugin worldEdit = (WorldEditPlugin) War.war.getServer().getPluginManager().getPlugin("WorldEdit"); - Selection selection = worldEdit.getSelection(player); - if (selection != null && selection instanceof CuboidSelection) { - Location min = selection.getMinimumPoint(); - Location max = selection.getMaximumPoint(); - ZoneSetter setter = new ZoneSetter(player, this.args[0]); - setter.placeCorner1(min.getBlock()); - setter.placeCorner2(max.getBlock()); - return true; - } + Compat.BlockPair pair = Compat.getWorldEditSelection(player); + if (pair != null) { + ZoneSetter setter = new ZoneSetter(player, this.args[0]); + setter.placeCorner1(pair.getBlock1()); + setter.placeCorner2(pair.getBlock2()); + return true; } War.war.addWandBearer(player, this.args[0]); - } else if (this.args.length == 2) { + } else { if (!this.args[1].equals("southeast") && !this.args[1].equals("northwest") && !this.args[1].equals("se") && !this.args[1].equals("nw") && !this.args[1].equals("corner1") && !this.args[1].equals("corner2") && !this.args[1].equals("c1") && !this.args[1].equals("c2") && !this.args[1].equals("pos1") && !this.args[1].equals("pos2") && !this.args[1].equals("wand")) { return false; } diff --git a/war/src/main/java/com/tommytony/war/config/KillstreakReward.java b/war/src/main/java/com/tommytony/war/config/KillstreakReward.java index de5918c..5ea3d5c 100644 --- a/war/src/main/java/com/tommytony/war/config/KillstreakReward.java +++ b/war/src/main/java/com/tommytony/war/config/KillstreakReward.java @@ -45,7 +45,7 @@ public class KillstreakReward { section.set("5.reward.airstrike", true); section.set("5.reward.items", ImmutableList.of(new ItemStack(Material.ARROW, 15), new ItemStack(Material.EGG))); section.set("5.reward.effect", Effect.GHAST_SHRIEK.name()); - ItemStack sword = new ItemStack(Material.WOOD_SWORD); + ItemStack sword = new ItemStack(Material.WOODEN_SWORD); sword.addEnchantment(Enchantment.DAMAGE_ALL, 2); sword.addEnchantment(Enchantment.KNOCKBACK, 1); ItemMeta meta = sword.getItemMeta(); diff --git a/war/src/main/java/com/tommytony/war/config/TeamKind.java b/war/src/main/java/com/tommytony/war/config/TeamKind.java index e34b565..b085706 100644 --- a/war/src/main/java/com/tommytony/war/config/TeamKind.java +++ b/war/src/main/java/com/tommytony/war/config/TeamKind.java @@ -11,22 +11,22 @@ import org.bukkit.material.Wool; import org.getspout.spoutapi.gui.Color; public enum TeamKind { - WHITE (DyeColor.WHITE, Material.WOOL, ChatColor.WHITE, 450), - ORANGE (DyeColor.ORANGE, Material.WOOL, ChatColor.GOLD, 51), - MAGENTA (DyeColor.MAGENTA, Material.WOOL, ChatColor.LIGHT_PURPLE, 353), - BLUE (DyeColor.LIGHT_BLUE, Material.WOOL, ChatColor.BLUE, 23), - GOLD (DyeColor.YELLOW, Material.WOOL, ChatColor.YELLOW, 403), // yellow = gold - GREEN (DyeColor.LIME, Material.WOOL, ChatColor.GREEN, 612), - PINK (DyeColor.PINK, Material.WOOL, ChatColor.LIGHT_PURPLE, 929), - GRAY (DyeColor.GRAY, Material.WOOL, ChatColor.DARK_GRAY, 600), - IRON (DyeColor.SILVER, Material.WOOL, ChatColor.GRAY, 154), // lightgrey = iron - DIAMOND (DyeColor.CYAN, Material.WOOL, ChatColor.DARK_AQUA, 738), // cyan = diamond - PURPLE (DyeColor.PURPLE, Material.WOOL, ChatColor.DARK_PURPLE, 153), - NAVY (DyeColor.BLUE, Material.WOOL, ChatColor.DARK_BLUE, 939), - BROWN (DyeColor.BROWN, Material.WOOL, ChatColor.DARK_RED, 908), - DARKGREEN (DyeColor.GREEN, Material.WOOL, ChatColor.DARK_GREEN, 612), - RED (DyeColor.RED, Material.WOOL, ChatColor.RED, 245), - BLACK (DyeColor.BLACK, Material.WOOL, ChatColor.BLACK, 0); + WHITE (DyeColor.WHITE, Material.WHITE_WOOL, ChatColor.WHITE, 450), + ORANGE (DyeColor.ORANGE, Material.ORANGE_WOOL, ChatColor.GOLD, 51), + MAGENTA (DyeColor.MAGENTA, Material.MAGENTA_WOOL, ChatColor.LIGHT_PURPLE, 353), + BLUE (DyeColor.LIGHT_BLUE, Material.LIGHT_BLUE_WOOL, ChatColor.BLUE, 23), + GOLD (DyeColor.YELLOW, Material.YELLOW_WOOL, ChatColor.YELLOW, 403), // yellow = gold + GREEN (DyeColor.LIME, Material.LIME_WOOL, ChatColor.GREEN, 612), + PINK (DyeColor.PINK, Material.PINK_WOOL, ChatColor.LIGHT_PURPLE, 929), + GRAY (DyeColor.GRAY, Material.GRAY_WOOL, ChatColor.DARK_GRAY, 600), + IRON (DyeColor.GRAY, Material.GRAY_WOOL, ChatColor.GRAY, 154), // lightgrey = iron + DIAMOND (DyeColor.CYAN, Material.CYAN_WOOL, ChatColor.DARK_AQUA, 738), // cyan = diamond + PURPLE (DyeColor.PURPLE, Material.PURPLE_WOOL, ChatColor.DARK_PURPLE, 153), + NAVY (DyeColor.BLUE, Material.BLUE_WOOL, ChatColor.DARK_BLUE, 939), + BROWN (DyeColor.BROWN, Material.BROWN_WOOL, ChatColor.DARK_RED, 908), + DARKGREEN (DyeColor.GREEN, Material.GREEN_WOOL, ChatColor.DARK_GREEN, 612), + RED (DyeColor.RED, Material.RED_WOOL, ChatColor.RED, 245), + BLACK (DyeColor.BLACK, Material.BLACK_WOOL, ChatColor.BLACK, 0); private final DyeColor dyeColor; private final ChatColor chatColor; @@ -61,23 +61,13 @@ public enum TeamKind { /** * Get wool block data for the dye color. - * + * @deprecated TODO remove all spout craft support * @return wool color data value */ - @SuppressWarnings("deprecation") public byte getData() { return this.dyeColor.getWoolData(); } - /** - * Get the color of the wool head block. - * - * @return head wool color. - */ - public DyeColor getDyeColor() { - return this.dyeColor; - } - /** * Get the color of this team in chat messages. * @@ -108,7 +98,7 @@ public enum TeamKind { } /** - * Get head block material. Should always be {@link Material#WOOL}. + * Get head block material. * * @return team head block material. */ @@ -131,22 +121,12 @@ public enum TeamKind { } /** - * Get a single item of this team's wool head block. Creates a single block - * with data from {@link #getBlockData()}. + * Get a single item of this team's wool head block. * * @return single block head item. */ public ItemStack getBlockHead() { - return new Wool(this.dyeColor).toItemStack(1); - } - - /** - * Get wool head block data (for creating blocks). - * - * @return wool head block data. - */ - public MaterialData getBlockData() { - return new Wool(this.dyeColor); + return new ItemStack(this.material, 1); } /** @@ -156,11 +136,7 @@ public enum TeamKind { * @return true if block is this team's color. */ public boolean isTeamBlock(BlockState block) { - if (block.getType() != Material.WOOL || !(block.getData() instanceof Wool)) { - return false; - } - Wool wool = (Wool) block.getData(); - return wool.getColor() == dyeColor; + return block.getType() == material; } /** @@ -170,21 +146,7 @@ public enum TeamKind { * @return true if item is this team's color. */ public boolean isTeamItem(ItemStack item) { - if (item.getType() != Material.WOOL || !(item.getData() instanceof Wool)) { - return false; - } - Wool wool = (Wool) item.getData(); - return wool.getColor() == dyeColor; - } - - /** - * Check if a block data is this team's block data. - * - * @param data Wool block data. - * @return true if data is this team's data. - */ - public boolean isTeamBlock(MaterialData data) { - return data instanceof Wool && ((Wool)data).getColor() == this.dyeColor; + return item.getType() == material; } public String getFormattedName() { diff --git a/war/src/main/java/com/tommytony/war/event/WarBlockListener.java b/war/src/main/java/com/tommytony/war/event/WarBlockListener.java index c5c63f2..bc07dd7 100644 --- a/war/src/main/java/com/tommytony/war/event/WarBlockListener.java +++ b/war/src/main/java/com/tommytony/war/event/WarBlockListener.java @@ -1,30 +1,5 @@ package com.tommytony.war.event; -import java.util.List; -import java.util.ArrayList; - -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockDamageEvent; -import org.bukkit.event.block.BlockPistonExtendEvent; -import org.bukkit.event.block.BlockPistonRetractEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.world.StructureGrowEvent; -import org.bukkit.inventory.EquipmentSlot; -import org.bukkit.inventory.ItemStack; -import org.getspout.spoutapi.SpoutManager; -import org.getspout.spoutapi.player.SpoutPlayer; - import com.tommytony.war.Team; import com.tommytony.war.War; import com.tommytony.war.Warzone; @@ -35,6 +10,26 @@ import com.tommytony.war.spout.SpoutDisplayer; import com.tommytony.war.structure.Bomb; import com.tommytony.war.structure.Cake; import com.tommytony.war.structure.Monument; +import com.tommytony.war.utility.Compat; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockState; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.*; +import org.bukkit.event.world.StructureGrowEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.getspout.spoutapi.SpoutManager; +import org.getspout.spoutapi.player.SpoutPlayer; + +import java.util.ArrayList; +import java.util.List; /** * @@ -58,9 +53,7 @@ public class WarBlockListener implements Listener { Team team = Team.getTeamByPlayerName(player.getName()); Warzone zone = Warzone.getZoneByLocation(player); // Monument capturing - if (team != null && block != null && zone != null - && zone.isMonumentCenterBlock(block) - && team.getKind().isTeamBlock(block.getState())) { + if (team != null && zone != null && zone.isMonumentCenterBlock(block) && team.getKind().isTeamBlock(block.getState())) { Monument monument = zone.getMonumentFromCenterBlock(block); if (monument != null && !monument.hasOwner()) { monument.capture(team); @@ -89,9 +82,7 @@ public class WarBlockListener implements Listener { boolean isZoneMaker = War.war.isZoneMaker(player); // prevent build in important parts - if (zone != null - && (zone.isImportantBlock(block) || zone.isOpponentSpawnPeripheryBlock(team, block)) - && (!isZoneMaker || (isZoneMaker && team != null))) { + if (zone != null && (zone.isImportantBlock(block) || zone.isOpponentSpawnPeripheryBlock(team, block)) && (!isZoneMaker || team != null)) { War.war.badMsg(player, "build.denied.location"); cancelAndKeepItem(event); return; @@ -123,7 +114,7 @@ public class WarBlockListener implements Listener { } // can't place a block of your team's color - if (team != null && block.getType() == team.getKind().getMaterial() && block.getState().getData() == team.getKind().getBlockData()) { + if (team != null && block.getType() == team.getKind().getMaterial()) { War.war.badMsg(player, "build.denied.teamblock"); cancelAndKeepItem(event); return; @@ -151,9 +142,7 @@ public class WarBlockListener implements Listener { } // unbreakableZoneBlocks - if (zone != null && (zone.getWarzoneConfig().getBoolean(WarzoneConfig.UNBREAKABLE) - || (team != null && !team.getTeamConfig().resolveBoolean(TeamConfig.PLACEBLOCK))) - && (!isZoneMaker || (isZoneMaker && team != null))) { + if (zone != null && (zone.getWarzoneConfig().getBoolean(WarzoneConfig.UNBREAKABLE) || team != null && !team.getTeamConfig().resolveBoolean(TeamConfig.PLACEBLOCK)) && (!isZoneMaker || team != null)) { // if the zone is unbreakable, no one but zone makers can break blocks (even then, zone makers in a team can't break blocks) War.war.badMsg(player, "build.denied.zone.place"); cancelAndKeepItem(event); @@ -175,7 +164,7 @@ public class WarBlockListener implements Listener { if (inHand.getType() == Material.FIRE) { // Weird bukkit/mc behavior where item in hand is reported as fire while using flint & steel. // Just give the user his f&s back but almost broken (max durability is 8). - newItemInHand = new ItemStack(Material.FLINT_AND_STEEL, 1, (short)1); + newItemInHand = Compat.createDamagedIS(Material.FLINT_AND_STEEL, 1, 1); } else { newItemInHand = inHand.clone(); } diff --git a/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java b/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java index 213237a..3f08daf 100644 --- a/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java +++ b/war/src/main/java/com/tommytony/war/event/WarPlayerListener.java @@ -20,6 +20,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; +import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.*; @@ -159,7 +160,7 @@ public class WarPlayerListener implements Listener { if (War.war.isWandBearer(player)) { Item item = event.getItemDrop(); - if (item.getItemStack().getType() == Material.WOOD_SWORD) { + if (item.getItemStack().getType() == Material.WOODEN_SWORD) { String zoneName = War.war.getWandBearerZone(player); War.war.removeWandBearer(player); War.war.msg(player, "drop.wand", zoneName); @@ -170,12 +171,15 @@ public class WarPlayerListener implements Listener { private static final int MINIMUM_TEAM_BLOCKS = 1; @EventHandler - public void onPlayerPickupItem(final PlayerPickupItemEvent event) { + public void onPlayerPickupItem(final EntityPickupItemEvent event) { if (War.war.isLoaded()) { - Player player = event.getPlayer(); + if (!(event.getEntity() instanceof Player)) { + return; + } + Player player = (Player) event.getEntity(); Team team = Team.getTeamByPlayerName(player.getName()); if (team != null) { - Warzone zone = Warzone.getZoneByPlayerName(player.getName()); + Warzone zone = team.getZone(); if (zone.isFlagThief(player)) { // a flag thief can't pick up anything @@ -238,7 +242,7 @@ public class WarPlayerListener implements Listener { public void onPlayerInteract(PlayerInteractEvent event) { if (War.war.isLoaded()) { Player player = event.getPlayer(); - if (event.getItem() != null && event.getItem().getType() == Material.WOOD_SWORD && War.war.isWandBearer(player)) { + if (event.getItem() != null && event.getItem().getType() == Material.WOODEN_SWORD && War.war.isWandBearer(player)) { String zoneName = War.war.getWandBearerZone(player); ZoneSetter setter = new ZoneSetter(player, zoneName); if (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_AIR) { @@ -269,7 +273,7 @@ public class WarPlayerListener implements Listener { War.war.badMsg(player, "use.ender"); } Team team = Team.getTeamByPlayerName(player.getName()); - if (zone != null && team != null && event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.ENCHANTMENT_TABLE && team.getTeamConfig().resolveBoolean(TeamConfig.XPKILLMETER)) { + if (zone != null && team != null && event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.ENCHANTING_TABLE && team.getTeamConfig().resolveBoolean(TeamConfig.XPKILLMETER)) { event.setCancelled(true); War.war.badMsg(player, "use.enchant"); if (zone.getAuthors().contains(player.getName())) { @@ -305,7 +309,7 @@ public class WarPlayerListener implements Listener { Warzone zone = Warzone.getZoneByPlayerName(player.getName()); if (zone != null && zone.getWarzoneConfig().getBoolean(WarzoneConfig.SOUPHEALING)) { ItemStack item = event.getItem(); - if ((item != null) && (item.getType() == Material.MUSHROOM_SOUP)) { + if ((item != null) && (item.getType() == Material.MUSHROOM_STEW)) { if (player.getHealth() < 20) { player.setHealth(Math.min(20, player.getHealth() + 7)); item.setType(Material.BOWL); @@ -340,7 +344,7 @@ public class WarPlayerListener implements Listener { latestLocations.put(player.getName(), playerLoc); // Signs can automatically teleport you to specific or random warzones - if (playerLoc.getBlock().getType() == Material.SIGN_POST) { + if (playerLoc.getBlock().getType() == Material.SIGN) { Sign sign = (Sign) playerLoc.getBlock().getState(); if (sign.getLine(0).equals("[zone]")) { Warzone indicated = Warzone.getZoneByName(sign.getLine(1)); diff --git a/war/src/main/java/com/tommytony/war/job/HelmetProtectionTask.java b/war/src/main/java/com/tommytony/war/job/HelmetProtectionTask.java index 160c4ee..8da559d 100644 --- a/war/src/main/java/com/tommytony/war/job/HelmetProtectionTask.java +++ b/war/src/main/java/com/tommytony/war/job/HelmetProtectionTask.java @@ -44,7 +44,7 @@ public class HelmetProtectionTask implements Runnable { int removed = 0; for (ItemStack item : playerInv.getContents()) { // remove only same colored wool - if (item != null && item.getType() == teamBlockMaterial && item.getData() == team.getKind().getBlockData()) { + if (item != null && item.getType() == teamBlockMaterial) { playerInv.clear(i); removed++; } @@ -68,7 +68,7 @@ public class HelmetProtectionTask implements Runnable { player.getInventory().setItemInMainHand(null); player.getInventory().setItemInOffHand(null); player.getInventory().setHeldItemSlot(0); - player.getInventory().addItem(victim.getKind().getBlockData().toItemStack(2240)); + player.getInventory().addItem(new ItemStack(victim.getKind().getMaterial(), 2240)); } else if (zone.isBombThief(player)) { player.getInventory().setItemInMainHand(null); player.getInventory().setItemInOffHand(null); @@ -78,7 +78,7 @@ public class HelmetProtectionTask implements Runnable { player.getInventory().setItemInMainHand(null); player.getInventory().setItemInOffHand(null); player.getInventory().setHeldItemSlot(0); - player.getInventory().addItem(new ItemStack(Material.CAKE_BLOCK, 2240)); + player.getInventory().addItem(new ItemStack(Material.CAKE, 2240)); } } } diff --git a/war/src/main/java/com/tommytony/war/job/RestoreWarzonesJob.java b/war/src/main/java/com/tommytony/war/job/RestoreWarzonesJob.java deleted file mode 100644 index a901b23..0000000 --- a/war/src/main/java/com/tommytony/war/job/RestoreWarzonesJob.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.tommytony.war.job; - -import java.sql.SQLException; -import java.util.logging.Level; - -import com.tommytony.war.War; -import com.tommytony.war.Warzone; -import com.tommytony.war.config.WarzoneConfig; -import com.tommytony.war.mapper.WarYmlMapper; -import com.tommytony.war.mapper.WarzoneTxtMapper; -import com.tommytony.war.mapper.WarzoneYmlMapper; - -public class RestoreWarzonesJob implements Runnable { - - private final String warzonesStr; - private final boolean newWarInstall; - private final boolean convertingToYml; - - public RestoreWarzonesJob(String warzonesStr, boolean newWarInstall, boolean convertingToYml) { - this.warzonesStr = warzonesStr; - this.newWarInstall = newWarInstall; - this.convertingToYml = convertingToYml; - } - - public void run() { - String[] warzoneSplit = this.warzonesStr.split(","); - War.war.getWarzones().clear(); - - for (String warzoneName : warzoneSplit) { - if (warzoneName != null && !warzoneName.equals("")) { - War.war.log("Loading zone " + warzoneName + "...", Level.INFO); - Warzone zone = WarzoneTxtMapper.load(warzoneName, !this.newWarInstall); - if (zone != null) { // could have failed, would've been logged already - War.war.getWarzones().add(zone); - try { - zone.getVolume().loadCorners(); - } catch (SQLException ex) { - War.war.log("Failed to load warzone " + warzoneName + ": " + ex.getMessage(), Level.WARNING); - throw new RuntimeException(ex); - } - - if (zone.getLobby() != null) { - zone.getLobby().getVolume().resetBlocks(); - } - if (zone.getWarzoneConfig().getBoolean(WarzoneConfig.RESETONLOAD)) { - zone.getVolume().resetBlocks(); - } - zone.initializeZone(); - } - } - } - - if (War.war.getWarzones().size() > 0) { - War.war.log("Warzones ready.", Level.INFO); - } - - if (convertingToYml) { - // Loading process is over, we can convert (i.e. save in new format) - WarYmlMapper.save(); - War.war.log("Converted war.txt to war.yml.", Level.INFO); - - for (Warzone zone : War.war.getWarzones()) { - WarzoneYmlMapper.save(zone); - War.war.log("Converted warzone-" + zone.getName() + ".txt to warzone-" + zone.getName() + ".yml.", Level.INFO); - } - } - } - -} diff --git a/war/src/main/java/com/tommytony/war/job/RestoreYmlWarhubJob.java b/war/src/main/java/com/tommytony/war/job/RestoreYmlWarhubJob.java index bce46e8..18f5b6c 100644 --- a/war/src/main/java/com/tommytony/war/job/RestoreYmlWarhubJob.java +++ b/war/src/main/java/com/tommytony/war/job/RestoreYmlWarhubJob.java @@ -22,7 +22,6 @@ public class RestoreYmlWarhubJob implements Runnable { this.warhubConfig = warhubConfig; } - @SuppressWarnings("deprecation") public void run() { int hubX = warhubConfig.getInt("x"); int hubY = warhubConfig.getInt("y"); @@ -35,50 +34,18 @@ public class RestoreYmlWarhubJob implements Runnable { if (warhubConfig.isItemStack("materials.floor")) { War.war.getWarhubMaterials().setFloorBlock( warhubConfig.getItemStack("materials.floor")); - } else { - ConfigurationSection floorMaterialSection = warhubConfig - .getConfigurationSection("materials.floor"); - if (floorMaterialSection != null) { - War.war.getWarhubMaterials().setFloorBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warhubConfig.isItemStack("materials.outline")) { War.war.getWarhubMaterials().setOutlineBlock( warhubConfig.getItemStack("materials.outline")); - } else { - ConfigurationSection floorMaterialSection = warhubConfig - .getConfigurationSection("materials.outline"); - if (floorMaterialSection != null) { - War.war.getWarhubMaterials().setOutlineBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warhubConfig.isItemStack("materials.gate")) { War.war.getWarhubMaterials().setGateBlock( warhubConfig.getItemStack("materials.gate")); - } else { - ConfigurationSection floorMaterialSection = warhubConfig - .getConfigurationSection("materials.gate"); - if (floorMaterialSection != null) { - War.war.getWarhubMaterials().setGateBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warhubConfig.isItemStack("materials.light")) { War.war.getWarhubMaterials().setLightBlock( warhubConfig.getItemStack("materials.light")); - } else { - ConfigurationSection floorMaterialSection = warhubConfig - .getConfigurationSection("materials.light"); - if (floorMaterialSection != null) { - War.war.getWarhubMaterials().setLightBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } World world = War.war.getServer().getWorld(worldName); if (world != null) { diff --git a/war/src/main/java/com/tommytony/war/mapper/LoadoutTxtMapper.java b/war/src/main/java/com/tommytony/war/mapper/LoadoutTxtMapper.java deleted file mode 100644 index 14f8d46..0000000 --- a/war/src/main/java/com/tommytony/war/mapper/LoadoutTxtMapper.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.tommytony.war.mapper; - -import java.util.HashMap; - -import org.bukkit.enchantments.Enchantment; -import org.bukkit.inventory.ItemStack; - -import com.tommytony.war.War; - -@SuppressWarnings("deprecation") -public class LoadoutTxtMapper { - - public static void fromStringToLoadout(String loadoutString, HashMap destinationLoadout) { - String[] rewardStrSplit = loadoutString.split(";"); - destinationLoadout.clear(); - for (String itemStr : rewardStrSplit) { - if (itemStr != null && !itemStr.equals("")) { - String[] itemStrSplit = itemStr.split(","); - ItemStack item = null; - if (itemStrSplit.length == 3) { - item = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1])); - } else if (itemStrSplit.length == 5) { - short durability = Short.parseShort(itemStrSplit[3]); - item = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1]), durability); - item.setDurability(durability); - } else if (itemStrSplit.length == 6) { - short durability = Short.parseShort(itemStrSplit[3]); - item = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1]), durability); - item.setDurability(durability); - - // enchantments - String[] enchantmentsSplit = itemStrSplit[5].split("::"); - for (String enchantmentStr : enchantmentsSplit) { - if (!enchantmentStr.equals("")) { - String[] enchantmentSplit = enchantmentStr.split(":"); - int enchantId = Integer.parseInt(enchantmentSplit[0]); - int level = Integer.parseInt(enchantmentSplit[1]); - War.war.safelyEnchant(item, Enchantment.getById(enchantId), level); - } - } - } - destinationLoadout.put(Integer.parseInt(itemStrSplit[2]), item); - } - } - } -} diff --git a/war/src/main/java/com/tommytony/war/mapper/LoadoutYmlMapper.java b/war/src/main/java/com/tommytony/war/mapper/LoadoutYmlMapper.java index 6f4983d..8ba922d 100644 --- a/war/src/main/java/com/tommytony/war/mapper/LoadoutYmlMapper.java +++ b/war/src/main/java/com/tommytony/war/mapper/LoadoutYmlMapper.java @@ -50,66 +50,16 @@ public class LoadoutYmlMapper { * @param loadoutName The name of the loadout * @return new style loadout */ - @SuppressWarnings("deprecation") public static Loadout fromConfigToLoadout(ConfigurationSection config, HashMap loadout, String loadoutName) { List slots = config.getIntegerList(loadoutName + ".slots"); for (Integer slot : slots) { if (config.isItemStack(loadoutName + "." + Integer.toString(slot))) { loadout.put(slot, config.getItemStack(loadoutName + "." + Integer.toString(slot))); - continue; } - String prefix = loadoutName + "." + slot + "."; - int id = config.getInt(prefix + "id"); - int amount = config.getInt(prefix + "amount"); - short durability = (short)config.getInt(prefix + "durability"); - - ItemStack stack = new ItemStack(id, amount, durability); - stack.setDurability(durability); - - if (config.contains(prefix + "enchantments")) { - List enchantmentStringList = config.getStringList(prefix + "enchantments"); - for (String enchantmentString : enchantmentStringList) { - String[] enchantmentStringSplit = enchantmentString.split(","); - if (enchantmentStringSplit.length == 2) { - int enchantId = Integer.parseInt(enchantmentStringSplit[0]); - int level = Integer.parseInt(enchantmentStringSplit[1]); - War.war.safelyEnchant(stack, Enchantment.getById(enchantId), level); - } - } - } - if (config.contains(prefix + "armorcolor")) { - int rgb = config.getInt(prefix + "armorcolor"); - Color clr = Color.fromRGB(rgb); - LeatherArmorMeta meta = (LeatherArmorMeta) stack.getItemMeta(); - meta.setColor(clr); - stack.setItemMeta(meta); - } - if (config.contains(prefix + "name")) { - String itemName = config.getString(prefix + "name"); - ItemMeta meta = stack.getItemMeta(); - meta.setDisplayName(itemName); - stack.setItemMeta(meta); - } - if (config.contains(prefix + "lore")) { - List itemLore = config.getStringList(prefix + "lore"); - ItemMeta meta = stack.getItemMeta(); - meta.setLore(itemLore); - stack.setItemMeta(meta); - } - loadout.put(slot, stack); } String permission = config.getString(loadoutName + ".permission", ""); return new Loadout(loadoutName, loadout, permission); } - - public static void fromLoadoutsToConfig(HashMap> loadouts, ConfigurationSection section) { - List sortedNames = sortNames(loadouts); - - section.set("names", sortedNames); - for (String name : sortedNames) { - fromLoadoutToConfig(name, loadouts.get(name), section); - } - } /** * Serializes a list of new style loadouts to the configuration. @@ -144,11 +94,7 @@ public class LoadoutYmlMapper { } private static List toIntList(Set keySet) { - List list = new ArrayList(); - for (Integer key : keySet) { - list.add(key); - } - return list; + return new ArrayList(keySet); } /** diff --git a/war/src/main/java/com/tommytony/war/mapper/PreDeGaulleZoneVolumeMapper.java b/war/src/main/java/com/tommytony/war/mapper/PreDeGaulleZoneVolumeMapper.java deleted file mode 100644 index d229424..0000000 --- a/war/src/main/java/com/tommytony/war/mapper/PreDeGaulleZoneVolumeMapper.java +++ /dev/null @@ -1,282 +0,0 @@ -package com.tommytony.war.mapper; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Level; - -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Chest; -import org.bukkit.block.Dispenser; -import org.bukkit.block.Sign; -import org.bukkit.inventory.ItemStack; -import org.bukkit.material.MaterialData; - -import com.tommytony.war.War; -import com.tommytony.war.job.DeferredBlockResetsJob; -import com.tommytony.war.utility.DeferredBlockReset; -import com.tommytony.war.volume.ZoneVolume; - -/** - * The ZoneVolumeMapper take the blocks from disk and sets them in the worlds, since the ZoneVolume doesn't hold its blocks in memory like regular Volumes. - * - * @author tommytony - * - */ -@SuppressWarnings("deprecation") -public class PreDeGaulleZoneVolumeMapper { - - private static List readInventoryString(String invString) { - List items = new ArrayList(); - String[] itemsStrSplit = invString.split(";;"); - for (String itemStr : itemsStrSplit) { - String[] itemStrSplit = itemStr.split(";"); - if (itemStrSplit.length == 4) { - ItemStack stack = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1])); - stack.setData(new MaterialData(stack.getTypeId(), Byte.parseByte(itemStrSplit[3]))); - short durability = (short) Integer.parseInt(itemStrSplit[2]); - stack.setDurability(durability); - items.add(stack); - } else if (itemStrSplit.length == 3) { - ItemStack stack = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1])); - short durability = (short) Integer.parseInt(itemStrSplit[2]); - stack.setDurability(durability); - items.add(stack); - } else { - items.add(new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1]))); - } - } - return items; - } - - public static int load(ZoneVolume volume, String zoneName, World world, boolean onlyLoadCorners) { - BufferedReader in = null; - int noOfResetBlocks = 0; - try { - in = new BufferedReader(new FileReader(new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName() + ".dat"))); - String firstLine = in.readLine(); - - if (firstLine != null && !firstLine.equals("")) { - boolean height129Fix = false; - int x1 = Integer.parseInt(in.readLine()); - int y1 = Integer.parseInt(in.readLine()); - if (y1 == 128) { - height129Fix = true; - y1 = 127; - } - int z1 = Integer.parseInt(in.readLine()); - in.readLine(); - int x2 = Integer.parseInt(in.readLine()); - int y2 = Integer.parseInt(in.readLine()); - if (y2 == 128) { - height129Fix = true; - y2 = 127; - } - int z2 = Integer.parseInt(in.readLine()); - - volume.setCornerOne(world.getBlockAt(x1, y1, z1)); - volume.setCornerTwo(world.getBlockAt(x2, y2, z2)); - - if (!onlyLoadCorners) { - DeferredBlockResetsJob deferred = new DeferredBlockResetsJob(world); - int blockReads = 0, visitedBlocks = 0, x = 0, y = 0, z = 0, i = 0, j = 0, k = 0; - int diskBlockType; - byte diskBlockData; - Block worldBlock; - int worldBlockId; - volume.clearBlocksThatDontFloat(); - x = volume.getMinX(); - String blockLine; - String[] blockSplit; - for (i = 0; i < volume.getSizeX(); i++) { - y = volume.getMinY(); - for (j = 0; j < volume.getSizeY(); j++) { - z = volume.getMinZ(); - for (k = 0; k < volume.getSizeZ(); k++) { - try { - blockLine = in.readLine(); - - if (blockLine != null && !blockLine.equals("")) { - blockSplit = blockLine.split(","); - if (blockLine != null && !blockLine.equals("") && blockSplit.length > 1) { - diskBlockType = Integer.parseInt(blockSplit[0]); - diskBlockData = Byte.parseByte(blockSplit[1]); - worldBlock = volume.getWorld().getBlockAt(x, y, z); - worldBlockId = worldBlock.getTypeId(); - if (worldBlockId != diskBlockType || (worldBlockId == diskBlockType && worldBlock.getData() != diskBlockData) || (worldBlockId == diskBlockType && worldBlock.getData() == diskBlockData && (diskBlockType == Material.WALL_SIGN.getId() || diskBlockType == Material.SIGN_POST.getId() || diskBlockType == Material.CHEST.getId() || diskBlockType == Material.DISPENSER.getId()))) { - if (diskBlockType == Material.WALL_SIGN.getId() || diskBlockType == Material.SIGN_POST.getId()) { - // Signs read - String linesStr = ""; - if (blockSplit.length > 2) { - for (int o = 2; o < blockSplit.length; o++) { - linesStr += blockSplit[o]; - } - String[] lines = linesStr.split(";;"); - - // Signs set - // A sign post hanging on a wall south of here will - if (diskBlockType == Material.SIGN_POST.getId() && ((diskBlockData & 0x04) == 0x04) && i + 1 != volume.getSizeX()) { - deferred.add(new DeferredBlockReset(x, y, z, diskBlockType, diskBlockData, lines)); - } else { - worldBlock.setType(Material.getMaterial(diskBlockType)); - BlockState state = worldBlock.getState(); - state.setData(new org.bukkit.material.Sign(diskBlockType, diskBlockData)); - if (state instanceof Sign) { - Sign sign = (Sign) state; - if (lines != null && sign.getLines() != null) { - if (lines.length > 0) { - sign.setLine(0, lines[0]); - } - if (lines.length > 1) { - sign.setLine(1, lines[1]); - } - if (lines.length > 2) { - sign.setLine(2, lines[2]); - } - if (lines.length > 3) { - sign.setLine(3, lines[3]); - } - sign.update(true); - } - } - } - } - } else if (diskBlockType == Material.CHEST.getId()) { - // Chests read - List items = null; - if (blockSplit.length > 2) { - String itemsStr = blockSplit[2]; - items = PreDeGaulleZoneVolumeMapper.readInventoryString(itemsStr); - } - - // Chests set - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - BlockState state = worldBlock.getState(); - if (state instanceof Chest) { - Chest chest = (Chest) state; - if (items != null) { - int ii = 0; - chest.getInventory().clear(); - for (ItemStack item : items) { - if (item != null) { - chest.getInventory().setItem(ii, item); - ii++; - } - } - chest.update(true); - } - } - } else if (diskBlockType == Material.DISPENSER.getId()) { - // Dispensers read - List items = null; - if (blockSplit.length > 2) { - String itemsStr = blockSplit[2]; - // String itemsStr = lineScanner.nextLine(); - items = PreDeGaulleZoneVolumeMapper.readInventoryString(itemsStr); - } - - // Dispensers set - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - BlockState state = worldBlock.getState(); - if (state instanceof Dispenser) { - Dispenser dispenser = (Dispenser) state; - if (items != null) { - int ii = 0; - dispenser.getInventory().clear(); - for (ItemStack item : items) { - if (item != null) { - dispenser.getInventory().setItem(ii, item); - ii++; - } - } - dispenser.update(true); - } - } - } else if (diskBlockType == Material.WOODEN_DOOR.getId() || diskBlockType == Material.IRON_DOOR_BLOCK.getId()) { - // Door blocks - - if (j - 1 > 0) { - Block blockBelow = world.getBlockAt(x, y - 1, z); - boolean belowIsGlass = blockBelow.getTypeId() == Material.GLASS.getId(); - // Set current block to glass if block below isn't glass. - // Having a glass block below means the current block is a door top. - if (belowIsGlass) { - // Top door block. Set both it and the block below as door. - blockBelow.setType(Material.getMaterial(diskBlockType)); - blockBelow.setData(diskBlockData); - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - } else { - worldBlock.setType(Material.GLASS); - } - } - - } else if (((diskBlockType == Material.TORCH.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.REDSTONE_TORCH_OFF.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.REDSTONE_TORCH_ON.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.LEVER.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.STONE_BUTTON.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.LADDER.getId() && ((diskBlockData & 0x04) == 0x04)) || (diskBlockType == Material.RAILS.getId() && ((diskBlockData & 0x02) == 0x02))) && i + 1 != volume.getSizeX()) { - // Blocks that hang on a block south of themselves need to make sure that block is there before placing themselves... lol - // Change the block itself later on: - deferred.add(new DeferredBlockReset(x, y, z, diskBlockType, diskBlockData)); - } else { - // regular block - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - } - noOfResetBlocks++; - } - visitedBlocks++; - } - blockReads++; - } - - } catch (Exception e) { - War.war.getLogger().warning("Failed to reset block in zone volume " + volume.getName() + ". " + "Blocks read: " + blockReads + ". Visited blocks so far:" + visitedBlocks + ". Blocks reset: " + noOfResetBlocks + ". Error at x:" + x + " y:" + y + " z:" + z + ". Exception:" + e.getClass().toString() + " " + e.getMessage()); - e.printStackTrace(); - } finally { - z++; - } - } - if (height129Fix && j == volume.getSizeY() - 1) { - for (int skip = 0; skip < volume.getSizeZ(); skip++) { - in.readLine(); // throw away the extra vertical block I used to save pre 0.8 - // scanner.nextLine(); - } - } - y++; - } - x++; - } - if (!deferred.isEmpty()) { - War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, deferred, 1); - } - } - } - } catch (IOException e) { - War.war.log("Failed to read volume file " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } catch (Exception e) { - War.war.log("Unexpected error caused failure to read volume file " + zoneName + " for warzone " + volume.getName() + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } finally { - if (in != null) { - // if (scanner != null) - try { - in.close(); - in = null; - // scanner.close(); - // scanner = null; - } catch (IOException e) { - War.war.log("Failed to close file reader for volume " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } - } - } - return noOfResetBlocks; - } -} diff --git a/war/src/main/java/com/tommytony/war/mapper/PreNimitzZoneVolumeMapper.java b/war/src/main/java/com/tommytony/war/mapper/PreNimitzZoneVolumeMapper.java deleted file mode 100644 index 707380a..0000000 --- a/war/src/main/java/com/tommytony/war/mapper/PreNimitzZoneVolumeMapper.java +++ /dev/null @@ -1,459 +0,0 @@ -package com.tommytony.war.mapper; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.List; -import java.util.logging.Level; - -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.block.Block; -import org.bukkit.block.BlockState; -import org.bukkit.block.Chest; -import org.bukkit.block.Dispenser; -import org.bukkit.block.Sign; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - - -import com.tommytony.war.War; -import com.tommytony.war.job.DeferredBlockResetsJob; -import com.tommytony.war.job.ZoneVolumeSaveJob; -import com.tommytony.war.utility.DeferredBlockReset; -import com.tommytony.war.volume.Volume; -import com.tommytony.war.volume.ZoneVolume; - -/** - * The ZoneVolumeMapper take the blocks from disk and sets them in the worlds, since the ZoneVolume doesn't hold its blocks in memory like regular Volumes. - * - * @author tommytony, Tim Düsterhus - * @package com.tommytony.war.mappers - */ -@SuppressWarnings("deprecation") -public class PreNimitzZoneVolumeMapper { - - /** - * Loads the given volume - * - * @param ZoneVolume - * volume Volume to load - * @param String - * zoneName Zone to load the volume from - * @param World - * world The world the zone is located - * @param boolean onlyLoadCorners Should only the corners be loaded - * @return integer Changed blocks - */ - public static int load(ZoneVolume volume, String zoneName, World world, boolean onlyLoadCorners) { - File cornersFile = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName() + ".corners"); - File blocksFile = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName() + ".blocks"); - File signsFile = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName() + ".signs"); - File invsFile = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName() + ".invs"); - int noOfResetBlocks = 0; - boolean failed = false; - if (!blocksFile.exists()) { - // The post 1.6 formatted files haven't been created yet so - // we need to use the old load. - noOfResetBlocks = PreDeGaulleZoneVolumeMapper.load(volume, zoneName, world, onlyLoadCorners); - - // The new 1.6 files aren't created yet. We just reset the zone (except deferred blocks which will soon execute on main thread ), - // so let's save to the new format as soon as the zone is fully reset. - PreNimitzZoneVolumeMapper.saveAsJob(volume, zoneName, 2); - War.war.log("Warzone " + zoneName + " file converted!", Level.INFO); - - return noOfResetBlocks; - } else { - // 1.6 file exist, so go ahead with reset - BufferedReader cornersReader = null; - FileInputStream blocksStream = null; - BufferedReader signsReader = null; - BufferedReader invsReader = null; - try { - cornersReader = new BufferedReader(new FileReader(cornersFile)); - blocksStream = new FileInputStream(blocksFile); - signsReader = new BufferedReader(new FileReader(signsFile)); - invsReader = new BufferedReader(new FileReader(invsFile)); - - // Get the corners - cornersReader.readLine(); - int x1 = Integer.parseInt(cornersReader.readLine()); - int y1 = Integer.parseInt(cornersReader.readLine()); - int z1 = Integer.parseInt(cornersReader.readLine()); - cornersReader.readLine(); - int x2 = Integer.parseInt(cornersReader.readLine()); - int y2 = Integer.parseInt(cornersReader.readLine()); - int z2 = Integer.parseInt(cornersReader.readLine()); - - volume.setCornerOne(world.getBlockAt(x1, y1, z1)); - volume.setCornerTwo(world.getBlockAt(x2, y2, z2)); - - // Allocate block byte arrays - int noOfBlocks = volume.getSizeX() * volume.getSizeY() * volume.getSizeZ(); - byte[] blockBytes = new byte[noOfBlocks * 2]; // one byte for type, one for data - - blocksStream.read(blockBytes); // read it all - - // Now use the block bytes to reset the world blocks - if (!onlyLoadCorners) { - DeferredBlockResetsJob deferred = new DeferredBlockResetsJob(world); - int blockReads = 0, visitedBlocks = 0, x = 0, y = 0, z = 0, i = 0, j = 0, k = 0; - int diskBlockType; - byte diskBlockData; - Block worldBlock; - int worldBlockId; - volume.clearBlocksThatDontFloat(); - x = volume.getMinX(); - for (i = 0; i < volume.getSizeX(); i++) { - y = volume.getMinY(); - for (j = 0; j < volume.getSizeY(); j++) { - z = volume.getMinZ(); - for (k = 0; k < volume.getSizeZ(); k++) { - try { - diskBlockType = blockBytes[visitedBlocks * 2]; - diskBlockData = blockBytes[visitedBlocks * 2 + 1]; - - worldBlock = volume.getWorld().getBlockAt(x, y, z); - worldBlockId = worldBlock.getTypeId(); - if (worldBlockId != diskBlockType || (worldBlockId == diskBlockType && worldBlock.getData() != diskBlockData) || (worldBlockId == diskBlockType && worldBlock.getData() == diskBlockData && (diskBlockType == Material.WALL_SIGN.getId() || diskBlockType == Material.SIGN_POST.getId() || diskBlockType == Material.CHEST.getId() || diskBlockType == Material.DISPENSER.getId()))) { - if (diskBlockType == Material.WALL_SIGN.getId() || diskBlockType == Material.SIGN_POST.getId()) { - // Signs read - String linesStr = signsReader.readLine(); - String[] lines = linesStr.split(";;"); - - // Signs set - if (diskBlockType == Material.WALL_SIGN.getId() && ((diskBlockData & 0x04) == 0x04) && i + 1 != volume.getSizeX()) { - // A sign post hanging on a wall south of here needs that block to be set first - deferred.add(new DeferredBlockReset(x, y, z, diskBlockType, diskBlockData, lines)); - } else { - worldBlock.setType(Material.getMaterial(diskBlockType)); - BlockState state = worldBlock.getState(); - state.setData(new org.bukkit.material.Sign(diskBlockType, diskBlockData)); - if (state instanceof Sign) { - Sign sign = (Sign) state; - if (lines != null && sign.getLines() != null) { - if (lines.length > 0) { - sign.setLine(0, lines[0]); - } - if (lines.length > 1) { - sign.setLine(1, lines[1]); - } - if (lines.length > 2) { - sign.setLine(2, lines[2]); - } - if (lines.length > 3) { - sign.setLine(3, lines[3]); - } - sign.update(true); - } - } - } - } else if (diskBlockType == Material.CHEST.getId()) { - // Chests read - List items = VolumeMapper.readInventoryString(invsReader.readLine()); - - // Chests set - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - BlockState state = worldBlock.getState(); - if (state instanceof Chest) { - Chest chest = (Chest) state; - if (items != null) { - int ii = 0; - chest.getInventory().clear(); - for (ItemStack item : items) { - if (item != null) { - chest.getInventory().setItem(ii, item); - ii++; - } - } - chest.update(true); - } - } - } else if (diskBlockType == Material.DISPENSER.getId()) { - // Dispensers read - List items = VolumeMapper.readInventoryString(invsReader.readLine()); - - // Dispensers set - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - BlockState state = worldBlock.getState(); - if (state instanceof Dispenser) { - Dispenser dispenser = (Dispenser) state; - if (items != null) { - int ii = 0; - dispenser.getInventory().clear(); - for (ItemStack item : items) { - if (item != null) { - dispenser.getInventory().setItem(ii, item); - ii++; - } - } - dispenser.update(true); - } - } - } else if (diskBlockType == Material.WOODEN_DOOR.getId() || diskBlockType == Material.IRON_DOOR_BLOCK.getId()) { - // Door blocks - deferred.add(new DeferredBlockReset(x, y, z, diskBlockType, diskBlockData)); - } else if (((diskBlockType == Material.TORCH.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.REDSTONE_TORCH_OFF.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.REDSTONE_TORCH_ON.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.LEVER.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.STONE_BUTTON.getId() && ((diskBlockData & 0x02) == 0x02)) || (diskBlockType == Material.LADDER.getId() && ((diskBlockData & 0x04) == 0x04)) || (diskBlockType == Material.RAILS.getId() && ((diskBlockData & 0x02) == 0x02))) && i + 1 != volume.getSizeX()) { - // Blocks that hang on a block south of themselves need to make sure that block is there before placing themselves... lol - // Change the block itself later on: - deferred.add(new DeferredBlockReset(x, y, z, diskBlockType, diskBlockData)); - } else { - // regular block - if (diskBlockType >= 0) { - worldBlock.setType(Material.getMaterial(diskBlockType)); - worldBlock.setData(diskBlockData); - } else { - // The larger than 127 block types were stored as bytes, - // but now -128 to -1 are the result of the bad cast from byte - // to int array above. To make matters worse let's make this - // quick a dirty patch. Anyway everything will break horribly - // once block ids get higher than 255. - worldBlock.setType(Material.getMaterial(256 + diskBlockType)); - worldBlock.setData(diskBlockData); - } - } - noOfResetBlocks++; - } - visitedBlocks++; - - blockReads++; - - } catch (Exception e) { - if (!failed) { - // Don't spam the console - War.war.getLogger().warning("Failed to reset block in zone volume " + volume.getName() + ". " + "Blocks read: " + blockReads + ". Visited blocks so far:" + visitedBlocks + ". Blocks reset: " + noOfResetBlocks + ". Error at x:" + x + " y:" + y + " z:" + z + ". Exception:" + e.getClass().toString() + " " + e.getMessage()); - e.printStackTrace(); - failed = true; - } - } finally { - z++; - } - } - y++; - } - x++; - } - if (!deferred.isEmpty()) { - War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, deferred, 2); - } - } - } catch (FileNotFoundException e) { - War.war.log("Failed to find volume file " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } catch (IOException e) { - War.war.log("Failed to read volume file " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } finally { - try { - if (cornersReader != null) { - cornersReader.close(); - } - if (blocksStream != null) { - blocksStream.close(); - } - if (signsReader != null) { - signsReader.close(); - } - if (invsReader != null) { - invsReader.close(); - } - } catch (IOException e) { - War.war.log("Failed to close volume file " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } - } - return noOfResetBlocks; - } - } - - /** - * Saves the given volume - * - * @param Volume - * volume Volume to save - * @param String - * zoneName The warzone the volume is located - * @return integer Number of written blocks - */ - public static int save(Volume volume, String zoneName) { - int noOfSavedBlocks = 0; - if (volume.hasTwoCorners()) { - BufferedWriter cornersWriter = null; - FileOutputStream blocksOutput = null; - BufferedWriter signsWriter = null; - BufferedWriter invsWriter = null; - try { - (new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName)).mkdir(); - String path = War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName(); - cornersWriter = new BufferedWriter(new FileWriter(new File(path + ".corners"))); - blocksOutput = new FileOutputStream(new File(path + ".blocks")); - signsWriter = new BufferedWriter(new FileWriter(new File(path + ".signs"))); - invsWriter = new BufferedWriter(new FileWriter(new File(path + ".invs"))); - - cornersWriter.write("corner1"); - cornersWriter.newLine(); - cornersWriter.write(Integer.toString(volume.getCornerOne().getBlockX())); - cornersWriter.newLine(); - cornersWriter.write(Integer.toString(volume.getCornerOne().getBlockY())); - cornersWriter.newLine(); - cornersWriter.write(Integer.toString(volume.getCornerOne().getBlockZ())); - cornersWriter.newLine(); - cornersWriter.write("corner2"); - cornersWriter.newLine(); - cornersWriter.write(Integer.toString(volume.getCornerTwo().getBlockX())); - cornersWriter.newLine(); - cornersWriter.write(Integer.toString(volume.getCornerTwo().getBlockY())); - cornersWriter.newLine(); - cornersWriter.write(Integer.toString(volume.getCornerTwo().getBlockZ())); - cornersWriter.newLine(); - - int x = 0; - int y = 0; - int z = 0; - Block block; - int typeId; - byte data; - BlockState state; - - x = volume.getMinX(); - for (int i = 0; i < volume.getSizeX(); i++) { - y = volume.getMinY(); - for (int j = 0; j < volume.getSizeY(); j++) { - z = volume.getMinZ(); - for (int k = 0; k < volume.getSizeZ(); k++) { - try { - block = volume.getWorld().getBlockAt(x, y, z); - typeId = block.getTypeId(); - data = block.getData(); - state = block.getState(); - - blocksOutput.write((byte) typeId); - blocksOutput.write(data); - - if (state instanceof Sign) { - // Signs - String extra = ""; - Sign sign = (Sign) state; - if (sign.getLines() != null) { - for (String line : sign.getLines()) { - extra += line + ";;"; - } - signsWriter.write(extra); - signsWriter.newLine(); - } - } else if (state instanceof Chest) { - // Chests - Chest chest = (Chest) state; - Inventory inv = chest.getInventory(); - List items = VolumeMapper.getItemListFromInv(inv); - invsWriter.write(VolumeMapper.buildInventoryStringFromItemList(items)); - invsWriter.newLine(); - } else if (state instanceof Dispenser) { - // Dispensers - Dispenser dispenser = (Dispenser) state; - Inventory inv = dispenser.getInventory(); - List items = VolumeMapper.getItemListFromInv(inv); - invsWriter.write(VolumeMapper.buildInventoryStringFromItemList(items)); - invsWriter.newLine(); - } - noOfSavedBlocks++; - } catch (Exception e) { - War.war.log("Unexpected error while saving a block to " + " file for zone " + zoneName + ". Blocks saved so far: " + noOfSavedBlocks + "Position: x:" + x + " y:" + y + " z:" + z + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } finally { - z++; - } - } - y++; - } - x++; - } - } catch (IOException e) { - War.war.log("Failed to write volume file " + zoneName + " for warzone " + volume.getName() + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } catch (Exception e) { - War.war.log("Unexpected error caused failure to write volume file " + zoneName + " for warzone " + volume.getName() + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } finally { - try { - if (cornersWriter != null) { - cornersWriter.close(); - } - if (blocksOutput != null) { - blocksOutput.close(); - } - if (signsWriter != null) { - signsWriter.close(); - } - if (invsWriter != null) { - invsWriter.close(); - } - } catch (IOException e) { - War.war.log("Failed to close volume file " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } - } - } - return noOfSavedBlocks; - } - - - - /** - * Saves the Volume as a background-job - * - * @param ZoneVolme - * volume volume to save - * @param String - * zoneName The zone the volume is located - * @param War - * war Instance of war - * @param long tickDelay delay before beginning the task - */ - private static void saveAsJob(ZoneVolume volume, String zoneName, long tickDelay) { - ZoneVolumeSaveJob job = new ZoneVolumeSaveJob(volume, zoneName); - War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, job, tickDelay); - } - - /** - * Deletes the given volume - * - * @param Volume - * volume volume to delete - * @param War - * war Instance of war - */ - public static void delete(Volume volume) { - PreNimitzZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".dat"); - PreNimitzZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".corners"); - PreNimitzZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".blocks"); - PreNimitzZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".signs"); - PreNimitzZoneVolumeMapper.deleteFile(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".invs"); - } - - /** - * Deletes a volume file - * - * @param String - * path path of file - * @param War - * war Instance of war - */ - private static void deleteFile(String path) { - File volFile = new File(path); - if (volFile.exists()) { - boolean deletedData = volFile.delete(); - if (!deletedData) { - War.war.log("Failed to delete file " + volFile.getName(), Level.WARNING); - } - } - } -} diff --git a/war/src/main/java/com/tommytony/war/mapper/VolumeMapper.java b/war/src/main/java/com/tommytony/war/mapper/VolumeMapper.java index 52f4241..c1116c0 100644 --- a/war/src/main/java/com/tommytony/war/mapper/VolumeMapper.java +++ b/war/src/main/java/com/tommytony/war/mapper/VolumeMapper.java @@ -1,31 +1,17 @@ package com.tommytony.war.mapper; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Level; - +import com.tommytony.war.War; +import com.tommytony.war.volume.Volume; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.BlockState; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import org.bukkit.material.MaterialData; -import com.tommytony.war.War; -import com.tommytony.war.volume.Volume; +import java.io.File; +import java.sql.*; +import java.util.logging.Level; /** * @@ -49,9 +35,8 @@ public class VolumeMapper { volume.getName())); } if (!databaseFile.exists()) { - legacyLoad(volume, zoneName, world); - save(volume, zoneName); - War.war.getLogger().info("Volume " + volume.getName() + " for warzone " + zoneName + " converted to nimitz format!"); + // dropped nimitz compatibility with the MC 1.13 update + War.war.log("Volume " + volume.getName() + " for zone " + zoneName + " not found. Will not attempt converting legacy War version formats.", Level.WARNING); return; } Connection databaseConnection = DriverManager.getConnection("jdbc:sqlite:" + databaseFile.getPath()); @@ -93,87 +78,6 @@ public class VolumeMapper { databaseConnection.close(); } - @SuppressWarnings("deprecation") - public static void legacyLoad(Volume volume, String zoneName, World world) { - BufferedReader in = null; - try { - if (zoneName.equals("")) { - in = new BufferedReader(new FileReader(new File(War.war.getDataFolder().getPath() + "/dat/volume-" + volume.getName() + ".dat"))); // for the warhub - } else { - in = new BufferedReader(new FileReader(new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + zoneName + "/volume-" + volume.getName() + ".dat"))); - } - String firstLine = in.readLine(); - if (firstLine != null && !firstLine.equals("")) { - boolean height129Fix = false; - int x1 = Integer.parseInt(in.readLine()); - int y1 = Integer.parseInt(in.readLine()); - if (y1 == 128) { - height129Fix = true; - y1 = 127; - } - int z1 = Integer.parseInt(in.readLine()); - in.readLine(); - int x2 = Integer.parseInt(in.readLine()); - int y2 = Integer.parseInt(in.readLine()); - if (y2 == 128) { - height129Fix = true; - y2 = 127; - } - int z2 = Integer.parseInt(in.readLine()); - - volume.setCornerOne(world.getBlockAt(x1, y1, z1)); - volume.setCornerTwo(world.getBlockAt(x2, y2, z2)); - - int blockReads = 0; - for (int i = 0; i < volume.getSizeX(); i++) { - for (int j = 0; j < volume.getSizeY(); j++) { - for (int k = 0; k < volume.getSizeZ(); k++) { - try { - String blockLine = in.readLine(); - if (blockLine != null && !blockLine.equals("")) { - String[] blockSplit = blockLine.split(","); - if (blockLine != null && !blockLine.equals("") && blockSplit.length > 1) { - int typeID = Integer.parseInt(blockSplit[0]); - byte data = Byte.parseByte(blockSplit[1]); - - BlockState dummy = volume.getWorld().getBlockAt(x1 + i, y1 + j, z1 + k).getState(); - dummy.setTypeId(typeID); - dummy.setRawData(data); - volume.getBlocks().add(dummy); - } - blockReads++; - } - } catch (Exception e) { - War.war.log("Unexpected error while reading block from volume " + volume.getName() + " file for zone " + zoneName + ". Blocks read so far: " + blockReads + "Position: x:" + i + " y:" + j + " z:" + k + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } - } - if (height129Fix && j == volume.getSizeY() - 1) { - for (int skip = 0; skip < volume.getSizeZ(); skip++) { - in.readLine(); // throw away the extra vertical block I used to save pre 0.8 - } - } - } - } - } - } catch (IOException e) { - War.war.log("Failed to read volume file " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } catch (Exception e) { - War.war.log("Unexpected error caused failure to read volume file " + zoneName + " for warzone " + volume.getName() + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e) { - War.war.log("Failed to close file reader for volume " + volume.getName() + " for warzone " + zoneName + ". " + e.getClass().getName() + " " + e.getMessage(), Level.WARNING); - e.printStackTrace(); - } - } - } - } - public static final int DATABASE_VERSION = 1; public static void save(Volume volume, String zoneName) throws SQLException { File databaseFile = new File(War.war.getDataFolder(), String.format( @@ -225,105 +129,6 @@ public class VolumeMapper { dataStmt.close(); databaseConnection.close(); } - - /** - * Parses an inventory string - * - * @param String - * invString string to parse - * @return List Parsed items - */ - @Deprecated - public static List readInventoryString(String invString) { - List items = new ArrayList(); - if (invString != null && !invString.equals("")) { - String[] itemsStrSplit = invString.split(";;"); - for (String itemStr : itemsStrSplit) { - String[] itemStrSplit = itemStr.split(";"); - if (itemStrSplit.length == 5) { - ItemStack stack = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1])); - stack.setData(new MaterialData(stack.getTypeId(), Byte.parseByte(itemStrSplit[3]))); - short durability = (short) Integer.parseInt(itemStrSplit[2]); - stack.setDurability(durability); - - // enchantments - String[] enchantmentsSplit = itemStrSplit[4].split("::"); - for (String enchantmentStr : enchantmentsSplit) { - if (!enchantmentStr.equals("")) { - String[] enchantmentSplit = enchantmentStr.split(":"); - int enchantId = Integer.parseInt(enchantmentSplit[0]); - int level = Integer.parseInt(enchantmentSplit[1]); - War.war.safelyEnchant(stack, Enchantment.getById(enchantId), level); - } - } - - items.add(stack); - } else if (itemStrSplit.length == 4) { - ItemStack stack = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1])); - stack.setData(new MaterialData(stack.getTypeId(), Byte.parseByte(itemStrSplit[3]))); - short durability = (short) Integer.parseInt(itemStrSplit[2]); - stack.setDurability(durability); - items.add(stack); - } else if (itemStrSplit.length == 3) { - ItemStack stack = new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1])); - short durability = (short) Integer.parseInt(itemStrSplit[2]); - stack.setDurability(durability); - items.add(stack); - } else { - items.add(new ItemStack(Integer.parseInt(itemStrSplit[0]), Integer.parseInt(itemStrSplit[1]))); - } - } - } - return items; - } - - /** - * Create a string out of a list of items - * - * @param items The list of items - * @return The list as a string - */ - @Deprecated - public static String buildInventoryStringFromItemList(List items) { - String extra = ""; - for (ItemStack item : items) { - if (item != null) { - extra += item.getTypeId() + ";" + item.getAmount() + ";" + item.getDurability(); - if (item.getData() != null) { - extra += ";" + item.getData().getData(); - } - if (item.getEnchantments().keySet().size() > 0) { - String enchantmentsStr = ""; - for (Enchantment enchantment : item.getEnchantments().keySet()) { - enchantmentsStr += enchantment.getId() + ":" + item.getEnchantments().get(enchantment) + "::"; - } - extra += ";" + enchantmentsStr; - } - extra += ";;"; - } - } - - return extra; - } - - /** - * Extracts a list of items from and inventory - * - * @param inv The inventory - * @return The inventory as a list - */ - @Deprecated - public static List getItemListFromInv(Inventory inv) { - int size = inv.getSize(); - List items = new ArrayList(); - for (int invIndex = 0; invIndex < size; invIndex++) { - ItemStack item = inv.getItem(invIndex); - if (item != null && item.getType().getId() != Material.AIR.getId()) { - items.add(item); - } - } - return items; - } public static void delete(Volume volume) { File volFile = new File(War.war.getDataFolder(), String.format( diff --git a/war/src/main/java/com/tommytony/war/mapper/WarTxtMapper.java b/war/src/main/java/com/tommytony/war/mapper/WarTxtMapper.java deleted file mode 100644 index a87f85b..0000000 --- a/war/src/main/java/com/tommytony/war/mapper/WarTxtMapper.java +++ /dev/null @@ -1,459 +0,0 @@ -package com.tommytony.war.mapper; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.logging.Level; - -import org.bukkit.inventory.ItemStack; - - -import com.tommytony.war.War; -import com.tommytony.war.config.FlagReturn; -import com.tommytony.war.config.TeamConfig; -import com.tommytony.war.config.TeamSpawnStyle; -import com.tommytony.war.config.WarConfig; -import com.tommytony.war.config.WarzoneConfig; -import com.tommytony.war.job.RestoreWarhubJob; -import com.tommytony.war.job.RestoreWarzonesJob; - -/** - * - * @author tommytony - * - */ -public class WarTxtMapper { - - public static void load() { - load(false); - } - - public static void load(boolean convertingToYml) { - (War.war.getDataFolder()).mkdir(); - (new File(War.war.getDataFolder().getPath() + "/dat")).mkdir(); - PropertiesFile warConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/war.txt"); - try { - warConfig.load(); - } catch (IOException e) { - War.war.log("Failed to load war.txt file.", Level.WARNING); - e.printStackTrace(); - } - - // Create file if need be - boolean newWar = false; - if (!warConfig.containsKey("warzones")) { - newWar = true; - WarTxtMapper.save(); - War.war.log("war.txt settings file created.", Level.INFO); - try { - warConfig.load(); - } catch (IOException e) { - War.war.log("Failed to reload war.txt file after creating it.", Level.WARNING); - e.printStackTrace(); - } - } - - // warzones - String warzonesStr = warConfig.getString("warzones"); - RestoreWarzonesJob restoreWarzones = new RestoreWarzonesJob(warzonesStr, newWar, convertingToYml); - // make sure warhub job is over before this one ends, because this job will launch conversion (which needs the warhub) - if (War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, restoreWarzones, 20) == -1) { - War.war.log("Failed to schedule warzone-restore job. No warzone was loaded.", Level.WARNING); - } - - // zone makers - String[] makers = warConfig.getString("zoneMakers").split(","); - War.war.getZoneMakerNames().clear(); - for (String makerName : makers) { - if (makerName != null && !makerName.equals("")) { - War.war.getZoneMakerNames().add(makerName); - } - } - - // command whitelist - String[] whitelist = warConfig.getString("commandWhitelist").split(","); - War.war.getCommandWhitelist().clear(); - for (String command : whitelist) { - if (command != null && !command.equals("")) { - War.war.getCommandWhitelist().add(command); - } - } - - // defaultLoadout - War.war.getDefaultInventories().clearLoadouts(); - - String loadoutStr = warConfig.getString("defaultLoadout"); - if (loadoutStr != null && !loadoutStr.equals("")) { - War.war.getDefaultInventories().addLoadout("default", new HashMap()); - LoadoutTxtMapper.fromStringToLoadout(loadoutStr, War.war.getDefaultInventories().getLoadout("default")); - } - - // defaultExtraLoadouts - String extraLoadoutStr = warConfig.getString("defaultExtraLoadouts"); - String[] extraLoadoutsSplit = extraLoadoutStr.split(","); - - for (String nameStr : extraLoadoutsSplit) { - if (nameStr != null && !nameStr.equals("")) { - War.war.getDefaultInventories().addLoadout(nameStr, new HashMap()); - } - } - - for (String extraName : extraLoadoutsSplit) { - if (extraName != null && !extraName.equals("")) { - String loadoutString = warConfig.getString(extraName + "Loadout"); - HashMap loadout = War.war.getDefaultInventories().getLoadout(extraName); - LoadoutTxtMapper.fromStringToLoadout(loadoutString, loadout); - } - } - - // maxZones - if (warConfig.keyExists("maxZones")) { - War.war.getWarConfig().put(WarConfig.MAXZONES, warConfig.getInt("maxZones")); - } - - // defaultLifePool - if (warConfig.keyExists("defaultLifePool")) { - War.war.getTeamDefaultConfig().put(TeamConfig.LIFEPOOL, warConfig.getInt("defaultLifePool")); - } - - // defaultMonumentHeal - if (warConfig.keyExists("defaultMonumentHeal")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.MONUMENTHEAL, warConfig.getInt("defaultMonumentHeal")); - } - - // defaultFriendlyFire - if (warConfig.keyExists("defaultFriendlyFire")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.FRIENDLYFIRE, warConfig.getBoolean("defaultFriendlyFire")); - } - - // defaultAutoAssignOnly - if (warConfig.keyExists("defaultAutoAssignOnly")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.AUTOASSIGN, warConfig.getBoolean("defaultAutoAssignOnly")); - } - - // defaultFlagPointsOnly - if (warConfig.keyExists("defaultFlagPointsOnly")) { - War.war.getTeamDefaultConfig().put(TeamConfig.FLAGPOINTSONLY, warConfig.getBoolean("defaultFlagPointsOnly")); - } - - // defaultFlagMustBeHome - if (warConfig.keyExists("defaultFlagMustBeHome")) { - War.war.getTeamDefaultConfig().put(TeamConfig.FLAGMUSTBEHOME, warConfig.getBoolean("defaultFlagMustBeHome")); - } - - // defaultTeamCap - if (warConfig.keyExists("defaultTeamCap")) { - War.war.getTeamDefaultConfig().put(TeamConfig.TEAMSIZE, warConfig.getInt("defaultTeamCap")); - } - - // defaultScoreCap - if (warConfig.keyExists("defaultScoreCap")) { - War.war.getTeamDefaultConfig().put(TeamConfig.MAXSCORE, warConfig.getInt("defaultScoreCap")); - } - - // defaultRespawnTimer - if (warConfig.keyExists("defaultRespawnTimer")) { - War.war.getTeamDefaultConfig().put(TeamConfig.RESPAWNTIMER, warConfig.getInt("defaultRespawnTimer")); - } - - // pvpInZonesOnly - if (warConfig.keyExists("pvpInZonesOnly")) { - War.war.getWarConfig().put(WarConfig.PVPINZONESONLY, warConfig.getBoolean("pvpInZonesOnly")); - } - - // defaultBlockHeads - if (warConfig.keyExists("defaultBlockHeads")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.BLOCKHEADS, warConfig.getBoolean("defaultBlockHeads")); - } - - // buildInZonesOnly - if (warConfig.keyExists("buildInZonesOnly")) { - War.war.getWarConfig().put(WarConfig.BUILDINZONESONLY, warConfig.getBoolean("buildInZonesOnly")); - } - - // disablePVPMessage - if (warConfig.keyExists("disablePvpMessage")) { - War.war.getWarConfig().put(WarConfig.DISABLEPVPMESSAGE, warConfig.getBoolean("disablePvpMessage")); - } - - // disableBuildMessage - if (warConfig.keyExists("disableBuildMessage")) { - War.war.getWarConfig().put(WarConfig.DISABLEBUILDMESSAGE, warConfig.getBoolean("disableBuildMessage")); - } - - // tntInZonesOnly - if (warConfig.keyExists("tntInZonesOnly")) { - War.war.getWarConfig().put(WarConfig.TNTINZONESONLY, warConfig.getBoolean("tntInZonesOnly")); - } - - // defaultSpawnStyle - String spawnStyle = warConfig.getString("defaultspawnStyle"); - if (spawnStyle != null && !spawnStyle.equals("")) { - War.war.getTeamDefaultConfig().put(TeamConfig.SPAWNSTYLE, TeamSpawnStyle.getStyleFromString(spawnStyle)); - } - - // defaultFlagReturn - String flagReturn = warConfig.getString("defaultFlagReturn"); - if (flagReturn != null && !flagReturn.equals("")) { - War.war.getTeamDefaultConfig().put(TeamConfig.FLAGRETURN, FlagReturn.getFromString(flagReturn)); - } - - // defaultReward - String defaultRewardStr = warConfig.getString("defaultReward"); - if (defaultRewardStr != null && !defaultRewardStr.equals("")) { - LoadoutTxtMapper.fromStringToLoadout(defaultRewardStr, War.war.getDefaultInventories().getReward()); - } - - // defaultUnbreakableZoneBlocks - if (warConfig.keyExists("defaultUnbreakableZoneBlocks")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.UNBREAKABLE, warConfig.getBoolean("defaultUnbreakableZoneBlocks")); - } - - // defaultNoCreatures - if (warConfig.keyExists("defaultNoCreatures")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.NOCREATURES, warConfig.getBoolean("defaultNoCreatures")); - } - - // defaultGlassWalls - if (warConfig.keyExists("defaultGlassWalls")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.GLASSWALLS, warConfig.getBoolean("defaultGlassWalls")); - } - - // defaultPvpInZone - if (warConfig.keyExists("defaultPvpInZone")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.PVPINZONE, warConfig.getBoolean("defaultPvpInZone")); - } - - // defaultInstaBreak - if (warConfig.keyExists("defaultInstaBreak")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.INSTABREAK, warConfig.getBoolean("defaultInstaBreak")); - } - - // defaultNoDrops - if (warConfig.keyExists("defaultNoDrops")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.NODROPS, warConfig.getBoolean("defaultNoDrops")); - } - - // defaultNoHunger - if (warConfig.keyExists("defaultNoHunger")) { - War.war.getTeamDefaultConfig().put(TeamConfig.NOHUNGER, warConfig.getBoolean("defaultNoHunger")); - } - - // defaultSaturation - if (warConfig.keyExists("defaultSaturation")) { - War.war.getTeamDefaultConfig().put(TeamConfig.SATURATION, warConfig.getInt("defaultSaturation")); - } - - // defaultMinPlayers - if (warConfig.keyExists("defaultMinPlayers")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.MINPLAYERS, warConfig.getInt("defaultMinPlayers")); - } - - // defaultMinTeams - if (warConfig.keyExists("defaultMinTeams")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.MINTEAMS, warConfig.getInt("defaultMinTeams")); - } - - // defaultResetOnEmpty - if (warConfig.keyExists("defaultResetOnEmpty")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.RESETONEMPTY, warConfig.getBoolean("defaultResetOnEmpty")); - } - - // defaultResetOnLoad - if (warConfig.keyExists("defaultResetOnLoad")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.RESETONLOAD, warConfig.getBoolean("defaultResetOnLoad")); - } - - // defaultResetOnUnload - if (warConfig.keyExists("defaultResetOnUnload")) { - War.war.getWarzoneDefaultConfig().put(WarzoneConfig.RESETONUNLOAD, warConfig.getBoolean("defaultResetOnUnload")); - } - - // warhub - String hubStr = warConfig.getString("warhub"); - if (hubStr != null && !hubStr.equals("")) { - RestoreWarhubJob restoreWarhub = new RestoreWarhubJob(hubStr); - if (War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, restoreWarhub) == -1) { - War.war.log("Failed to schedule warhub-restore job. War hub was not loaded.", Level.WARNING); - } - } - - warConfig.close(); - } - - public static void save() { -// PropertiesFile warConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/war.txt"); -// String warzonesStr = ""; - - War.war.log("Saving War with WarTxtMapper", Level.SEVERE); - -// // warzones -// for (Warzone zone : War.war.getWarzones()) { -// warzonesStr += zone.getName() + ","; -// } -// warConfig.setString("warzones", warzonesStr); -// -// // zone makers: default is none and it means everyone can use /setzone -// String makersStr = ""; // everyone -// for (String name : War.war.getZoneMakerNames()) { -// makersStr += name + ","; -// } -// warConfig.setString("zoneMakers", makersStr); -// -// // whitelisted commands during a game -// String commandWhitelistStr = ""; // everyone -// for (String command : War.war.getCommandWhitelist()) { -// commandWhitelistStr += command + ","; -// } -// warConfig.setString("commandWhitelist", commandWhitelistStr); -// -// // defaultLoadout -// HashMap items = War.war.getDefaultInventories().getLoadouts().get("default"); -// warConfig.setString("defaultLoadout", LoadoutTxtMapper.fromLoadoutToString(items)); -// -// // defaultExtraLoadouts -// String extraLoadoutsStr = ""; -// for (String name : War.war.getDefaultInventories().getLoadouts().keySet()) { -// if (!name.equals("default")) { -// extraLoadoutsStr += name + ","; -// -// HashMap loadout = War.war.getDefaultInventories().getLoadouts().get(name); -// warConfig.setString(name + "Loadout", LoadoutTxtMapper.fromLoadoutToString(loadout)); -// } -// } -// warConfig.setString("defaultExtraLoadouts", extraLoadoutsStr); -// -// // maxZones -// warConfig.setInt("maxZones", War.war.getWarConfig().getInt(WarConfig.MAXZONES)); -// -// // defaultLifepool -// warConfig.setInt("defaultLifePool", War.war.getDefaultLifepool()); -// -// // defaultMonumentHeal -// warConfig.setInt("defaultMonumentHeal", War.war.getDefaultMonumentHeal()); -// -// // defaultFriendlyFire -// warConfig.setBoolean("defaultFriendlyFire", War.war.isDefaultFriendlyFire()); -// -// // defaultAutoAssignOnly -// warConfig.setBoolean("defaultAutoAssignOnly", War.war.isDefaultAutoAssignOnly()); -// -// // defaultFlagPointsOnly -// warConfig.setBoolean("defaultFlagPointsOnly", War.war.isDefaultFlagPointsOnly()); -// -// // defaultFlagMustBeHome -// warConfig.setBoolean("defaultFlagMustBeHome", War.war.isDefaultFlagMustBeHome()); -// -// // defaultTeamCap -// warConfig.setInt("defaultTeamCap", War.war.getDefaultTeamCap()); -// -// // defaultScoreCap -// warConfig.setInt("defaultScoreCap", War.war.getDefaultScoreCap()); -// -// // defaultRespawnTimer -// warConfig.setInt("defaultRespawnTimer", War.war.getDefaultRespawnTimer()); -// -// // pvpInZonesOnly -// warConfig.setBoolean("pvpInZonesOnly", War.war.getWarConfig().getBoolean(WarConfig.PVPINZONESONLY)); -// -// // defaultBlockHeads -// warConfig.setBoolean("defaultBlockHeads", War.war.isDefaultBlockHeads()); -// -// // buildInZonesOnly -// warConfig.setBoolean("buildInZonesOnly", War.war.getWarConfig().getBoolean(WarConfig.BUILDINZONESONLY)); -// -// // disablePVPMessage -// warConfig.setBoolean("disablePvpMessage", War.war.getWarConfig().getBoolean(WarConfig.DISABLEPVPMESSAGE)); -// -// // disableBuildMessage -// warConfig.setBoolean("disableBuildMessage", War.war.getWarConfig().getBoolean(WarConfig.DISABLEBUILDMESSAGE)); -// -// // tntInZonesOnly -// warConfig.setBoolean("tntInZonesOnly", War.war.getWarConfig().getBoolean(WarConfig.TNTINZONESONLY)); -// -// // spawnStyle -// warConfig.setString("spawnStyle", War.war.getDefaultSpawnStyle().toString()); -// -// // flagReturn -// warConfig.setString("flagReturn", War.war.getDefaultFlagReturn().toString()); -// -// // defaultReward -// String defaultRewardStr = ""; -// HashMap rewardItems = War.war.getDefaultInventories().getReward(); -// for (Integer slot : rewardItems.keySet()) { -// ItemStack item = items.get(slot); -// if (item != null) { -// defaultRewardStr += item.getTypeId() + "," + item.getAmount() + "," + slot + ";"; -// } -// } -// warConfig.setString("defaultReward", defaultRewardStr); -// -// // defaultUnbreakableZoneBlocks -// warConfig.setBoolean("defaultUnbreakableZoneBlocks", War.war.isDefaultUnbreakableZoneBlocks()); -// -// // defaultNoCreatures -// warConfig.setBoolean("defaultNoCreatures", War.war.isDefaultNoCreatures()); -// -// // defaultGlassWalls -// warConfig.setBoolean("defaultGlassWalls", War.war.isDefaultGlassWalls()); -// -// // defaultPvpInZone -// warConfig.setBoolean("defaultPvpInZone", War.war.isDefaultPvpInZone()); -// -// // defaultInstaBreak -// warConfig.setBoolean("defaultInstaBreak", War.war.isDefaultInstaBreak()); -// -// // defaultNoDrops -// warConfig.setBoolean("defaultNoDrops", War.war.isDefaultNoDrops()); -// -// // defaultNoHunger -// warConfig.setBoolean("defaultNoHunger", War.war.isDefaultNoHunger()); -// -// // defaultSaturation -// warConfig.setInt("defaultSaturation", War.war.getDefaultSaturation()); -// -// // defaultMinPlayers -// warConfig.setInt("defaultMinPlayers", War.war.getDefaultMinPlayers()); -// -// // defaultMinTeams -// warConfig.setInt("defaultMinTeams", War.war.getDefaultMinTeams()); -// -// // defaultResetOnEmpty -// warConfig.setBoolean("defaultResetOnEmpty", War.war.isDefaultResetOnEmpty()); -// -// // defaultResetOnLoad -// warConfig.setBoolean("defaultResetOnLoad", War.war.isDefaultResetOnLoad()); -// -// // defaultResetOnUnload -// warConfig.setBoolean("defaultResetOnUnload", War.war.isDefaultResetOnUnload()); -// -// // warhub -// String hubStr = ""; -// WarHub hub = War.war.getWarHub(); -// if (hub != null) { -// String orientationStr = ""; -// switch (hub.getOrientation()) { -// case SOUTH: -// orientationStr = "south"; -// break; -// case EAST: -// orientationStr = "east"; -// break; -// case NORTH: -// orientationStr = "north"; -// break; -// case WEST: -// default: -// orientationStr = "west"; -// break; -// } -// hubStr = hub.getLocation().getBlockX() + "," + hub.getLocation().getBlockY() + "," + hub.getLocation().getBlockZ() + "," -// + hub.getLocation().getWorld().getName() + "," + orientationStr; -// VolumeMapper.save(hub.getVolume(), ""); -// } -// warConfig.setString("warhub", hubStr); -// -// warConfig.save(); -// warConfig.close(); - } -} diff --git a/war/src/main/java/com/tommytony/war/mapper/WarYmlMapper.java b/war/src/main/java/com/tommytony/war/mapper/WarYmlMapper.java index 48a0052..94c6b90 100644 --- a/war/src/main/java/com/tommytony/war/mapper/WarYmlMapper.java +++ b/war/src/main/java/com/tommytony/war/mapper/WarYmlMapper.java @@ -32,9 +32,8 @@ public class WarYmlMapper { boolean newWar = false; if (warTxtFile.exists() && !warYmlFile.exists()) { - // Load both War and warzones (with delay) in old format, save War to new format immediatly - WarTxtMapper.load(true); - // Warzones are getting loaded by TxtMapper launched job. That job will in turn save the Warzones to their new format. + // dropped nimitz compatibility with the MC 1.13 update + War.war.log("Failed to load War config file from older version - backwards compatibility was dropped with MC 1.13. Please delete war.txt to continue.", Level.WARNING); return; } else if (!warTxtFile.exists() && !warYmlFile.exists()) { // Save defaults to disk diff --git a/war/src/main/java/com/tommytony/war/mapper/WarzoneTxtMapper.java b/war/src/main/java/com/tommytony/war/mapper/WarzoneTxtMapper.java deleted file mode 100644 index 622540d..0000000 --- a/war/src/main/java/com/tommytony/war/mapper/WarzoneTxtMapper.java +++ /dev/null @@ -1,657 +0,0 @@ -package com.tommytony.war.mapper; - -import java.io.File; -import java.io.IOException; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.logging.Level; - -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.block.BlockFace; -import org.bukkit.inventory.ItemStack; - - -import com.tommytony.war.Team; -import com.tommytony.war.War; -import com.tommytony.war.Warzone; -import com.tommytony.war.config.FlagReturn; -import com.tommytony.war.config.TeamConfig; -import com.tommytony.war.config.TeamKind; -import com.tommytony.war.config.TeamSpawnStyle; -import com.tommytony.war.config.WarzoneConfig; -import com.tommytony.war.structure.Monument; -import com.tommytony.war.structure.ZoneLobby; -import com.tommytony.war.utility.Direction; -import com.tommytony.war.volume.Volume; -import com.tommytony.war.volume.ZoneVolume; -import java.util.Arrays; - -/** - * - * @author tommytony - * - */ -public class WarzoneTxtMapper { - - public static Warzone load(String name, boolean createNewVolume) { - // war.getLogger().info("Loading warzone " + name + " config and blocks..."); - PropertiesFile warzoneConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/warzone-" + name + ".txt"); - try { - warzoneConfig.load(); - } catch (IOException e) { - War.war.getLogger().info("Failed to load warzone-" + name + ".txt file."); - e.printStackTrace(); - } - - // world - String worldStr = warzoneConfig.getProperty("world"); - World world = null; - if (worldStr == null || worldStr.equals("")) { - world = War.war.getServer().getWorlds().get(0); // default to first world - } else { - world = War.war.getServer().getWorld(worldStr); - } - - if (world == null) { - War.war.log("Failed to restore warzone " + name + ". The specified world (name: " + worldStr + ") does not exist!", Level.WARNING); - } else { - // Create the zone - Warzone warzone = new Warzone(world, name); - - // Create file if needed - if (!warzoneConfig.containsKey("name")) { - WarzoneTxtMapper.save(warzone, false); - War.war.getLogger().info("Warzone " + name + " config file created."); - try { - warzoneConfig.load(); - } catch (IOException e) { - // war.getLogger().info("Failed to reload warzone-" + name + ".txt file after creating it."); - e.printStackTrace(); - } - } - - // teleport - String teleportStr = warzoneConfig.getString("teleport"); - if (teleportStr != null && !teleportStr.equals("")) { - String[] teleportSplit = teleportStr.split(","); - int teleX = Integer.parseInt(teleportSplit[0]); - int teleY = Integer.parseInt(teleportSplit[1]); - int teleZ = Integer.parseInt(teleportSplit[2]); - int yaw = Integer.parseInt(teleportSplit[3]); - warzone.setTeleport(new Location(world, teleX, teleY, teleZ, yaw, 0)); - } - - // ff - if (warzoneConfig.containsKey("friendlyFire")) { - warzone.getWarzoneConfig().put(WarzoneConfig.FRIENDLYFIRE, warzoneConfig.getBoolean("friendlyFire")); - } - - // loadout - warzone.getDefaultInventories().clearLoadouts(); - - String loadoutStr = warzoneConfig.getString("loadout"); - if (loadoutStr != null && !loadoutStr.equals("")) { - warzone.getDefaultInventories().setLoadout("default", new HashMap()); - LoadoutTxtMapper.fromStringToLoadout(loadoutStr, warzone.getDefaultInventories().getLoadout("default")); - } - - // extraLoadouts - String extraLoadoutStr = warzoneConfig.getString("extraLoadouts"); - String[] extraLoadoutsSplit = extraLoadoutStr.split(","); - - for (String nameStr : extraLoadoutsSplit) { - if (nameStr != null && !nameStr.equals("")) { - warzone.getDefaultInventories().setLoadout(nameStr, new HashMap()); - } - } - - for (String extraName : extraLoadoutsSplit) { - if (extraName != null && !extraName.equals("")) { - String loadoutString = warzoneConfig.getString(extraName + "Loadout"); - HashMap loadout = warzone.getDefaultInventories().getLoadout(extraName); - LoadoutTxtMapper.fromStringToLoadout(loadoutString, loadout); - } - } - - // authors - if (warzoneConfig.containsKey("author") && !warzoneConfig.getString("author").equals("")) { - for(String authorStr : warzoneConfig.getString("author").split(",")) { - if (!authorStr.equals("")) { - warzone.addAuthor(authorStr); - } - } - } - - // life pool (always set after teams, so the teams' remaining lives get initialized properly by this setter) - if (warzoneConfig.containsKey("lifePool")) { - warzone.getTeamDefaultConfig().put(TeamConfig.LIFEPOOL, warzoneConfig.getInt("lifePool")); - } - - // monument heal - if (warzoneConfig.containsKey("monumentHeal")) { - warzone.getWarzoneConfig().put(WarzoneConfig.MONUMENTHEAL, warzoneConfig.getInt("monumentHeal")); - } - - // autoAssignOnly - if (warzoneConfig.containsKey("autoAssignOnly")) { - warzone.getWarzoneConfig().put(WarzoneConfig.AUTOASSIGN, warzoneConfig.getBoolean("autoAssignOnly")); - } - - // flagPointsOnly - if (warzoneConfig.containsKey("flagPointsOnly")) { - warzone.getTeamDefaultConfig().put(TeamConfig.FLAGPOINTSONLY, warzoneConfig.getBoolean("flagPointsOnly")); - } - - // flagMustBeHome - if (warzoneConfig.containsKey("flagMustBeHome")) { - warzone.getTeamDefaultConfig().put(TeamConfig.FLAGMUSTBEHOME, warzoneConfig.getBoolean("flagMustBeHome")); - } - - // team cap - if (warzoneConfig.containsKey("teamCap")) { - warzone.getTeamDefaultConfig().put(TeamConfig.TEAMSIZE, warzoneConfig.getInt("teamCap")); - } - - // score cap - if (warzoneConfig.containsKey("scoreCap")) { - warzone.getTeamDefaultConfig().put(TeamConfig.MAXSCORE, warzoneConfig.getInt("scoreCap")); - } - - // respawn timer - if (warzoneConfig.containsKey("respawnTimer")) { - warzone.getTeamDefaultConfig().put(TeamConfig.RESPAWNTIMER, warzoneConfig.getInt("respawnTimer")); - } - - // blockHeads - if (warzoneConfig.containsKey("blockHeads")) { - warzone.getWarzoneConfig().put(WarzoneConfig.BLOCKHEADS, warzoneConfig.getBoolean("blockHeads")); - } - - // spawnStyle - String spawnStyle = warzoneConfig.getString("spawnStyle"); - if (spawnStyle != null && !spawnStyle.equals("")) { - warzone.getTeamDefaultConfig().put(TeamConfig.SPAWNSTYLE, TeamSpawnStyle.getStyleFromString(spawnStyle)); - } - - // flagReturn - String flagReturn = warzoneConfig.getString("flagReturn"); - if (flagReturn != null && !flagReturn.equals("")) { - warzone.getTeamDefaultConfig().put(TeamConfig.FLAGRETURN, FlagReturn.getFromString(flagReturn)); - } - - // reward - String rewardStr = warzoneConfig.getString("reward"); - if (rewardStr != null && !rewardStr.equals("")) { - HashMap reward = new HashMap(); - LoadoutTxtMapper.fromStringToLoadout(rewardStr, reward); - warzone.getDefaultInventories().setReward(reward); - } - - // unbreakableZoneBlocks - if (warzoneConfig.containsKey("unbreakableZoneBlocks")) { - warzone.getWarzoneConfig().put(WarzoneConfig.UNBREAKABLE, warzoneConfig.getBoolean("unbreakableZoneBlocks")); - } - - // disabled - if (warzoneConfig.containsKey("disabled")) { - warzone.getWarzoneConfig().put(WarzoneConfig.DISABLED, warzoneConfig.getBoolean("disabled")); - } - - // noCreatures - if (warzoneConfig.containsKey("noCreatures")) { - warzone.getWarzoneConfig().put(WarzoneConfig.NOCREATURES, warzoneConfig.getBoolean("noCreatures")); - } - - // glassWalls - if (warzoneConfig.containsKey("glassWalls")) { - warzone.getWarzoneConfig().put(WarzoneConfig.GLASSWALLS, warzoneConfig.getBoolean("glassWalls")); - } - - // pvpInZone - if (warzoneConfig.containsKey("pvpInZone")) { - warzone.getWarzoneConfig().put(WarzoneConfig.PVPINZONE, warzoneConfig.getBoolean("pvpInZone")); - } - - // instaBreak - if (warzoneConfig.containsKey("instaBreak")) { - warzone.getWarzoneConfig().put(WarzoneConfig.INSTABREAK, warzoneConfig.getBoolean("instaBreak")); - } - - // noDrops - if (warzoneConfig.containsKey("noDrops")) { - warzone.getWarzoneConfig().put(WarzoneConfig.NODROPS, warzoneConfig.getBoolean("noDrops")); - } - - // noHunger - if (warzoneConfig.containsKey("noHunger")) { - warzone.getTeamDefaultConfig().put(TeamConfig.NOHUNGER, warzoneConfig.getBoolean("noHunger")); - } - - // saturation - if (warzoneConfig.containsKey("saturation")) { - warzone.getTeamDefaultConfig().put(TeamConfig.SATURATION, warzoneConfig.getInt("saturation")); - } - - // minPlayers - if (warzoneConfig.containsKey("minPlayers")) { - warzone.getWarzoneConfig().put(WarzoneConfig.MINPLAYERS, warzoneConfig.getInt("minPlayers")); - } - - // minTeams - if (warzoneConfig.containsKey("minTeams")) { - warzone.getWarzoneConfig().put(WarzoneConfig.MINTEAMS, warzoneConfig.getInt("minTeams")); - } - - // resetOnEmpty - if (warzoneConfig.containsKey("resetOnEmpty")) { - warzone.getWarzoneConfig().put(WarzoneConfig.RESETONEMPTY, warzoneConfig.getBoolean("resetOnEmpty")); - } - - // resetOnLoad - if (warzoneConfig.containsKey("resetOnLoad")) { - warzone.getWarzoneConfig().put(WarzoneConfig.RESETONLOAD, warzoneConfig.getBoolean("resetOnLoad")); - } - - // resetOnUnload - if (warzoneConfig.containsKey("resetOnUnload")) { - warzone.getWarzoneConfig().put(WarzoneConfig.RESETONUNLOAD, warzoneConfig.getBoolean("resetOnUnload")); - } - - // rallyPoint - String rallyPointStr = warzoneConfig.getString("rallyPoint"); - if (rallyPointStr != null && !rallyPointStr.equals("")) { - String[] rallyPointStrSplit = rallyPointStr.split(","); - - int rpX = Integer.parseInt(rallyPointStrSplit[0]); - int rpY = Integer.parseInt(rallyPointStrSplit[1]); - int rpZ = Integer.parseInt(rallyPointStrSplit[2]); - Location rallyPoint = new Location(world, rpX, rpY, rpZ); - warzone.setRallyPoint(rallyPoint); - } - - // monuments - String monumentsStr = warzoneConfig.getString("monuments"); - if (monumentsStr != null && !monumentsStr.equals("")) { - String[] monumentsSplit = monumentsStr.split(";"); - warzone.getMonuments().clear(); - for (String monumentStr : monumentsSplit) { - if (monumentStr != null && !monumentStr.equals("")) { - String[] monumentStrSplit = monumentStr.split(","); - int monumentX = Integer.parseInt(monumentStrSplit[1]); - int monumentY = Integer.parseInt(monumentStrSplit[2]); - int monumentZ = Integer.parseInt(monumentStrSplit[3]); - Monument monument = new Monument(monumentStrSplit[0], warzone, new Location(world, monumentX, monumentY, monumentZ)); - warzone.getMonuments().add(monument); - } - } - } - - // teams - String teamsStr = warzoneConfig.getString("teams"); - if (teamsStr != null && !teamsStr.equals("")) { - String[] teamsSplit = teamsStr.split(";"); - warzone.getTeams().clear(); - for (String teamStr : teamsSplit) { - if (teamStr != null && !teamStr.equals("")) { - String[] teamStrSplit = teamStr.split(","); - int teamX = Integer.parseInt(teamStrSplit[1]); - int teamY = Integer.parseInt(teamStrSplit[2]); - int teamZ = Integer.parseInt(teamStrSplit[3]); - Location teamLocation = new Location(world, teamX, teamY, teamZ); - if (teamStrSplit.length > 4) { - int yaw = Integer.parseInt(teamStrSplit[4]); - teamLocation.setYaw(yaw); - } - File original = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + name + "/volume-" + teamStrSplit[0] + ".dat"); - File modified = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + name + "/volume-" + teamStrSplit[0] + "0.dat"); - try { - original.renameTo(modified); - } catch (Exception ignored) { - } - - Team team = new Team(teamStrSplit[0], TeamKind.teamKindFromString(teamStrSplit[0]), Arrays.asList(teamLocation), warzone); - team.setRemainingLives(warzone.getTeamDefaultConfig().resolveInt(TeamConfig.LIFEPOOL)); - warzone.getTeams().add(team); - } - } - } - - // teamFlags - String teamFlagsStr = warzoneConfig.getString("teamFlags"); - if (teamFlagsStr != null && !teamFlagsStr.equals("")) { - String[] teamFlagsSplit = teamFlagsStr.split(";"); - for (String teamFlagStr : teamFlagsSplit) { - if (teamFlagStr != null && !teamFlagStr.equals("")) { - String[] teamFlagStrSplit = teamFlagStr.split(","); - Team team = warzone.getTeamByKind(TeamKind.teamKindFromString(teamFlagStrSplit[0])); - if (team != null) { - int teamFlagX = Integer.parseInt(teamFlagStrSplit[1]); - int teamFlagY = Integer.parseInt(teamFlagStrSplit[2]); - int teamFlagZ = Integer.parseInt(teamFlagStrSplit[3]); - Location teamFlagLocation = new Location(world, teamFlagX, teamFlagY, teamFlagZ); - if (teamFlagStrSplit.length > 4) { - int yaw = Integer.parseInt(teamFlagStrSplit[4]); - teamFlagLocation.setYaw(yaw); - } - team.setTeamFlag(teamFlagLocation); // this may screw things up - } - } - } - } - - // lobby - String lobbyStr = warzoneConfig.getString("lobby"); - - warzoneConfig.close(); - - if (createNewVolume) { - ZoneVolume zoneVolume = new ZoneVolume(warzone.getName(), world, warzone); // VolumeMapper.loadZoneVolume(warzone.getName(), warzone.getName(), war, warzone.getWorld(), warzone); - warzone.setVolume(zoneVolume); - } - - // monument blocks - for (Monument monument : warzone.getMonuments()) { - try { - monument.setVolume(VolumeMapper.loadVolume(monument.getName(), warzone.getName(), world)); - } catch (SQLException e) { - War.war.getLogger().log(Level.WARNING, "Failed to load some ambiguous old volume", e); - } - } - - // team spawn blocks - for (Team team : warzone.getTeams()) { - for (Location spawnLocation : team.getTeamSpawns()) { - try { - team.setSpawnVolume(spawnLocation, VolumeMapper.loadVolume(team.getName() + "0", warzone.getName(), world)); - } catch (SQLException e) { - War.war.getLogger().log(Level.WARNING, "Failed to load some ambiguous old volume", e); - } - } - if (team.getTeamFlag() != null) { - try { - team.setFlagVolume(VolumeMapper.loadVolume(team.getName() + "flag", warzone.getName(), world)); - } catch (SQLException e) { - War.war.getLogger().log(Level.WARNING, "Failed to load some ambiguous old volume", e); - } - } - } - - // lobby - BlockFace lobbyFace = null; - if (lobbyStr != null && !lobbyStr.equals("")) { - String[] lobbyStrSplit = lobbyStr.split(","); - if (lobbyStrSplit.length > 0) { - // lobby orientation - if (lobbyStrSplit[0].equals("south")) { - lobbyFace = Direction.SOUTH(); - } else if (lobbyStrSplit[0].equals("east")) { - lobbyFace = Direction.EAST(); - } else if (lobbyStrSplit[0].equals("north")) { - lobbyFace = Direction.NORTH(); - } else if (lobbyStrSplit[0].equals("west")) { - lobbyFace = Direction.WEST(); - } - - // lobby world - World lobbyWorld = world; // by default, warzone world - if (lobbyStrSplit.length > 1) { - World strWorld = War.war.getServer().getWorld(lobbyStrSplit[1]); - if (strWorld != null) { - lobbyWorld = strWorld; - } - } - - // create the lobby - Volume lobbyVolume = null; - try { - lobbyVolume = VolumeMapper.loadVolume("lobby", warzone.getName(), lobbyWorld); - } catch (SQLException e) { - // if the zone is this old is there any reason the lobby should be nimitz format - War.war.getLogger().log(Level.WARNING, "Failed to load lobby for a really old warzone", e); - } - ZoneLobby lobby = new ZoneLobby(warzone, lobbyFace, lobbyVolume); - warzone.setLobby(lobby); - } - } - - return warzone; - } - return null; - } - - public static void save(Warzone warzone, boolean saveAllBlocks) { - - War.war.log("Saving War with WarzoneTxtMapper", Level.SEVERE); -// (new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + warzone.getName())).mkdir(); -// PropertiesFile warzoneConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/warzone-" + warzone.getName() + ".txt"); -// // war.getLogger().info("Saving warzone " + warzone.getName() + "..."); -// -// // name -// warzoneConfig.setString("name", warzone.getName()); -// -// // world -// warzoneConfig.setString("world", warzone.getWorld().getName()); // default for now -// -// // teleport -// String teleportStr = ""; -// Location tele = warzone.getTeleport(); -// if (tele != null) { -// int intYaw = 0; -// if (tele.getYaw() >= 0) { -// intYaw = (int) (tele.getYaw() % 360); -// } else { -// intYaw = (int) (360 + (tele.getYaw() % 360)); -// } -// teleportStr = tele.getBlockX() + "," + tele.getBlockY() + "," + tele.getBlockZ() + "," + intYaw; -// } -// warzoneConfig.setString("teleport", teleportStr); -// -// // teams -// String teamsStr = ""; -// List teams = warzone.getTeams(); -// for (Team team : teams) { -// Location spawn = team.getTeamSpawn(); -// int intYaw = 0; -// if (spawn.getYaw() >= 0) { -// intYaw = (int) (spawn.getYaw() % 360); -// } else { -// intYaw = (int) (360 + (spawn.getYaw() % 360)); -// } -// teamsStr += team.getName() + "," + spawn.getBlockX() + "," + spawn.getBlockY() + "," + spawn.getBlockZ() + "," + intYaw + ";"; -// } -// warzoneConfig.setString("teams", teamsStr); -// -// // team flags -// String teamFlagsStr = "";; -// for (Team team : teams) { -// if (team.getFlagVolume() != null) { -// Location flag = team.getTeamFlag(); -// int intYaw = 0; -// if (flag.getYaw() >= 0) { -// intYaw = (int) (flag.getYaw() % 360); -// } else { -// intYaw = (int) (360 + (flag.getYaw() % 360)); -// } -// teamFlagsStr += team.getName() + "," + flag.getBlockX() + "," + flag.getBlockY() + "," + flag.getBlockZ() + "," + intYaw + ";"; -// } -// } -// warzoneConfig.setString("teamFlags", teamFlagsStr); -// -// // ff -// warzoneConfig.setBoolean("friendlyFire", warzone.getFriendlyFire()); -// -// // loadout -// HashMap items = warzone.getDefaultInventories().getLoadouts().get("default"); -// warzoneConfig.setString("loadout", LoadoutTxtMapper.fromLoadoutToString(items)); -// -// // defaultExtraLoadouts -// String extraLoadoutsStr = ""; -// for (String name : warzone.getDefaultInventories().getLoadouts().keySet()) { -// if (!name.equals("default")) { -// extraLoadoutsStr += name + ","; -// -// HashMap loadout = warzone.getDefaultInventories().getLoadouts().get(name); -// warzoneConfig.setString(name + "Loadout", LoadoutTxtMapper.fromLoadoutToString(loadout)); -// } -// } -// warzoneConfig.setString("extraLoadouts", extraLoadoutsStr); -// -// // authors -// warzoneConfig.setString("author", warzone.getAuthorsString()); -// -// // life pool -// warzoneConfig.setInt("lifePool", warzone.getLifePool()); -// -// // monument heal -// warzoneConfig.setInt("monumentHeal", warzone.getMonumentHeal()); -// -// // autoAssignOnly -// warzoneConfig.setBoolean("autoAssignOnly", warzone.isAutoAssignOnly()); -// -// // flagPointsOnly -// warzoneConfig.setBoolean("flagPointsOnly", warzone.isFlagPointsOnly()); -// -// // flagMustBeHome -// warzoneConfig.setBoolean("flagMustBeHome", warzone.isFlagMustBeHome()); -// -// // team cap -// warzoneConfig.setInt("teamCap", warzone.getTeamCap()); -// -// // score cap -// warzoneConfig.setInt("scoreCap", warzone.getScoreCap()); -// -// // respawn timer -// warzoneConfig.setInt("respawnTimer", warzone.getRespawnTimer()); -// -// // blockHeads -// warzoneConfig.setBoolean("blockHeads", warzone.isBlockHeads()); -// -// // spawnStyle -// warzoneConfig.setString("spawnStyle", warzone.getSpawnStyle().toString()); -// -// // flagReturn -// warzoneConfig.setString("flagReturn", warzone.getFlagReturn().toString()); -// -// // reward -// HashMap rewardItems = warzone.getDefaultInventories().getReward(); -// warzoneConfig.setString("reward", LoadoutTxtMapper.fromLoadoutToString(rewardItems)); -// -// // unbreakableZoneBlocks -// warzoneConfig.setBoolean("unbreakableZoneBlocks", warzone.isUnbreakableZoneBlocks()); -// -// // disabled -// warzoneConfig.setBoolean("disabled", warzone.isDisabled()); -// -// // noCreatures -// warzoneConfig.setBoolean("noCreatures", warzone.isNoCreatures()); -// -// // glassWalls -// warzoneConfig.setBoolean("glassWalls", warzone.isGlassWalls()); -// -// // pvpInZone -// warzoneConfig.setBoolean("pvpInZone", warzone.isPvpInZone()); -// -// // instaBreak -// warzoneConfig.setBoolean("instaBreak", warzone.isInstaBreak()); -// -// // noDrops -// warzoneConfig.setBoolean("noDrops", warzone.isNoDrops()); -// -// // noHunger -// warzoneConfig.setBoolean("noHunger", warzone.isNoHunger()); -// -// // saturation -// warzoneConfig.setInt("saturation", warzone.getSaturation()); -// -// // minPlayers -// warzoneConfig.setInt("minPlayers", warzone.getMinPlayers()); -// -// // minTeams -// warzoneConfig.setInt("minTeams", warzone.getMinTeams()); -// -// // resetOnEmpty -// warzoneConfig.setBoolean("resetOnEmpty", warzone.isResetOnEmpty()); -// -// // resetOnLoad -// warzoneConfig.setBoolean("resetOnLoad", warzone.isResetOnLoad()); -// -// // resetOnUnload -// warzoneConfig.setBoolean("resetOnUnload", warzone.isResetOnUnload()); -// -// // rallyPoint -// String rpStr = ""; -// Location rp = warzone.getRallyPoint(); -// if (rp != null) { -// rpStr = rp.getBlockX() + "," + rp.getBlockY() + "," + rp.getBlockZ(); -// } -// warzoneConfig.setString("rallyPoint", rpStr); -// -// // defaultDropLootOnDeath -// // warzoneConfig.setBoolean("dropLootOnDeath", warzone.isDropLootOnDeath()); -// -// // monuments -// String monumentsStr = ""; -// List monuments = warzone.getMonuments(); -// for (Monument monument : monuments) { -// Location monumentLoc = monument.getLocation(); -// monumentsStr += monument.getName() + "," + monumentLoc.getBlockX() + "," + monumentLoc.getBlockY() + "," + monumentLoc.getBlockZ() + ";"; -// } -// warzoneConfig.setString("monuments", monumentsStr); -// -// // lobby -// String lobbyStr = ""; -// if (warzone.getLobby() != null) { -// if (Direction.SOUTH() == warzone.getLobby().getWall()) { -// lobbyStr = "south"; -// } else if (Direction.EAST() == warzone.getLobby().getWall()) { -// lobbyStr = "east"; -// } else if (Direction.NORTH() == warzone.getLobby().getWall()) { -// lobbyStr = "north"; -// } else if (Direction.WEST() == warzone.getLobby().getWall()) { -// lobbyStr = "west"; -// } -// } -// warzoneConfig.setString("lobby", lobbyStr + "," + warzone.getLobby().getVolume().getWorld().getName()); -// -// warzoneConfig.save(); -// warzoneConfig.close(); -// -// // monument blocks -// for (Monument monument : monuments) { -// VolumeMapper.save(monument.getVolume(), warzone.getName()); -// } -// -// // team spawn & flag blocks -// for (Team team : teams) { -// VolumeMapper.save(team.getSpawnVolume(), warzone.getName()); -// if (team.getFlagVolume() != null) { -// VolumeMapper.save(team.getFlagVolume(), warzone.getName()); -// } -// } -// -// if (warzone.getLobby() != null) { -// VolumeMapper.save(warzone.getLobby().getVolume(), warzone.getName()); -// } - } - - public static void delete(String name) { - File zoneFolder = new File(War.war.getDataFolder().getPath() + "/dat/warzone-" + name); - File[] files = zoneFolder.listFiles(); - for (File file : files) { - boolean deletedData = file.delete(); - if (!deletedData) { - War.war.log("Failed to delete file " + file.getName(), Level.WARNING); - } - } - boolean deletedData = zoneFolder.delete(); - if (!deletedData) { - War.war.log("Failed to delete folder " + zoneFolder.getName(), Level.WARNING); - } - File zoneFile = new File(War.war.getDataFolder().getPath() + "/warzone-" + name + ".txt"); - deletedData = zoneFile.delete(); - if (!deletedData) { - War.war.log("Failed to delete file " + zoneFile.getName(), Level.WARNING); - } - } -} diff --git a/war/src/main/java/com/tommytony/war/mapper/WarzoneYmlMapper.java b/war/src/main/java/com/tommytony/war/mapper/WarzoneYmlMapper.java index 7158447..aa54b22 100644 --- a/war/src/main/java/com/tommytony/war/mapper/WarzoneYmlMapper.java +++ b/war/src/main/java/com/tommytony/war/mapper/WarzoneYmlMapper.java @@ -30,18 +30,15 @@ import com.tommytony.war.volume.ZoneVolume; public class WarzoneYmlMapper { - @SuppressWarnings("deprecation") public static Warzone load(String name) { // removed createNewVolume, as it did nothing File warzoneTxtFile = new File(War.war.getDataFolder().getPath() + "/warzone-" + name + ".txt"); File warzoneYmlFile = new File(War.war.getDataFolder().getPath() + "/warzone-" + name + ".yml"); // Convert from TXT to YML if needed if (warzoneTxtFile.exists() && !warzoneYmlFile.exists()) { - // Since we're converting, WarTxtMapper didn't load the warzones. - // We need to load the old-text-format-Warzone into memory. - Warzone zoneToConvert = WarzoneTxtMapper.load(name, false); - WarzoneYmlMapper.save(zoneToConvert); - War.war.log("Converted warzone-" + name + ".txt to warzone-" + name + ".yml", Level.INFO); + // dropped nimitz compatibility with the MC 1.13 update + War.war.log("Failed to load Warzone " + name + " - backwards compatibility was dropped with MC 1.13. Please delete this zone to continue.", Level.WARNING); + return null; } if (!warzoneYmlFile.exists()) { @@ -385,50 +382,18 @@ public class WarzoneYmlMapper { if (warzoneRootSection.isItemStack(lobbyPrefix + "materials.floor")) { warzone.getLobbyMaterials().setFloorBlock( warzoneRootSection.getItemStack(lobbyPrefix + "materials.floor")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(lobbyPrefix + "materials.floor"); - if (floorMaterialSection != null) { - warzone.getLobbyMaterials().setFloorBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warzoneRootSection.isItemStack(lobbyPrefix + "materials.outline")) { warzone.getLobbyMaterials().setOutlineBlock( warzoneRootSection.getItemStack(lobbyPrefix + "materials.outline")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(lobbyPrefix + "materials.outline"); - if (floorMaterialSection != null) { - warzone.getLobbyMaterials().setOutlineBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warzoneRootSection.isItemStack(lobbyPrefix + "materials.gate")) { warzone.getLobbyMaterials().setGateBlock( warzoneRootSection.getItemStack(lobbyPrefix + "materials.gate")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(lobbyPrefix + "materials.gate"); - if (floorMaterialSection != null) { - warzone.getLobbyMaterials().setGateBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warzoneRootSection.isItemStack(lobbyPrefix + "materials.light")) { warzone.getLobbyMaterials().setLightBlock( warzoneRootSection.getItemStack(lobbyPrefix + "materials.light")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(lobbyPrefix + "materials.light"); - if (floorMaterialSection != null) { - warzone.getLobbyMaterials().setLightBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } // lobby world @@ -449,38 +414,14 @@ public class WarzoneYmlMapper { if (warzoneRootSection.isItemStack(zoneInfoPrefix + "materials.main")) { warzone.getWarzoneMaterials().setMainBlock( warzoneRootSection.getItemStack(zoneInfoPrefix + "materials.main")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(zoneInfoPrefix + "materials.main"); - if (floorMaterialSection != null) { - warzone.getWarzoneMaterials().setMainBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warzoneRootSection.isItemStack(zoneInfoPrefix + "materials.stand")) { warzone.getWarzoneMaterials().setStandBlock( warzoneRootSection.getItemStack(zoneInfoPrefix + "materials.stand")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(zoneInfoPrefix + "materials.stand"); - if (floorMaterialSection != null) { - warzone.getWarzoneMaterials().setStandBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } if (warzoneRootSection.isItemStack(zoneInfoPrefix + "materials.light")) { warzone.getWarzoneMaterials().setLightBlock( warzoneRootSection.getItemStack(zoneInfoPrefix + "materials.light")); - } else { - ConfigurationSection floorMaterialSection = warzoneRootSection - .getConfigurationSection(zoneInfoPrefix + "materials.light"); - if (floorMaterialSection != null) { - warzone.getWarzoneMaterials().setLightBlock( - new ItemStack(floorMaterialSection.getInt("id"), 1, - (short) floorMaterialSection.getInt("data"))); - } } try { connection.close(); diff --git a/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java b/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java index 4751ba8..7e66429 100644 --- a/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java +++ b/war/src/main/java/com/tommytony/war/mapper/ZoneVolumeMapper.java @@ -56,10 +56,8 @@ public class ZoneVolumeMapper { public static Connection getZoneConnection(ZoneVolume volume, String zoneName, World world) throws SQLException { File databaseFile = new File(War.war.getDataFolder(), String.format("/dat/warzone-%s/volume-%s.sl3", zoneName, volume.getName())); if (!databaseFile.exists()) { - // Convert warzone to nimitz file format. - PreNimitzZoneVolumeMapper.load(volume, zoneName, world, false); - ZoneVolumeMapper.save(volume, zoneName); - War.war.log("Warzone " + zoneName + " converted to nimitz format!", Level.INFO); + // dropped nimitz compatibility with the MC 1.13 update + War.war.log("Warzone " + zoneName + " not found - creating new file. Will not attempt converting legacy War version formats.", Level.WARNING); } Connection databaseConnection = DriverManager.getConnection("jdbc:sqlite:" + databaseFile.getPath()); Statement stmt = databaseConnection.createStatement(); @@ -314,7 +312,7 @@ public class ZoneVolumeMapper { case SUNSET: // Use same as 4x3 // 4x3 - case DONKEYKONG: + case DONKEY_KONG: case SKELETON: if(facing == BlockFace.WEST) return loc.getBlock().getLocation().add(0, 0, -1); @@ -335,7 +333,7 @@ public class ZoneVolumeMapper { case FIGHTERS: // Use same as 4x4 // 4x4 - case BURNINGSKULL: + case BURNING_SKULL: case PIGSCENE: case POINTER: if(facing == BlockFace.WEST) @@ -540,6 +538,7 @@ public class ZoneVolumeMapper { // TODO upgrade to store owning player by UUID dataStmt.setString(6, String.format("%s\n%s\n%s", ((Skull) block.getState()).hasOwner() ? ((Skull) block.getState()).getOwningPlayer().getName() : "", + // TODO remove deprecation when Spigot updates their docs about the replacement ((Skull) block.getState()).getSkullType().toString(), ((Skull) block.getState()).getRotation().toString())); } else if (state instanceof CommandBlock) { @@ -547,7 +546,9 @@ public class ZoneVolumeMapper { + "\n" + ((CommandBlock) block.getState()).getCommand()); } else if (state instanceof CreatureSpawner) { dataStmt.setString(6, ((CreatureSpawner) block.getState()).getSpawnedType().toString()); - } + } else { + dataStmt.setString(6, ""); + } dataStmt.addBatch(); diff --git a/war/src/main/java/com/tommytony/war/structure/Cake.java b/war/src/main/java/com/tommytony/war/structure/Cake.java index 567f9ac..4f107d3 100644 --- a/war/src/main/java/com/tommytony/war/structure/Cake.java +++ b/war/src/main/java/com/tommytony/war/structure/Cake.java @@ -97,7 +97,7 @@ public class Cake { current.setType(this.warzone.getWarzoneMaterials().getStandBlock().getType()); current.setData(this.warzone.getWarzoneMaterials().getStandBlock().getData()); current.update(true); - this.warzone.getWorld().getBlockAt(x, y + 1, z).setType(Material.CAKE_BLOCK); + this.warzone.getWorld().getBlockAt(x, y + 1, z).setType(Material.CAKE); } public boolean isCakeBlock(Location otherLocation) { diff --git a/war/src/main/java/com/tommytony/war/structure/CapturePoint.java b/war/src/main/java/com/tommytony/war/structure/CapturePoint.java index d2f845a..00b782b 100644 --- a/war/src/main/java/com/tommytony/war/structure/CapturePoint.java +++ b/war/src/main/java/com/tommytony/war/structure/CapturePoint.java @@ -106,7 +106,6 @@ public class CapturePoint { 1 + Math.round(Math.cos(Math.toRadians(location.getYaw())))); BlockState state = origin.clone().add(dir).getBlock().getState(); state.setType(controller.getMaterial()); - state.setData(controller.getBlockData()); state.update(true); } } diff --git a/war/src/main/java/com/tommytony/war/structure/WarHub.java b/war/src/main/java/com/tommytony/war/structure/WarHub.java index b1d15d1..e5f9350 100644 --- a/war/src/main/java/com/tommytony/war/structure/WarHub.java +++ b/war/src/main/java/com/tommytony/war/structure/WarHub.java @@ -214,7 +214,7 @@ public class WarHub { } // War hub sign - locationBlock.getRelative(front, 2).setType(Material.SIGN_POST); + locationBlock.getRelative(front, 2).setType(Material.SIGN); String[] lines = War.war.getString("sign.warhub").split("\n"); org.bukkit.block.Sign locationBlockFront = (org.bukkit.block.Sign) locationBlock.getRelative(front, 2).getState(); for (int i = 0; i < 4; i++) { diff --git a/war/src/main/java/com/tommytony/war/structure/ZoneLobby.java b/war/src/main/java/com/tommytony/war/structure/ZoneLobby.java index a2288a9..9e7e85c 100644 --- a/war/src/main/java/com/tommytony/war/structure/ZoneLobby.java +++ b/war/src/main/java/com/tommytony/war/structure/ZoneLobby.java @@ -368,7 +368,7 @@ public class ZoneLobby { // set zone sign Block zoneSignBlock = this.lobbyMiddleWallBlock.getBlock().getRelative(this.wall, 4); - zoneSignBlock.setType(Material.SIGN_POST); + zoneSignBlock.setType(Material.SIGN); org.bukkit.block.Sign block = (org.bukkit.block.Sign) zoneSignBlock.getState(); org.bukkit.material.Sign data = (Sign) block.getData(); data.setFacingDirection(this.wall); @@ -552,10 +552,7 @@ public class ZoneLobby { } private void setBlock(Block block, TeamKind kind) { - BlockState blockState = block.getState(); - blockState.setType(kind.getBlockHead().getType()); - blockState.setData(kind.getBlockHead().getData()); - blockState.update(true); + block.setType(kind.getMaterial()); } private void placeAutoAssignGate() { diff --git a/war/src/main/java/com/tommytony/war/structure/ZoneWallGuard.java b/war/src/main/java/com/tommytony/war/structure/ZoneWallGuard.java index daedec0..e6108f7 100644 --- a/war/src/main/java/com/tommytony/war/structure/ZoneWallGuard.java +++ b/war/src/main/java/com/tommytony/war/structure/ZoneWallGuard.java @@ -29,15 +29,15 @@ public class ZoneWallGuard { public static final Material[] glassifyBlocks = { Material.AIR, Material.WATER, - Material.LONG_GRASS, + Material.TALL_GRASS, Material.VINE, - Material.WATER_LILY, - Material.YELLOW_FLOWER, - Material.RED_ROSE, + Material.LILY_PAD, + Material.DANDELION_YELLOW, + Material.ROSE_RED, Material.RED_MUSHROOM, Material.BROWN_MUSHROOM, Material.DEAD_BUSH, - Material.SUGAR_CANE_BLOCK + Material.SUGAR_CANE }; public ZoneWallGuard(Player player, War war, Warzone warzone, BlockFace wall) { diff --git a/war/src/main/java/com/tommytony/war/ui/EditLoadoutListUI.java b/war/src/main/java/com/tommytony/war/ui/EditLoadoutListUI.java index cc92828..afe325b 100644 --- a/war/src/main/java/com/tommytony/war/ui/EditLoadoutListUI.java +++ b/war/src/main/java/com/tommytony/war/ui/EditLoadoutListUI.java @@ -47,7 +47,7 @@ class EditLoadoutListUI extends ChestUI { ItemStack item; ItemMeta meta; int i = 0; - item = new ItemStack(Material.GOLD_SPADE, 1); + item = new ItemStack(Material.GOLDEN_SHOVEL, 1); meta = item.getItemMeta(); meta.setDisplayName(ChatColor.GREEN + "Create new loadout"); item.setItemMeta(meta); diff --git a/war/src/main/java/com/tommytony/war/ui/EditOrCreateZoneUI.java b/war/src/main/java/com/tommytony/war/ui/EditOrCreateZoneUI.java index 161ca6c..b604aa7 100644 --- a/war/src/main/java/com/tommytony/war/ui/EditOrCreateZoneUI.java +++ b/war/src/main/java/com/tommytony/war/ui/EditOrCreateZoneUI.java @@ -1,14 +1,11 @@ package com.tommytony.war.ui; import com.google.common.collect.ImmutableList; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.bukkit.selections.CuboidSelection; -import com.sk89q.worldedit.bukkit.selections.Selection; import com.tommytony.war.War; import com.tommytony.war.Warzone; import com.tommytony.war.command.ZoneSetter; +import com.tommytony.war.utility.Compat; import org.bukkit.ChatColor; -import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -22,7 +19,7 @@ public class EditOrCreateZoneUI extends ChestUI { @Override public void build(final Player player, Inventory inv) { int i = 0; - ItemStack item = new ItemStack(Material.WOOD_AXE, 1); + ItemStack item = new ItemStack(Material.WOODEN_AXE, 1); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(ChatColor.BOLD + "" + ChatColor.YELLOW + "Create Warzone"); meta.setLore(ImmutableList.of(ChatColor.GRAY + "Click to create a " + ChatColor.AQUA + "Warzone")); @@ -34,18 +31,17 @@ public class EditOrCreateZoneUI extends ChestUI { player.sendTitle("", ChatColor.RED + "This feature requires WorldEdit.", 10, 20, 10); return; } - player.getInventory().addItem(new ItemStack(Material.WOOD_AXE, 1)); + player.getInventory().addItem(new ItemStack(Material.WOODEN_AXE, 1)); War.war.getUIManager().getPlayerMessage(player, "Select region for zone using WorldEdit and then type a name:", new StringRunnable() { @Override public void run() { - WorldEditPlugin worldEdit = (WorldEditPlugin) War.war.getServer().getPluginManager().getPlugin("WorldEdit"); - Selection selection = worldEdit.getSelection(player); - if (selection != null && selection instanceof CuboidSelection) { - Location min = selection.getMinimumPoint(); - Location max = selection.getMaximumPoint(); + Compat.BlockPair pair = Compat.getWorldEditSelection(player); + if (pair != null) { ZoneSetter setter = new ZoneSetter(player, this.getValue()); - setter.placeCorner1(min.getBlock()); - setter.placeCorner2(max.getBlock()); + setter.placeCorner1(pair.getBlock1()); + setter.placeCorner2(pair.getBlock2()); + } else { + War.war.badMsg(player, "Invalid selection. Creation cancelled."); } } }); @@ -55,7 +51,7 @@ public class EditOrCreateZoneUI extends ChestUI { if (!War.war.isWarAdmin(player) && !zone.isAuthor(player)) { continue; } - item = new ItemStack(Material.BOOK_AND_QUILL); + item = new ItemStack(Material.WRITABLE_BOOK); meta = item.getItemMeta(); meta.setDisplayName(ChatColor.YELLOW + "" + ChatColor.BOLD + zone.getName()); meta.setLore(ImmutableList.of(ChatColor.GRAY + "Click to edit")); diff --git a/war/src/main/java/com/tommytony/war/ui/EditTeamUI.java b/war/src/main/java/com/tommytony/war/ui/EditTeamUI.java index 2836954..574bd5d 100644 --- a/war/src/main/java/com/tommytony/war/ui/EditTeamUI.java +++ b/war/src/main/java/com/tommytony/war/ui/EditTeamUI.java @@ -29,7 +29,7 @@ class EditTeamUI extends ChestUI { ItemStack item; ItemMeta meta; int i = 0; - item = new ItemStack(Material.GOLD_SPADE, 1); + item = new ItemStack(Material.GOLDEN_SHOVEL, 1); meta = item.getItemMeta(); meta.setDisplayName(ChatColor.GREEN + "Add additional spawn"); item.setItemMeta(meta); @@ -77,7 +77,7 @@ class EditTeamUI extends ChestUI { War.war.msg(player, "Team " + team.getName() + " removed."); } }); - item = new ItemStack(Material.SNOW_BALL); + item = new ItemStack(Material.SNOWBALL); meta = item.getItemMeta(); meta.setDisplayName(ChatColor.GRAY + "" + ChatColor.BOLD + "Restore Defaults"); item.setItemMeta(meta); diff --git a/war/src/main/java/com/tommytony/war/ui/EditZoneConfigUI.java b/war/src/main/java/com/tommytony/war/ui/EditZoneConfigUI.java index 3535c00..29cfb1b 100644 --- a/war/src/main/java/com/tommytony/war/ui/EditZoneConfigUI.java +++ b/war/src/main/java/com/tommytony/war/ui/EditZoneConfigUI.java @@ -28,7 +28,7 @@ public class EditZoneConfigUI extends ChestUI { int i = 0; i = UIConfigHelper.addWarzoneConfigOptions(this, player, inv, zone.getWarzoneConfig(), zone, i); - item = new ItemStack(Material.STAINED_GLASS_PANE); + item = new ItemStack(Material.WHITE_STAINED_GLASS_PANE); meta = item.getItemMeta(); meta.setDisplayName(">>>> Team Default Config >>>>"); item.setItemMeta(meta); @@ -39,7 +39,7 @@ public class EditZoneConfigUI extends ChestUI { } }); UIConfigHelper.addTeamConfigOptions(this, player, inv, zone.getTeamDefaultConfig(), null, zone, i); - item = new ItemStack(Material.SNOW_BALL); + item = new ItemStack(Material.SNOWBALL); meta = item.getItemMeta(); meta.setDisplayName(ChatColor.GRAY + "" + ChatColor.BOLD + "Restore Defaults"); item.setItemMeta(meta); diff --git a/war/src/main/java/com/tommytony/war/ui/JoinZoneUI.java b/war/src/main/java/com/tommytony/war/ui/JoinZoneUI.java index 89d1a85..71fbcce 100644 --- a/war/src/main/java/com/tommytony/war/ui/JoinZoneUI.java +++ b/war/src/main/java/com/tommytony/war/ui/JoinZoneUI.java @@ -26,12 +26,14 @@ public class JoinZoneUI extends ChestUI { ChatColor.DARK_GRAY + "Warzone doors located here")); item.setItemMeta(meta); int i = 0; - this.addItem(inv, i++, item, new Runnable() { - @Override - public void run() { - player.teleport(War.war.getWarHub().getLocation()); - } - }); + if (War.war.getWarHub() != null) { + this.addItem(inv, i++, item, new Runnable() { + @Override + public void run() { + player.teleport(War.war.getWarHub().getLocation()); + } + }); + } for (final Warzone zone : War.war.getEnabledWarzones()) { item = new ItemStack(Material.ENDER_PEARL); meta = item.getItemMeta(); diff --git a/war/src/main/java/com/tommytony/war/ui/UIConfigHelper.java b/war/src/main/java/com/tommytony/war/ui/UIConfigHelper.java index 1fd1636..6f8e88c 100644 --- a/war/src/main/java/com/tommytony/war/ui/UIConfigHelper.java +++ b/war/src/main/java/com/tommytony/war/ui/UIConfigHelper.java @@ -41,7 +41,7 @@ public class UIConfigHelper { } if (option.getConfigType() == Boolean.class) { status += config.resolveBoolean(option) ? ChatColor.GREEN + "true" : ChatColor.DARK_GRAY + "false"; - item = new Dye(config.resolveBoolean(option) ? DyeColor.LIME : DyeColor.GRAY).toItemStack(1); + item = new ItemStack(config.resolveBoolean(option) ? Material.LIME_DYE : Material.GRAY_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -55,7 +55,7 @@ public class UIConfigHelper { }); } else if (option.getConfigType() == Integer.class || option.getConfigType() == Double.class || option.getConfigType() == String.class) { status += ChatColor.LIGHT_PURPLE + config.resolveValue(option).toString(); - item = new Dye(DyeColor.PURPLE).toItemStack(1); + item = new ItemStack(Material.PURPLE_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -80,7 +80,7 @@ public class UIConfigHelper { }); } else if (option.getConfigType() == FlagReturn.class) { status += ChatColor.YELLOW + config.resolveValue(option).toString(); - item = new Dye(DyeColor.PINK).toItemStack(1); + item = new ItemStack(Material.PINK_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -103,7 +103,7 @@ public class UIConfigHelper { }); } else if (option.getConfigType() == TeamSpawnStyle.class) { status += ChatColor.YELLOW + config.resolveValue(option).toString(); - item = new Dye(DyeColor.PINK).toItemStack(1); + item = new ItemStack(Material.PINK_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -174,7 +174,7 @@ public class UIConfigHelper { } if (option.getConfigType() == Boolean.class) { status += config.getBoolean(option) ? ChatColor.GREEN + "true" : ChatColor.DARK_GRAY + "false"; - item = new Dye(config.getBoolean(option) ? DyeColor.LIME : DyeColor.GRAY).toItemStack(1); + item = new ItemStack(config.getBoolean(option) ? Material.LIME_DYE : Material.GRAY_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -188,7 +188,7 @@ public class UIConfigHelper { }); } else if (option.getConfigType() == Integer.class || option.getConfigType() == Double.class || option.getConfigType() == String.class) { status += ChatColor.LIGHT_PURPLE + config.getValue(option).toString(); - item = new Dye(DyeColor.PURPLE).toItemStack(1); + item = new ItemStack(Material.PURPLE_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -213,7 +213,7 @@ public class UIConfigHelper { }); } else if (option.getConfigType() == ScoreboardType.class) { status += ChatColor.YELLOW + config.getValue(option).toString(); - item = new Dye(DyeColor.PINK).toItemStack(1); + item = new ItemStack(Material.PINK_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).add(inheritance).build()); @@ -277,7 +277,7 @@ public class UIConfigHelper { } if (option.getConfigType() == Boolean.class) { status += config.getBoolean(option) ? ChatColor.GREEN + "true" : ChatColor.DARK_GRAY + "false"; - item = new Dye(config.getBoolean(option) ? DyeColor.LIME : DyeColor.GRAY).toItemStack(1); + item = new ItemStack(config.getBoolean(option) ? Material.LIME_DYE : Material.GRAY_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).build()); @@ -291,7 +291,7 @@ public class UIConfigHelper { }); } else if (option.getConfigType() == Integer.class || option.getConfigType() == Double.class || option.getConfigType() == String.class) { status += ChatColor.LIGHT_PURPLE + config.getValue(option).toString(); - item = new Dye(DyeColor.PURPLE).toItemStack(1); + item = new ItemStack(Material.PURPLE_DYE, 1); meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(new ImmutableList.Builder().add(desc).add(status).build()); diff --git a/war/src/main/java/com/tommytony/war/ui/WarAdminUI.java b/war/src/main/java/com/tommytony/war/ui/WarAdminUI.java index 14cdf74..12db8e4 100644 --- a/war/src/main/java/com/tommytony/war/ui/WarAdminUI.java +++ b/war/src/main/java/com/tommytony/war/ui/WarAdminUI.java @@ -19,7 +19,7 @@ public class WarAdminUI extends ChestUI { int i = 0; i = UIConfigHelper.addWarConfigOptions(this, player, inv, War.war.getWarConfig(), i); - item = new ItemStack(Material.STAINED_GLASS_PANE); + item = new ItemStack(Material.WHITE_STAINED_GLASS_PANE); meta = item.getItemMeta(); meta.setDisplayName(">>>> Warzone Default Config >>>>"); item.setItemMeta(meta); @@ -30,7 +30,7 @@ public class WarAdminUI extends ChestUI { } }); i = UIConfigHelper.addWarzoneConfigOptions(this, player, inv, War.war.getWarzoneDefaultConfig(), null, i); - item = new ItemStack(Material.STAINED_GLASS_PANE); + item = new ItemStack(Material.WHITE_STAINED_GLASS_PANE); meta = item.getItemMeta(); meta.setDisplayName(">>>> Team Default Config >>>>"); item.setItemMeta(meta); diff --git a/war/src/main/java/com/tommytony/war/ui/WarUI.java b/war/src/main/java/com/tommytony/war/ui/WarUI.java index a52447b..cea63da 100644 --- a/war/src/main/java/com/tommytony/war/ui/WarUI.java +++ b/war/src/main/java/com/tommytony/war/ui/WarUI.java @@ -47,7 +47,7 @@ public class WarUI extends ChestUI { } private ItemStack getCreateWarzoneItem() { - ItemStack item = new ItemStack(Material.WOOD_AXE, 1); + ItemStack item = new ItemStack(Material.WOODEN_AXE, 1); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(ChatColor.YELLOW + "" + ChatColor.BOLD + "Create Warzone"); meta.setLore(ImmutableList.of(ChatColor.GRAY + "Click to create, or edit a " + ChatColor.AQUA + "Warzone" + ChatColor.GRAY + ".")); @@ -66,7 +66,7 @@ public class WarUI extends ChestUI { } private ItemStack getWarAdminItem() { - ItemStack item = new ItemStack(Material.EYE_OF_ENDER, 1); + ItemStack item = new ItemStack(Material.ENDER_EYE, 1); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(ChatColor.DARK_RED + "" + ChatColor.BOLD + "Manage War"); meta.setLore(ImmutableList.of(ChatColor.GRAY + "Click to display " + ChatColor.DARK_RED + "Admin" + ChatColor.GRAY + " access panel", diff --git a/war/src/main/java/com/tommytony/war/utility/Compat.java b/war/src/main/java/com/tommytony/war/utility/Compat.java new file mode 100644 index 0000000..956299f --- /dev/null +++ b/war/src/main/java/com/tommytony/war/utility/Compat.java @@ -0,0 +1,69 @@ +package com.tommytony.war.utility; + +import com.sk89q.worldedit.IncompleteRegionException; +import com.sk89q.worldedit.LocalSession; +import com.sk89q.worldedit.WorldEdit; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.bukkit.BukkitPlayer; +import com.sk89q.worldedit.regions.CuboidRegion; +import com.sk89q.worldedit.regions.Region; +import com.tommytony.war.War; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.Damageable; +import org.bukkit.inventory.meta.ItemMeta; + +/** + * Simple fixes to account for removed Bukkit functionality + */ +public class Compat { + public static ItemStack createDamagedIS(Material mat, int amount, int damage) { + ItemStack is = new ItemStack(mat, amount); + ItemMeta meta = is.getItemMeta(); + ((Damageable) meta).setDamage(damage); // hope this works + is.setItemMeta(meta); + return is; + } + + public static class BlockPair { + final Block block1; + final Block block2; + + BlockPair(Block block1, Block block2) { + this.block1 = block1; + this.block2 = block2; + } + + public Block getBlock1() { + return block1; + } + + public Block getBlock2() { + return block2; + } + } + + public static BlockPair getWorldEditSelection(Player player) { + if (!War.war.getServer().getPluginManager().isPluginEnabled("WorldEdit")) { + return null; + } + BukkitPlayer wp = BukkitAdapter.adapt(player); + LocalSession session = WorldEdit.getInstance().getSessionManager().get(wp); + try { + Region selection = session.getSelection(wp.getWorld()); + if (selection instanceof CuboidRegion) { + return new BlockPair( + player.getWorld().getBlockAt(selection.getMinimumPoint().getBlockX(), selection.getMinimumPoint().getBlockY(), selection.getMinimumPoint().getBlockZ()), + player.getWorld().getBlockAt(selection.getMaximumPoint().getBlockX(), selection.getMaximumPoint().getBlockY(), selection.getMaximumPoint().getBlockZ()) + ); + } + return null; + } catch (IncompleteRegionException e) { + return null; + } + + } + +} diff --git a/war/src/main/java/com/tommytony/war/volume/Volume.java b/war/src/main/java/com/tommytony/war/volume/Volume.java index c4beea6..595556a 100644 --- a/war/src/main/java/com/tommytony/war/volume/Volume.java +++ b/war/src/main/java/com/tommytony/war/volume/Volume.java @@ -261,63 +261,6 @@ public class Volume { } } - public void replaceMaterial(Material original, Material replacement) { - Validate.isTrue(this.hasTwoCorners(), "Incomplete volume"); - for (int x = this.getMinX(); x <= this.getMaxX(); x++) { - for (int y = this.getMinY(); y <= this.getMaxY(); y++) { - for (int z = this.getMinZ(); z <= this.getMaxZ(); z++) { - if (this.getWorld().getBlockAt(x, y, z).getType() == original) { - this.getWorld().getBlockAt(x, y, z).setType(replacement); - } - } - } - } - } - - public void replaceMaterials(Material[] materials, Material replacement) { - for (Material mat: materials) { - this.replaceMaterial(mat, replacement); - } - } - - public void clearBlocksThatDontFloat() { - Validate.isTrue(this.hasTwoCorners(), "Incomplete volume"); - for (int x = this.getMinX(); x <= this.getMaxX(); x++) { - for (int y = this.getMinY(); y <= this.getMaxY(); y++) { - for (int z = this.getMinZ(); z <= this.getMaxZ(); z++) { - switch (this.getWorld().getBlockAt(x, y, z).getType()) { - case SIGN_POST: - case WALL_SIGN: - case IRON_DOOR: - case WOOD_DOOR: - case LADDER: - case YELLOW_FLOWER: - case RED_ROSE: - case RED_MUSHROOM: - case BROWN_MUSHROOM: - case SAPLING: - case TORCH: - case RAILS: - case STONE_BUTTON: - case STONE_PLATE: - case WOOD_PLATE: - case LEVER: - case REDSTONE: - case REDSTONE_TORCH_ON: - case REDSTONE_TORCH_OFF: - case CACTUS: - case SNOW: - case ICE: - this.getWorld().getBlockAt(x, y, z) - .setType(Material.AIR); - default: - break; - } - } - } - } - } - @Override public void finalize() { this.blocks.clear(); diff --git a/war/src/main/resources/plugin.yml b/war/src/main/resources/plugin.yml index a9dd0c2..fb52a82 100644 --- a/war/src/main/resources/plugin.yml +++ b/war/src/main/resources/plugin.yml @@ -1,5 +1,6 @@ name: ${project.name} version: ${project.version} +api-version: 1.13 description: ${project.description} author: tommytony website: ${project.url}