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);
+ }
+ }
}