From d7cac35e6cad6d88c408da296b853bffdbe23992 Mon Sep 17 00:00:00 2001 From: Trent Hensler Date: Tue, 12 Feb 2013 22:37:55 -0600 Subject: [PATCH] Update listeners and main class. --- config.yml | 3 ++ src/me/shock/playervaults/Listeners.java | 35 ++++--------- src/me/shock/playervaults/Main.java | 48 ++++-------------- .../playervaults/util/Serialization.java | 26 ++++------ .../shock/playervaults/util/VaultManager.java | 50 +++++++++++-------- 5 files changed, 63 insertions(+), 99 deletions(-) diff --git a/config.yml b/config.yml index 3feb460..0f3129d 100644 --- a/config.yml +++ b/config.yml @@ -1,6 +1,9 @@ # PlayerVaults by drsthock check-update: true debug-mode: false + +# Worlds that players can't access their vaults. +# playervaults.worlds.bypass will override this (default to op). disabled-worlds: - YourAwesomeWorld - Toonville \ No newline at end of file diff --git a/src/me/shock/playervaults/Listeners.java b/src/me/shock/playervaults/Listeners.java index 88bc9d9..b314398 100644 --- a/src/me/shock/playervaults/Listeners.java +++ b/src/me/shock/playervaults/Listeners.java @@ -23,12 +23,10 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.Inventory; -public class Listeners implements Listener -{ +public class Listeners implements Listener { public Main plugin; - public Listeners(Main instance) - { + public Listeners(Main instance) { this.plugin = instance; } VaultManager vm = new VaultManager(plugin); @@ -37,8 +35,7 @@ public class Listeners implements Listener @EventHandler - public void onQuit(PlayerQuitEvent event) - { + public void onQuit(PlayerQuitEvent event) { if(commands.inVault.containsKey(event.getPlayer().getName())) { Player player = event.getPlayer(); Inventory inv = player.getOpenInventory().getTopInventory(); @@ -51,10 +48,9 @@ public class Listeners implements Listener } } @EventHandler - public void onJoin(PlayerJoinEvent event) - { + public void onJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); - plugin.playerVaultFile(player.getName()); + vm.playerVaultFile(player.getName()); if(player.isOp() && Main.update) { player.sendMessage(ChatColor.GREEN + "Version " + Main.name + " of PlayerVaults is up for download!"); @@ -107,8 +103,7 @@ public class Listeners implements Listener public void onClose(InventoryCloseEvent event) { if(commands.inVault.containsKey(event.getPlayer().getName())) { HumanEntity he = event.getPlayer(); - if(he instanceof Player) - { + if(he instanceof Player) { Player player = (Player) he; Inventory inv = player.getOpenInventory().getTopInventory(); int number = Integer.parseInt(commands.inVault.get(player.getName())); @@ -128,11 +123,9 @@ public class Listeners implements Listener * @param event */ @EventHandler - public void onInteract(PlayerInteractEvent event) - { + public void onInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - if(commands.inVault.containsKey(player.getName()) && event.getAction() == Action.RIGHT_CLICK_BLOCK) - { + if(commands.inVault.containsKey(player.getName()) && event.getAction() == Action.RIGHT_CLICK_BLOCK) { Block block = event.getClickedBlock(); /** @@ -142,13 +135,9 @@ public class Listeners implements Listener if(block.getType() == Material.CHEST || block.getType() == Material.ENDER_CHEST || block.getType() == Material.FURNACE - /** - * Storage_minecart and Powered minecart aren't blocks ;)- added to EntityInteractEvent - */ || block.getType() == Material.BURNING_FURNACE || block.getType() == Material.BREWING_STAND - || block.getType() == Material.BEACON) - { + || block.getType() == Material.BEACON) { event.setCancelled(true); } } @@ -160,12 +149,10 @@ public class Listeners implements Listener * @param event */ @EventHandler - public void onInteractEntity(PlayerInteractEntityEvent event) - { + public void onInteractEntity(PlayerInteractEntityEvent event) { Player player = event.getPlayer(); EntityType type = event.getRightClicked().getType(); - if((type == EntityType.VILLAGER||type==EntityType.MINECART) && commands.inVault.containsKey(player.getName())) - { + if((type == EntityType.VILLAGER||type==EntityType.MINECART) && commands.inVault.containsKey(player.getName())) { event.setCancelled(true); } } diff --git a/src/me/shock/playervaults/Main.java b/src/me/shock/playervaults/Main.java index 10768ce..3665566 100644 --- a/src/me/shock/playervaults/Main.java +++ b/src/me/shock/playervaults/Main.java @@ -27,8 +27,7 @@ public class Main extends JavaPlugin { public static String name = ""; Commands commands = new Commands(); - public void onEnable() - { + public void onEnable() { log = getServer().getLogger(); PluginManager pm = getServer().getPluginManager(); pm.registerEvents(new Listeners(this), this); @@ -37,42 +36,34 @@ public class Main extends JavaPlugin { loadLang(); startMetrics(); - if(updateCheck()) - { + if(updateCheck()) { Updater updater = new Updater(this, "playervaults", this.getFile(), Updater.UpdateType.NO_DOWNLOAD, false); update = updater.getResult() == Updater.UpdateResult.UPDATE_AVAILABLE; name = updater.getLatestVersionString(); } } - public void onDisable() - { + public void onDisable() { //saveData(); } - public void startMetrics() - { - try - { + public void startMetrics() { + try { Metrics metrics = new Metrics(this); metrics.start(); - } - catch (IOException localIOException) - { + } catch (IOException localIOException) { localIOException.printStackTrace(); } } - public void loadConfig() - { + public void loadConfig() { /** * Check to see if there's a config. * If not then create a new one. */ File config = new File(getDataFolder() + File.separator + "config.yml"); - if(!config.exists()) - { + if(!config.exists()) { try{ getDataFolder().mkdir(); config.createNewFile(); @@ -99,15 +90,13 @@ public class Main extends JavaPlugin { } } - public void loadLang() - { + public void loadLang() { /** * Check to see if there's a config. * If not then create a new one. */ File lang = new File(getDataFolder() + File.separator + "lang.yml"); - if(!lang.exists()) - { + if(!lang.exists()) { try{ getDataFolder().mkdir(); lang.createNewFile(); @@ -140,23 +129,6 @@ public class Main extends JavaPlugin { return lang; } - public YamlConfiguration playerVaultFile(String player) { - File folder = new File(getDataFolder() + File.separator + "vaults"); - if(!folder.exists()) { - folder.mkdir(); - } - File file = new File(getDataFolder() + File.separator + "vaults" + File.separator + player.toLowerCase() + ".yml"); - if(!file.exists()) { - try { - file.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - YamlConfiguration playerFile = YamlConfiguration.loadConfiguration(file); - return playerFile; - } - /** * Methods to get values from the config. * public so any class / plugin can get them. diff --git a/src/me/shock/playervaults/util/Serialization.java b/src/me/shock/playervaults/util/Serialization.java index a044486..0fd6bdd 100644 --- a/src/me/shock/playervaults/util/Serialization.java +++ b/src/me/shock/playervaults/util/Serialization.java @@ -6,7 +6,7 @@ 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; @@ -16,18 +16,15 @@ import org.bukkit.craftbukkit.v1_4_R1.inventory.CraftItemStack; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -public class Serialization -{ +public class Serialization { - public static String toBase64(Inventory inventory) - { + public static String toBase64(Inventory inventory) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); DataOutputStream dataOutput = new DataOutputStream(outputStream); NBTTagList itemList = new NBTTagList(); // Save every element in the list - for (int i = 0; i < inventory.getSize(); i++) - { + for (int i = 0; i < inventory.getSize(); i++) { NBTTagCompound outputObject = new NBTTagCompound(); CraftItemStack craft = getCraftVersion(inventory.getItem(i)); @@ -44,18 +41,17 @@ public class Serialization return Base64Coder.encodeLines(outputStream.toByteArray()); } - public static Inventory fromBase64(String data) - { + public static Inventory fromBase64(String data) { + if(data.isEmpty()) + return null; ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data)); NBTTagList itemList = (NBTTagList) NBTBase.b(new DataInputStream(inputStream)); Inventory inventory = new CraftInventoryCustom(null, itemList.size()); - for (int i = 0; i < itemList.size(); i++) - { + for (int i = 0; i < itemList.size(); i++) { NBTTagCompound inputObject = (NBTTagCompound) itemList.get(i); - if (!inputObject.isEmpty()) - { + if (!inputObject.isEmpty()) { inventory.setItem(i, CraftItemStack.asCraftMirror(net.minecraft.server.v1_4_R1.ItemStack.createStack(inputObject))); } } @@ -64,10 +60,8 @@ public class Serialization return inventory; } - private static CraftItemStack getCraftVersion(ItemStack stack) - { + private static CraftItemStack getCraftVersion(ItemStack stack) { if (stack instanceof CraftItemStack) - return (CraftItemStack) stack; else if (stack != null) return CraftItemStack.asCraftCopy(stack); diff --git a/src/me/shock/playervaults/util/VaultManager.java b/src/me/shock/playervaults/util/VaultManager.java index a15e9fd..736b985 100644 --- a/src/me/shock/playervaults/util/VaultManager.java +++ b/src/me/shock/playervaults/util/VaultManager.java @@ -14,14 +14,14 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -public class VaultManager -{ +public class VaultManager { public Main plugin; public VaultManager(Main instance) { this.plugin = instance; } String title; + private static String directory = "plugins" + File.separator + "PlayerVaults" + File.separator + "vaults"; /** * Method to save player's vault. @@ -30,18 +30,15 @@ public class VaultManager * @param player * @throws IOException */ - public void saveVault(Inventory inv, Player player, int number) throws IOException - { - if(plugin.inVault().containsKey(player.getName())) - { + public void saveVault(Inventory inv, Player player, int number) throws IOException { + if(plugin.inVault().containsKey(player.getName())) { // Get the player's file and serialize the inventory. String ser = Serialization.toBase64(inv); - YamlConfiguration file = plugin.playerVaultFile(player.getName()); + YamlConfiguration file = playerVaultFile(player.getName()); // Prepare to save D: file.set("vault" + number + "", ser); - if(plugin.debugMode()) - { + if(plugin.debugMode()) { plugin.getLogger().log(Level.INFO, "[PlayerVaults] Saved " + " " + number + " for " + player.getName()); } } @@ -53,36 +50,47 @@ 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 = plugin.playerVaultFile(target); + public void loadVault(CommandSender sender, String target, int number) { + YamlConfiguration playerFile = playerVaultFile(target); String data = playerFile.getString("vault" + "" + number + ""); Inventory inv = Serialization.fromBase64(data); Player player = (Player) sender; player.openInventory(inv); player.sendMessage(title + " Opening " + ChatColor.GREEN + " " + number); return; - } - public void deleteVault(CommandSender sender, String target, int number) throws IOException - { + public void deleteVault(CommandSender sender, String target, int number) throws IOException { String name = target.toLowerCase(); - File file = new File(plugin.getDataFolder() + File.separator + "vaults" + name + ".yml"); + File file = new File(directory + name + ".yml"); FileConfiguration playerFile = YamlConfiguration.loadConfiguration(file); - if(file.exists()) - { + if(file.exists()) { ConfigurationSection section = playerFile.getConfigurationSection("vault" + number); section.set(null, null); sender.sendMessage(title + "Deleting " + ChatColor.GREEN + " " + number); playerFile.save(file); return; - } - else - { + else { sender.sendMessage(title + " That doesn't exist!"); return; } } + + public YamlConfiguration playerVaultFile(String player) { + File folder = new File(directory); + if(!folder.exists()) { + folder.mkdir(); + } + File file = new File(directory + File.separator + player.toLowerCase() + ".yml"); + if(!file.exists()) { + try { + file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + YamlConfiguration playerFile = YamlConfiguration.loadConfiguration(file); + return playerFile; + } }