From fe949b96619c579ae51559b506d232d311d049ff Mon Sep 17 00:00:00 2001 From: gomeow Date: Thu, 7 Mar 2013 07:38:16 -0800 Subject: [PATCH] Add /pvdel --- src/me/shock/playervaults/Main.java | 1 + .../shock/playervaults/commands/Commands.java | 33 ++++++++++++------- .../shock/playervaults/commands/Feedback.java | 20 ++++++++--- .../commands/VaultOperations.java | 21 ++++++++++-- .../playervaults/util/Serialization.java | 5 ++- 5 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/me/shock/playervaults/Main.java b/src/me/shock/playervaults/Main.java index e6006e3..f64305b 100644 --- a/src/me/shock/playervaults/Main.java +++ b/src/me/shock/playervaults/Main.java @@ -31,6 +31,7 @@ public class Main extends JavaPlugin { PluginManager pm = getServer().getPluginManager(); pm.registerEvents(new Listeners(this), this); getCommand("pv").setExecutor(new Commands()); + getCommand("pvdel").setExecutor(new Commands()); loadConfig(); loadLang(); startMetrics(); diff --git a/src/me/shock/playervaults/commands/Commands.java b/src/me/shock/playervaults/commands/Commands.java index 31c6222..1016b92 100644 --- a/src/me/shock/playervaults/commands/Commands.java +++ b/src/me/shock/playervaults/commands/Commands.java @@ -18,25 +18,34 @@ public class Commands implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("pv")) { - switch(args.length) { - case 1: - if(sender instanceof Player) { + if(sender instanceof Player) { + switch(args.length) { + case 1: if(VaultOperations.openOwnVault(sender, args[0])) inVault.put(sender.getName(), new VaultViewInfo(sender.getName(), Integer.parseInt(args[0]))); - } - else sender.sendMessage(pv + "Sorry but that can only be run by a player!"); - break; - case 2: - if(sender instanceof Player) { + break; + case 2: if(VaultOperations.openOtherVault(sender,args[0], args[1])) { inVault.put(sender.getName(), new VaultViewInfo(args[0], Integer.parseInt(args[1]))); } + break; + default: + Feedback.showHelp(sender, Feedback.Type.OPEN); } - else sender.sendMessage(pv + "Sorry but that can only be run by a player!"); - break; - default: - Feedback.showHelp(sender); } + else sender.sendMessage(pv + "Sorry but that can only be run by a player!"); + } + else if(cmd.getName().equalsIgnoreCase("pvdel")) { + if(sender instanceof Player) { + switch(args.length) { + case 1: + VaultOperations.deleteOwnVault(sender, args[0]); + break; + default: + Feedback.showHelp(sender, Feedback.Type.DELETE); + } + } + else sender.sendMessage(pv + "Sorry but that can only be run by a player!"); } return true; } diff --git a/src/me/shock/playervaults/commands/Feedback.java b/src/me/shock/playervaults/commands/Feedback.java index 4d6f51d..e6708ec 100644 --- a/src/me/shock/playervaults/commands/Feedback.java +++ b/src/me/shock/playervaults/commands/Feedback.java @@ -3,8 +3,14 @@ package me.shock.playervaults.commands; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; + public class Feedback { - + public enum Type { + OPEN, + DELETE, + WORKBENCH, //For later versions + FURNACE; + } static String pv = ChatColor.DARK_RED + "[" + ChatColor.WHITE + "PlayerVaults" + ChatColor.DARK_RED + "]" + ChatColor.WHITE + ": "; @@ -14,9 +20,15 @@ public class Feedback { } - public static void showHelp(CommandSender sender) { - sender.sendMessage(pv + "/vault "); - sender.sendMessage(pv + "/vault delete "); + public static void showHelp(CommandSender sender, Type t) { + if(t == Type.OPEN) { + sender.sendMessage(pv + "/pv "); + sender.sendMessage(pv + "/pv "); + } + else if(t == Type.DELETE) { + sender.sendMessage(pv + "/pvdel "); + sender.sendMessage(pv + "/pvdel "); + } } public static void badWorld(CommandSender sender) { diff --git a/src/me/shock/playervaults/commands/VaultOperations.java b/src/me/shock/playervaults/commands/VaultOperations.java index 2809084..0a3829c 100644 --- a/src/me/shock/playervaults/commands/VaultOperations.java +++ b/src/me/shock/playervaults/commands/VaultOperations.java @@ -1,5 +1,7 @@ package me.shock.playervaults.commands; +import java.io.IOException; + import me.shock.playervaults.Main; import me.shock.playervaults.util.VaultManager; @@ -52,8 +54,7 @@ public class VaultOperations { number = Integer.parseInt(arg); } catch(NumberFormatException nfe) { - //Yell at the player - //We should probably check perms first though + sender.sendMessage(pv+ChatColor.RED+"You need to specify a number!"); } if(sender.hasPermission("playervaults.admin")) { vm.loadVault(sender, user, number); @@ -65,6 +66,22 @@ public class VaultOperations { } return false; } + public static void deleteOwnVault(CommandSender sender, String arg) { + if(arg.matches("^[0-9]{1,2}$")) { + int number = 0; + try { + number = Integer.parseInt(arg); + } + catch(NumberFormatException nfe) { + sender.sendMessage(pv+ChatColor.RED+"You need to specify a number!"); + } + try { + vm.deleteVault(sender, sender.getName(), number); + } catch (IOException e) { + sender.sendMessage(pv+"There was an error deleting the vault!"); + } + } + } @SuppressWarnings("unused") private static boolean allowedWorld(Player player) { diff --git a/src/me/shock/playervaults/util/Serialization.java b/src/me/shock/playervaults/util/Serialization.java index 2d9ed02..8258196 100644 --- a/src/me/shock/playervaults/util/Serialization.java +++ b/src/me/shock/playervaults/util/Serialization.java @@ -4,18 +4,17 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; - -import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; import net.minecraft.server.v1_4_R1.NBTBase; import net.minecraft.server.v1_4_R1.NBTTagCompound; import net.minecraft.server.v1_4_R1.NBTTagList; - + import org.bukkit.ChatColor; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftInventoryCustom; import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftItemStack; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; public class Serialization {