From 93b8cb588bf2f0bedc646b2295674c15d062fff9 Mon Sep 17 00:00:00 2001 From: gomeow Date: Tue, 5 Mar 2013 17:53:01 -0800 Subject: [PATCH] Do a bunch of cleanup and add /pv <#> --- src/me/shock/playervaults/Listeners.java | 8 ++-- .../shock/playervaults/commands/Commands.java | 38 +++++++++------- .../{OwnVault.java => VaultOperations.java} | 44 ++++++++++++------- .../playervaults/commands/VaultViewInfo.java | 21 +++++++++ .../shock/playervaults/util/VaultManager.java | 17 ++++--- 5 files changed, 83 insertions(+), 45 deletions(-) rename src/me/shock/playervaults/commands/{OwnVault.java => VaultOperations.java} (59%) create mode 100644 src/me/shock/playervaults/commands/VaultViewInfo.java diff --git a/src/me/shock/playervaults/Listeners.java b/src/me/shock/playervaults/Listeners.java index 33a6464..c0b057a 100644 --- a/src/me/shock/playervaults/Listeners.java +++ b/src/me/shock/playervaults/Listeners.java @@ -3,6 +3,7 @@ package me.shock.playervaults; import java.io.IOException; import me.shock.playervaults.commands.Commands; +import me.shock.playervaults.commands.VaultViewInfo; import me.shock.playervaults.util.VaultManager; import org.bukkit.ChatColor; @@ -25,6 +26,7 @@ import org.bukkit.inventory.Inventory; public class Listeners implements Listener { public Main plugin; + public Listeners(Main instance) { this.plugin = instance; } @@ -33,16 +35,15 @@ public class Listeners implements Listener { public void doSaveStuff(Player p) { if(Commands.inVault.containsKey(p.getName())) { Inventory inv = p.getOpenInventory().getTopInventory(); - int number = Commands.inVault.get(p.getName()); + VaultViewInfo info = Commands.inVault.get(p.getName()); try { - vm.saveVault(inv, p, number); + vm.saveVault(inv, info.getHolder(), info.getNumber()); } catch (IOException e) { e.printStackTrace(); } } } - @EventHandler public void onQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); @@ -66,7 +67,6 @@ public class Listeners implements Listener { @EventHandler public void onClose(InventoryCloseEvent event) { - System.out.println(Commands.inVault.size()); HumanEntity he = event.getPlayer(); if(he instanceof Player) { Player player = (Player) he; diff --git a/src/me/shock/playervaults/commands/Commands.java b/src/me/shock/playervaults/commands/Commands.java index c585c71..31c6222 100644 --- a/src/me/shock/playervaults/commands/Commands.java +++ b/src/me/shock/playervaults/commands/Commands.java @@ -1,6 +1,6 @@ package me.shock.playervaults.commands; -import java.util.concurrent.ConcurrentHashMap; +import java.util.HashMap; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -8,32 +8,36 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; + public class Commands implements CommandExecutor { - public static ConcurrentHashMap inVault = new ConcurrentHashMap(); - private String pv = ChatColor.DARK_RED + "[" + ChatColor.WHITE + "PlayerVaults" + + public static HashMap inVault = new HashMap(); + private final String pv = ChatColor.DARK_RED + "[" + ChatColor.WHITE + "PlayerVaults" + ChatColor.DARK_RED + "]" + ChatColor.WHITE + ": "; + @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("pv")) { - int length = args.length; - if(length == 1) { - if(notConsole(sender)) { - if(OwnVault.openOwnVault(sender, args[0])) - inVault.put(sender.getName(), Integer.parseInt(args[0])); + switch(args.length) { + case 1: + if(sender instanceof Player) { + if(VaultOperations.openOwnVault(sender, args[0])) + inVault.put(sender.getName(), new VaultViewInfo(sender.getName(), Integer.parseInt(args[0]))); } - } else { + else sender.sendMessage(pv + "Sorry but that can only be run by a player!"); + break; + case 2: + if(sender instanceof Player) { + if(VaultOperations.openOtherVault(sender,args[0], args[1])) { + inVault.put(sender.getName(), new VaultViewInfo(args[0], Integer.parseInt(args[1]))); + } + } + else sender.sendMessage(pv + "Sorry but that can only be run by a player!"); + break; + default: Feedback.showHelp(sender); } } return true; } - - public boolean notConsole(CommandSender sender) { - if(!(sender instanceof Player)) { - sender.sendMessage(pv + "Sorry but that can only be run by a player!"); - return false; - } - return true; - } } diff --git a/src/me/shock/playervaults/commands/OwnVault.java b/src/me/shock/playervaults/commands/VaultOperations.java similarity index 59% rename from src/me/shock/playervaults/commands/OwnVault.java rename to src/me/shock/playervaults/commands/VaultOperations.java index 59a6491..2809084 100644 --- a/src/me/shock/playervaults/commands/OwnVault.java +++ b/src/me/shock/playervaults/commands/VaultOperations.java @@ -8,7 +8,7 @@ import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class OwnVault { +public class VaultOperations { private static Main plugin; private static VaultManager vm = new VaultManager(plugin); @@ -18,31 +18,45 @@ public class OwnVault { ChatColor.DARK_RED + "]" + ChatColor.WHITE + ": "; public static boolean checkPerms(CommandSender cs, int number) { - if(number <= 0) { - return false; - } - if(cs.hasPermission("playervaults.amount." + String.valueOf(number))) { - return true; - } - else if(checkPerms(cs, number-1)) { - return true; + if(cs.hasPermission("playervaults.amount."+String.valueOf(number))) return true; + for(int x = number; x <= 99;x++) { + if(cs.hasPermission("playervaults.amount."+String.valueOf(x))) return true; } return false; } - public static boolean openOwnVault(CommandSender sender, String arg0) { - if(arg0.matches("^[0-9]{1,2}$")) { - System.out.println("yay regex!"); + public static boolean openOwnVault(CommandSender sender, String arg) { + if(arg.matches("^[0-9]{1,2}$")) { int number = 0; try { - number = Integer.parseInt(arg0); + number = Integer.parseInt(arg); + } + catch(NumberFormatException nfe) { + sender.sendMessage(pv+ChatColor.RED+"You need to specify a number!"); + return false; + } + if(checkPerms(sender, number)) { + vm.loadVault(sender, sender.getName(), number); + sender.sendMessage(pv + "Opening vault " + ChatColor.GREEN + number); + return true; + } else { + feedback.noPerms(sender); + } + } + return false; + } + public static boolean openOtherVault(CommandSender sender, String user, String arg) { + if(arg.matches("^[0-9]{1,2}$")) { + int number = 0; + try { + number = Integer.parseInt(arg); } catch(NumberFormatException nfe) { //Yell at the player //We should probably check perms first though } - if(checkPerms(sender, number)) { - vm.loadVault(sender, sender.getName(), number); + if(sender.hasPermission("playervaults.admin")) { + vm.loadVault(sender, user, number); sender.sendMessage(pv + "Opening vault " + ChatColor.GREEN + number); return true; } else { diff --git a/src/me/shock/playervaults/commands/VaultViewInfo.java b/src/me/shock/playervaults/commands/VaultViewInfo.java new file mode 100644 index 0000000..995b13a --- /dev/null +++ b/src/me/shock/playervaults/commands/VaultViewInfo.java @@ -0,0 +1,21 @@ +package me.shock.playervaults.commands; + +public class VaultViewInfo { + + String s; + int i; + + public VaultViewInfo(String s, int i) { + this.s = s; + this.i = i; + } + + public String getHolder() { + return this.s; + } + + public int getNumber() { + return this.i; + } + +} diff --git a/src/me/shock/playervaults/util/VaultManager.java b/src/me/shock/playervaults/util/VaultManager.java index c3c3d63..61f3eae 100644 --- a/src/me/shock/playervaults/util/VaultManager.java +++ b/src/me/shock/playervaults/util/VaultManager.java @@ -32,19 +32,17 @@ public class VaultManager { * @param player * @throws IOException */ - public void saveVault(Inventory inv, Player player, int number) throws IOException { - if(Commands.inVault.containsKey(player.getName())) { + public void saveVault(Inventory inv, String player, int number) throws IOException { System.out.println("savevault"); // Get the player's file and serialize the inventory. String ser = Serialization.toBase64(inv); - YamlConfiguration yaml = playerVaultFile(player.getName()); + YamlConfiguration yaml = playerVaultFile(player); System.out.println("serial: " + ser); // Prepare to save :D? yaml.createSection("vault" + number); yaml.set("vault" + number + "", ser); - saveFile(player.getName(), yaml); - Commands.inVault.remove(player.getName()); - } + saveFile(player, yaml); + Commands.inVault.remove(player); } /** @@ -53,12 +51,13 @@ public class VaultManager { * * TODO: Check to see if the path exists before we get it! */ - public void loadVault(CommandSender sender, String target, int number) { - YamlConfiguration playerFile = playerVaultFile(target); + public void loadVault(CommandSender sender, String holder, int number) { + YamlConfiguration playerFile = playerVaultFile(holder); String data = playerFile.getString("vault" + "" + number + ""); Player player = (Player) sender; if(data == null) { - Inventory inv = Bukkit.createInventory(player, 54, ChatColor.DARK_RED + "Vault"); + System.out.println("nll"); + Inventory inv = Bukkit.createInventory(player, 54, ChatColor.DARK_RED + "Vault "+String.valueOf(number)); player.openInventory(inv); } else { Inventory inv = Serialization.fromBase64(data);