diff --git a/pom.xml b/pom.xml index de9332e..cb914b7 100644 --- a/pom.xml +++ b/pom.xml @@ -70,11 +70,6 @@ bukkit LATEST - - org.bukkit - craftbukkit - LATEST - junit junit @@ -83,9 +78,8 @@ com.sk89q - sk89q-command-framework - 0.3 - jar + command-framework-bukkit + 0.5-SNAPSHOT diff --git a/src/com/oresomecraft/mapdev/Commands.java b/src/com/oresomecraft/mapdev/Commands.java index d8d078f..a331beb 100644 --- a/src/com/oresomecraft/mapdev/Commands.java +++ b/src/com/oresomecraft/mapdev/Commands.java @@ -3,7 +3,6 @@ import com.oresomecraft.mapdev.generators.NullChunkGenerator; import com.sk89q.minecraft.util.commands.Command; import com.sk89q.minecraft.util.commands.CommandContext; -import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissions; import org.bukkit.*; import org.bukkit.command.CommandSender; @@ -155,14 +154,14 @@ public void members(CommandContext args, CommandSender sender) { } } - @Command(aliases = {"loadworld", "createworld"}, + @Command(aliases = {"loadworld", "createworld", "lw"}, usage = "", desc = "Loads or creates a world.", min = 1, max = 1, flags = "tn") @CommandPermissions({"mapdev.loadworld"}) - public void loadWorld(CommandContext args, CommandSender sender) throws CommandException { + public void loadWorld(CommandContext args, CommandSender sender) { WorldUtil.loadOrCreateWorld(args.getString(0).toLowerCase(), !args.hasFlag('n')); if (args.hasFlag('t')) { @@ -173,13 +172,13 @@ public void loadWorld(CommandContext args, CommandSender sender) throws CommandE sender.sendMessage(ChatColor.DARK_AQUA + "Created/loaded world " + ChatColor.AQUA + args.getString(0).toLowerCase()); } - @Command(aliases = {"unloadworld"}, + @Command(aliases = {"unloadworld", "ulw"}, usage = "", desc = "Unloads a world.", min = 1, max = 1) @CommandPermissions({"mapdev.unloadworld"}) - public void unloadWorld(CommandContext args, CommandSender sender) throws CommandException { + public void unloadWorld(CommandContext args, CommandSender sender) { if (WorldUtil.unloadWorld(args.getString(0).toLowerCase())) sender.sendMessage(ChatColor.DARK_AQUA + "Unloaded world " + ChatColor.AQUA + args.getString(0).toLowerCase()); else @@ -192,7 +191,7 @@ public void unloadWorld(CommandContext args, CommandSender sender) throws Comman min = 1, max = 1) @CommandPermissions({"mapdev.loadworldfromrepo"}) - public void loadWorldFromRepo(CommandContext args, CommandSender sender) throws CommandException { + public void loadWorldFromRepo(CommandContext args, CommandSender sender) { if (WorldUtil.loadWorldFromRepo(args.getString(0).toLowerCase())) sender.sendMessage(ChatColor.DARK_AQUA + "Copied and loaded world " + ChatColor.AQUA + args.getString(0).toLowerCase() + ChatColor.DARK_AQUA + " from maps repository!"); else { @@ -206,7 +205,7 @@ public void loadWorldFromRepo(CommandContext args, CommandSender sender) throws desc = "Sends a message only to those in a world", min = 1) @CommandPermissions({"mapdev.loadworldfromrepo"}) - public void wc(CommandContext args, CommandSender sender) throws CommandException { + public void wc(CommandContext args, CommandSender sender) { if (sender instanceof ConsoleCommandSender) { sender.sendMessage(ChatColor.RED + "Console can't do this."); return; @@ -223,7 +222,7 @@ public void wc(CommandContext args, CommandSender sender) throws CommandExceptio min = 1, max = 1) @CommandPermissions({"mapdev.putworldinrepo"}) - public void putWorldInRepo(CommandContext args, CommandSender sender) throws CommandException { + public void putWorldInRepo(CommandContext args, CommandSender sender) { if (WorldUtil.putMapInRepo(args.getString(0).toLowerCase())) sender.sendMessage(ChatColor.DARK_AQUA + "Copied and put world " + ChatColor.AQUA + args.getString(0).toLowerCase() + ChatColor.DARK_AQUA + " into the maps repository!"); else sender.sendMessage(ChatColor.RED + "Couldn't copy world into maps repo! Did you misspell the world?"); @@ -235,7 +234,7 @@ public void putWorldInRepo(CommandContext args, CommandSender sender) throws Com min = 1, max = 1) @CommandPermissions({"mapdev.discardworld"}) - public void discardWorld(CommandContext args, CommandSender sender) throws CommandException { + public void discardWorld(CommandContext args, CommandSender sender) { if (WorldUtil.discardWorld(args.getString(0).toLowerCase())) { sender.sendMessage(ChatColor.DARK_AQUA + "Deleted and unloaded " + ChatColor.AQUA + args.getString(0).toLowerCase()); } else { @@ -244,12 +243,12 @@ public void discardWorld(CommandContext args, CommandSender sender) throws Comma } @Command(aliases = {"renameworld"}, - usage = " ", + usage = " ", desc = "Copies, renames & loads a world", flags = "d", min = 2, max = 2) @CommandPermissions({"mapdev.renameworld"}) - public void renameWorld(CommandContext args, CommandSender sender) throws CommandException { + public void renameWorld(CommandContext args, CommandSender sender) { try { Bukkit.getWorld(args.getString(0)).save(); WorldUtil.copyFolder(new File(args.getString(0)), new File(args.getString(1))); @@ -267,8 +266,7 @@ public void renameWorld(CommandContext args, CommandSender sender) throws Comman sender.sendMessage(ChatColor.RED + "Something went wrong. Perhaps that world doesn't exist?"); return; } - e.printStackTrace(); - //Love, why didn't the world copy? + sender.sendMessage(ChatColor.RED + "You specified an invalid file or an invalid name!"); } if (args.hasFlag('d')) { Bukkit.dispatchCommand(sender, "worldtp " + args.getString(1)); @@ -282,7 +280,7 @@ public void renameWorld(CommandContext args, CommandSender sender) throws Comman @Command(aliases = {"listmapsrepo"}, desc = "Lists all maps in the defined repo") @CommandPermissions({"mapdev.listmaps"}) - public void listMaps(CommandContext args, CommandSender sender) throws CommandException { + public void listMaps(CommandContext args, CommandSender sender) { int page = 1; if (args.argsLength() == 1) { try { @@ -293,14 +291,12 @@ public void listMaps(CommandContext args, CommandSender sender) throws CommandEx } } ArrayList worlds = new ArrayList(); - for (File f : new File(WorldUtil.MAPS_REPO).listFiles()) { - if (f.isDirectory() && !(Arrays.asList(WorldUtil.disallowedFiles).contains(f.getName()))) { + for (File f : new File(WorldUtil.MAPS_REPO).listFiles()) + if (f.isDirectory() && !(Arrays.asList(WorldUtil.disallowedFiles).contains(f.getName()))) worlds.add(f.getName()); - } - } int maxPage = page * 10; int i = maxPage - 10; - sender.sendMessage(ChatColor.GOLD + "Maps Repo List (Page " + page + ")"); + sender.sendMessage(ChatColor.DARK_AQUA + "Maps Repo List (Page " + page + ")"); //10 per page, so if it's page 2 it will check the array-list from 10-20. boolean stopCheck = false; while (i < maxPage && !stopCheck) { @@ -313,34 +309,33 @@ public void listMaps(CommandContext args, CommandSender sender) throws CommandEx stopCheck = true; } } - sender.sendMessage(ChatColor.GOLD + "To see next page, type '/listmaps " + (page + 1) + "'"); + sender.sendMessage(ChatColor.DARK_AQUA + "To see next page, type '/listmaps " + (page + 1) + "'"); } @Command(aliases = {"listmaps"}, - desc = "Lists all maps ever created on the dev") + desc = "Lists all maps in the world container") @CommandPermissions({"mapdev.listmaps"}) - public void listMaps2(CommandContext args, CommandSender sender) throws CommandException { + public void listMaps2(CommandContext args, CommandSender sender) { int page = 1; if (args.argsLength() == 1) { try { page = Integer.parseInt(args.getString(0)); + if (page < 1 || page > 100) throw new NumberFormatException("Number is too high or too low!"); } catch (NumberFormatException e) { - sender.sendMessage(ChatColor.RED + "That is not a number!"); + sender.sendMessage(ChatColor.RED + "Invalid number!"); return; } } ArrayList worlds = new ArrayList(); - for (File f : Bukkit.getWorldContainer().listFiles()) { - if (f.isDirectory() && !(Arrays.asList(WorldUtil.disallowedFiles).contains(f.getName()))) { + for (File f : Bukkit.getWorldContainer().listFiles()) + if (f.isDirectory() && !(Arrays.asList(WorldUtil.disallowedFiles).contains(f.getName()))) worlds.add(f.getName()); - } - } int maxPage = page * 10; int i = maxPage - 10; - sender.sendMessage(ChatColor.GOLD + "Maps List (Page " + page + ")"); + sender.sendMessage(ChatColor.DARK_AQUA + "Maps List (Page " + page + ")"); //10 per page, so if it's page 2 it will check the array-list from 10-20. boolean stopCheck = false; - while (i < maxPage && !stopCheck) { + while (i < maxPage && !stopCheck) try { sender.sendMessage(ChatColor.DARK_AQUA + "- " + ChatColor.AQUA + worlds.get(i)); i++; @@ -349,71 +344,79 @@ public void listMaps2(CommandContext args, CommandSender sender) throws CommandE i++; stopCheck = true; } - } - sender.sendMessage(ChatColor.GOLD + "To see next page, type '/listmaps " + (page + 1) + "'"); + sender.sendMessage(ChatColor.DARK_AQUA + "To see next page, type '/listmaps " + (page + 1) + "'"); } - @Command(aliases = {"worldtp"}, + @Command(aliases = {"worldtp", "wtp"}, usage = "", desc = "Teleports you to a world.") @CommandPermissions({"mapdev.worldtp"}) - public void worldtp(CommandContext args, CommandSender sender) throws CommandException { - if (sender instanceof Player) { - Player p = (Player) sender; - if (args.argsLength() < 1) { - sender.sendMessage(ChatColor.RED + "Correct usage: /worldtp "); + public void worldtp(CommandContext args, CommandSender sender) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Error: You must be a player."); + return; + } + Player p = (Player) sender; + if (args.argsLength() < 1) { + sender.sendMessage(ChatColor.RED + "Correct usage: /worldtp "); + } else { + if (Bukkit.getWorld(args.getString(0)) != null) { + p.teleport(Bukkit.getWorld(args.getString(0)).getSpawnLocation()); } else { - if (Bukkit.getWorld(args.getString(0)) != null) { - p.teleport(Bukkit.getWorld(args.getString(0)).getSpawnLocation()); - } else { - p.sendMessage(ChatColor.RED + "The map you specified doesn't exist or isn't loaded!"); - } + p.sendMessage(ChatColor.RED + "The map you specified doesn't exist or isn't loaded!"); } - } else { - sender.sendMessage("You must be a player to use this command!"); } } - @Command(aliases = {"worldsetspawn"}, + @Command(aliases = {"worldsetspawn", "wss"}, desc = "Sets spawn for a world.") @CommandPermissions({"mapdev.worldsetspawn"}) - public void worldSetSpawn(CommandContext args, CommandSender sender) throws CommandException { - if (sender instanceof Player) { - Player p = (Player) sender; - World world = p.getWorld(); - world.setSpawnLocation((int) p.getLocation().getX(), (int) p.getLocation().getY(), (int) p.getLocation().getZ()); - sender.sendMessage(ChatColor.AQUA + "Set spawn point for world '" + p.getWorld().getName() + "'"); - } else { - sender.sendMessage("You must be a player to use this command!"); + public void worldSetSpawn(CommandContext args, CommandSender sender) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Error: You must be a player."); + return; } + + Player p = (Player) sender; + World world = p.getWorld(); + world.setSpawnLocation((int) p.getLocation().getX(), (int) p.getLocation().getY(), (int) p.getLocation().getZ()); + sender.sendMessage(ChatColor.AQUA + "Set spawn point for world '" + p.getWorld().getName() + "'"); } - @Command(aliases = {"terraform", "tf"}, - usage = "/terraform", - desc = "Adds Terraforming tools to your inventory.", - flags = "l") + @Command(aliases = {"modify", "mf", "terraform", "tf"}, + desc = "Adds Modification tools to your inventory.", + flags = "la") @CommandPermissions({"mapdev.terraform"}) - public void terraform(CommandContext args, CommandSender sender) throws CommandException { - if (sender instanceof Player) { - Player p = (Player) sender; - p.getInventory().clear(); - p.getInventory().setItem(0, new ItemStack(Material.COMPASS)); - p.getInventory().setItem(1, new ItemStack(Material.WOOD_AXE)); - p.getInventory().setItem(2, new ItemStack(Material.ARROW)); - p.getInventory().setItem(3, new ItemStack(Material.DIRT)); - p.getInventory().setItem(4, new ItemStack(Material.STONE)); - p.getInventory().setItem(5, new ItemStack(Material.DIAMOND_PICKAXE)); + public void terraform(CommandContext args, CommandSender sender) { + if (!(sender instanceof Player)) { + sender.sendMessage(ChatColor.RED + "Error: You must be a player."); + return; + } - if (args.hasFlag('l')) { - p.getInventory().setItem(6, new ItemStack(Material.GRASS)); - p.getInventory().setItem(7, new ItemStack(Material.SAND)); - p.getInventory().setItem(8, new ItemStack(Material.LEATHER_HELMET)); - p.sendMessage(ChatColor.DARK_AQUA + "Inventory replaced with Leet TerraForming tools!"); - } else { - p.sendMessage(ChatColor.DARK_AQUA + "Inventory replaced with TerraForming tools!"); - } + Player p = (Player) sender; + p.getInventory().clear(); + p.getInventory().setItem(0, new ItemStack(Material.COMPASS)); + p.getInventory().setItem(1, new ItemStack(Material.WOOD_AXE)); + p.getInventory().setItem(2, new ItemStack(Material.ARROW)); + p.getInventory().setItem(3, new ItemStack(Material.DIRT)); + p.getInventory().setItem(4, new ItemStack(Material.STONE)); + p.getInventory().setItem(5, new ItemStack(Material.DIAMOND_PICKAXE)); + p.getInventory().setItem(8, Util.setName(new ItemStack(Material.NETHER_STAR, 1), ChatColor.BLUE + "Manage World")); + + if (args.hasFlag('l')) { + p.getInventory().setItem(6, new ItemStack(Material.GRASS)); + p.getInventory().setItem(7, new ItemStack(Material.SAND)); + p.sendMessage(ChatColor.DARK_AQUA + "Inventory replaced with Elite Modification tools!"); + } else if (args.hasFlag('a')) { + p.getInventory().setItem(0, new ItemStack(Material.COMPASS)); + p.getInventory().setItem(3, new ItemStack(Material.INK_SACK, 1, (byte) 15)); + p.getInventory().setItem(4, new ItemStack(Material.GRASS)); + p.getInventory().setItem(5, new ItemStack(Material.STONE)); + p.getInventory().setItem(6, new ItemStack(Material.CAKE)); + p.getInventory().setItem(7, new ItemStack(Material.HUGE_MUSHROOM_2, 1, (byte) 90)); + p.sendMessage(ChatColor.DARK_AQUA + "Inventory replaced with Advanced Modification tools!"); } else { - sender.sendMessage("You must be a player to use this command!"); + p.sendMessage(ChatColor.DARK_AQUA + "Inventory replaced with Modification tools!"); } } } diff --git a/src/com/oresomecraft/mapdev/MapDevPlugin.java b/src/com/oresomecraft/mapdev/MapDevPlugin.java index 4a3278b..f9fcce2 100644 --- a/src/com/oresomecraft/mapdev/MapDevPlugin.java +++ b/src/com/oresomecraft/mapdev/MapDevPlugin.java @@ -3,7 +3,6 @@ import com.sk89q.bukkit.util.CommandsManagerRegistration; import com.sk89q.minecraft.util.commands.*; import org.bukkit.ChatColor; -import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; @@ -26,12 +25,12 @@ public MapDevPlugin() { public void onDisable() { PluginDescriptionFile pdfFile = getDescription(); - this.logger.info(pdfFile.getName() + " is now disabled"); + this.logger.info("[MapDevPlugin] " + pdfFile.getName() + " is now disabled!"); } public void onEnable() { PluginDescriptionFile pdfFile = getDescription(); - this.logger.info(pdfFile.getName() + " version " + pdfFile.getVersion() + " is now enabled"); + this.logger.info("[MapDevPlugin] " + pdfFile.getName() + " version " + pdfFile.getVersion() + " is now enabled!"); getServer().getPluginManager().registerEvents(this, this); getServer().getPluginManager().registerEvents(new WorldListener(this), this); registerCommands(); @@ -50,7 +49,6 @@ public static MapDevPlugin getInstance() { */ private CommandsManager commands; - private boolean opPermissions; private void registerCommands() { final MapDevPlugin plugin = this; @@ -95,27 +93,9 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String public boolean hasPermission(CommandSender sender, String perm) { if (!(sender instanceof Player)) { if (sender.hasPermission(perm)) { - return ((sender.isOp() && (opPermissions || sender instanceof ConsoleCommandSender))); + return ((sender.isOp() || sender instanceof ConsoleCommandSender)); } } - return hasPermission(sender, ((Player) sender).getWorld(), perm); - } - - public boolean hasPermission(CommandSender sender, World world, String perm) { - return ((sender.isOp() && opPermissions) || sender instanceof ConsoleCommandSender || sender.hasPermission(perm)); - } - - public void checkPermission(CommandSender sender, String perm) - throws CommandPermissionsException { - if (!hasPermission(sender, perm)) { - throw new CommandPermissionsException(); - } - } - - public void checkPermission(CommandSender sender, World world, String perm) - throws CommandPermissionsException { - if (!hasPermission(sender, world, perm)) { - throw new CommandPermissionsException(); - } + return sender.hasPermission(perm); } } diff --git a/src/com/oresomecraft/mapdev/Util.java b/src/com/oresomecraft/mapdev/Util.java index ec95f08..6885229 100644 --- a/src/com/oresomecraft/mapdev/Util.java +++ b/src/com/oresomecraft/mapdev/Util.java @@ -1,25 +1,49 @@ package com.oresomecraft.mapdev; -import org.bukkit.entity.Player; +import org.bukkit.ChatColor; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.List; +/** + * Manages Inventory and privacy settings. + * + * @author AnomalousRei + */ public class Util { private static MapDevPlugin plugin = MapDevPlugin.getInstance(); + /** + * Sets a world as private. + * + * @param name The name of the world. + * @param owner The owner of the private world. + */ public static void setPrivateWorld(String name, String owner) { plugin.getConfig().set("worlds." + name + ".owner", owner); plugin.getConfig().set("worlds." + name + ".members", new ArrayList()); plugin.saveConfig(); } + /** + * Publicises a private world. + * + * @param name The world to make public again. + */ public static void unsetPrivateWorld(String name) { plugin.getConfig().set("worlds." + name, null); plugin.saveConfig(); } + /** + * Removes a member from a private world. + * + * @param world The world to remove the player from. + * @param player The player to remove. + */ public static void removeMember(String world, String player) { List temp = plugin.getConfig().getStringList("worlds." + world + ".members"); if (temp.contains(player)) temp.remove(player); @@ -27,6 +51,12 @@ public static void removeMember(String world, String player) { plugin.saveConfig(); } + /** + * Adds a member to a private world. + * + * @param world The world to add the player to. + * @param player The player to add. + */ public static void addMember(String world, String player) { List temp = plugin.getConfig().getStringList("worlds." + world + ".members"); if (!temp.contains(player)) temp.add(player); @@ -34,17 +64,51 @@ public static void addMember(String world, String player) { plugin.saveConfig(); } + /** + * Checks if a player is a member of a private world. + * + * @param world The world to check. + * @param player The player to check. + * @return Whether the player is a member of the private world. + */ public static boolean isMember(String world, String player) { List temp = plugin.getConfig().getStringList("worlds." + world + ".members"); if (temp.contains(player)) return true; return (plugin.getConfig().getString("worlds." + world + ".owner").equals(player)); } + + /** + * Gets the members of a defined world. + * + * @param world The world to check. + * @return The members in said world. + */ public static List getMembers(String world) { return plugin.getConfig().getStringList("worlds." + world + ".members"); } + /** + * Checks if a world is private. + * + * @param world The world to check. + * @return Whether the world is private. + */ public static boolean isPrivate(String world) { return plugin.getConfig().contains("worlds." + world); } + + /** + * Sets an ItemStack's display name. + * + * @param item The ItemStack to update. + * @param name The display name to set. + * @return The resulting ItemStack. + */ + public static ItemStack setName(ItemStack item, String name) { + ItemMeta meta = item.clone().getItemMeta(); + meta.setDisplayName((ChatColor.stripColor(name).equals(name) ? ChatColor.WHITE : "") + name); + item.setItemMeta(meta); + return item.clone(); + } } diff --git a/src/com/oresomecraft/mapdev/WorldListener.java b/src/com/oresomecraft/mapdev/WorldListener.java index 32a6e59..bdd6200 100644 --- a/src/com/oresomecraft/mapdev/WorldListener.java +++ b/src/com/oresomecraft/mapdev/WorldListener.java @@ -1,11 +1,17 @@ package com.oresomecraft.mapdev; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; public class WorldListener implements Listener { @@ -15,23 +21,76 @@ public WorldListener(MapDevPlugin pl) { plugin = pl; } + /** + * Handles world privacy. + * + * @param event An event called by the server. + */ @EventHandler public void onTeleport(PlayerTeleportEvent event) { World fromWorld = event.getFrom().getWorld(); World toWorld = event.getTo().getWorld(); - Player p = event.getPlayer(); + Player target = event.getPlayer(); if (toWorld != fromWorld) { if (Util.isPrivate(toWorld.getName())) { - if (Util.isMember(toWorld.getName(), p.getName()) || p.hasPermission("mapdev.staff")) { - if (p.hasPermission("mapdev.staff")) { - p.sendMessage(ChatColor.RED + "[WARNING] This world is private, but you bypassed it with your permissions!"); - } - p.sendMessage(ChatColor.GREEN + "This world is private, but you are allowed in!"); - } else { - p.sendMessage(ChatColor.RED + "That world is private, you cannot go into it!"); + if (!Util.isMember(toWorld.getName(), target.getName()) && !target.hasPermission("mapdev.staff")) { + target.sendMessage(ChatColor.RED + "That world is private, you cannot go into it!"); event.setCancelled(true); } } } } + + /** + * Handles World Management tool. + * + * @param event An event called by the server. + */ + @EventHandler + public void onInteract(PlayerInteractEvent event) { + Player target = event.getPlayer(); + ItemStack hand = target.getItemInHand(); + if (!hand.hasItemMeta() || !hand.getItemMeta().hasDisplayName()) return; + if (ChatColor.stripColor(hand.getItemMeta().getDisplayName()).equals("Manage World")) { + Inventory abInv = Bukkit.createInventory(null, 9, "What would you like to do?"); + abInv.setItem(2, Util.setName(new ItemStack(Material.IRON_FENCE, 1), ChatColor.RED + "Make World Private (MAPDEV ONLY)")); + abInv.setItem(3, Util.setName(new ItemStack(Material.COMPASS, 1), ChatColor.RED + "Set Spawnpoint")); + abInv.setItem(4, Util.setName(new ItemStack(Material.TNT, 1), ChatColor.RED + "Discard World (MAPDEV ONLY)")); + abInv.setItem(5, Util.setName(new ItemStack(Material.BED, 1), ChatColor.RED + "Unload World")); + abInv.setItem(6, Util.setName(new ItemStack(Material.CHEST, 1), ChatColor.RED + "Put World in Repo (MAPDEV ONLY)")); + target.closeInventory(); + target.openInventory(abInv); + } + } + + /** + * Handles World Management tool selection. + * + * @param event An event called by the server. + */ + @EventHandler + public void onClick(InventoryClickEvent event) { + if (!event.getInventory().getName().equals("What would you like to do?")) return; + if (event.getCurrentItem() == null) return; + if (!event.getCurrentItem().hasItemMeta() || !event.getCurrentItem().getItemMeta().hasDisplayName()) return; + String meta = ChatColor.stripColor(event.getCurrentItem().getItemMeta().getDisplayName()); + Player target = (Player) event.getWhoClicked(); + String world = target.getWorld().getName(); + if (meta.equals("Make World Private (MAPDEV ONLY)")) { + target.closeInventory(); + target.performCommand("privacy set " + world + " " + target.getName()); + } else if (meta.equals("Set Spawnpoint")) { + target.closeInventory(); + target.performCommand("worldsetspawn"); + } else if (meta.equals("Discard World (MAPDEV ONLY)")) { + target.closeInventory(); + target.performCommand("discardworld " + world); + } else if (meta.equals("Unload World")) { + target.closeInventory(); + target.performCommand("unloadworld " + world); + } else if (meta.equals("Put World in Repo (MAPDEV ONLY)")) { + target.closeInventory(); + target.performCommand("putworldinrepo " + world); + } + } }