From 4540d41eff340f0d1c9e032d7059f8813ad305c1 Mon Sep 17 00:00:00 2001 From: j502647092 Date: Fri, 14 Aug 2015 08:44:08 +0800 Subject: [PATCH] Updata VersionChecker and rewrite DataBackup... Signed-off-by: j502647092 --- .../bekvon/bukkit/residence/Residence.java | 63 ++--- .../listeners/ResidencePlayerListener.java | 259 ++++++------------ .../bukkit/residence/utils/DataBackup.java | 115 ++++++++ .../residence/utils/VersionChecker.java | 51 +++- .../bukkit/residence/utils/ZipLibrary.java | 118 -------- 5 files changed, 255 insertions(+), 351 deletions(-) create mode 100644 src/com/bekvon/bukkit/residence/utils/DataBackup.java delete mode 100644 src/com/bekvon/bukkit/residence/utils/ZipLibrary.java diff --git a/src/com/bekvon/bukkit/residence/Residence.java b/src/com/bekvon/bukkit/residence/Residence.java index d73ea2d..f75d443 100644 --- a/src/com/bekvon/bukkit/residence/Residence.java +++ b/src/com/bekvon/bukkit/residence/Residence.java @@ -1,5 +1,6 @@ /* - * To change this template, choose Tools | Templates and open the template in the editor. + * To change this template, choose Tools | Templates and open the template in + * the editor. */ package com.bekvon.bukkit.residence; @@ -55,7 +56,7 @@ import com.bekvon.bukkit.residence.text.Language; import com.bekvon.bukkit.residence.text.help.HelpEntry; import com.bekvon.bukkit.residence.text.help.InformationPager; import com.bekvon.bukkit.residence.utils.VersionChecker; -import com.bekvon.bukkit.residence.utils.ZipLibrary; +import com.bekvon.bukkit.residence.utils.DataBackup; import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter; import com.earth2me.essentials.Essentials; @@ -82,7 +83,6 @@ public class Residence extends JavaPlugin { protected static RentManager rentmanager; protected static ChatManager chatmanager; protected static Server server; - protected static VersionChecker versionChecker; protected static HelpEntry helppages; protected static Language language; protected static Logger log; @@ -96,7 +96,10 @@ public class Residence extends JavaPlugin { protected static int autosaveBukkitId = -1; protected static boolean initsuccess = false; protected static List resadminToggle; - private final static String[] validLanguages = { "English", "Chinese" }; + private final static String[] validLanguages = { + "English", + "Chinese" + }; public static ResidenceBlockListener getBlockListener() { return blistener; @@ -189,10 +192,6 @@ public class Residence extends JavaPlugin { return tmanager; } - public static VersionChecker getVersionChecker() { - return versionChecker; - } - public static WorldFlagManager getWorldFlags() { return wmanager; } @@ -279,8 +278,7 @@ public class Residence extends JavaPlugin { private boolean checkNewLanguageVersion(String lang) throws IOException, FileNotFoundException, InvalidConfigurationException { File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml"); - File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang - + ".yml"); + File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang + ".yml"); if (outFile.isFile()) { FileConfig testconfig = new FileConfig(); testconfig.load(outFile); @@ -379,33 +377,27 @@ public class Residence extends JavaPlugin { if (loadFile.isFile()) { yml = new YMLSaveHelper(loadFile); yml.load(); - tmanager = TransactionManager.load((Map) yml.getRoot().get("Economy"), - gmanager, rmanager); + tmanager = TransactionManager.load((Map) yml.getRoot().get("Economy"), gmanager, rmanager); } loadFile = new File(saveFolder, "leases.yml"); if (loadFile.isFile()) { yml = new YMLSaveHelper(loadFile); yml.load(); - leasemanager = LeaseManager.load((Map) yml.getRoot().get("Leases"), - rmanager); + leasemanager = LeaseManager.load((Map) yml.getRoot().get("Leases"), rmanager); } loadFile = new File(saveFolder, "permlists.yml"); if (loadFile.isFile()) { yml = new YMLSaveHelper(loadFile); yml.load(); - pmanager = PermissionListManager.load((Map) yml.getRoot().get( - "PermissionLists")); + pmanager = PermissionListManager.load((Map) yml.getRoot().get("PermissionLists")); } loadFile = new File(saveFolder, "rent.yml"); if (loadFile.isFile()) { yml = new YMLSaveHelper(loadFile); yml.load(); - rentmanager = RentManager.load((Map) yml.getRoot() - .get("RentSystem")); + rentmanager = RentManager.load((Map) yml.getRoot().get("RentSystem")); } - this.getLogger().info( - "从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) - + " 秒)"); + this.getLogger().info("从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)"); // System.out.print("[Residence] Loaded..."); return true; } catch (Exception ex) { @@ -428,7 +420,7 @@ public class Residence extends JavaPlugin { if (initsuccess) { try { saveYml(); - ZipLibrary.backup(); + DataBackup.run(); } catch (Exception ex) { this.getLogger().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!"); this.getLogger().warning("错误: " + ex); @@ -485,8 +477,7 @@ public class Residence extends JavaPlugin { language = new Language(); } } - File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() - + ".yml"); + File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() + ".yml"); try { if (langFile.isFile()) { loadLang(langFile); @@ -502,8 +493,7 @@ public class Residence extends JavaPlugin { if (this.getConfig().getBoolean("Global.EnableEconomy", false)) { this.getLogger().info("扫描经济系统..."); if (gmanager.getPermissionsPlugin() instanceof ResidenceVaultAdapter) { - ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager - .getPermissionsPlugin(); + ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager.getPermissionsPlugin(); if (vault.economyOK()) { economy = vault; this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName()); @@ -569,8 +559,7 @@ public class Residence extends JavaPlugin { autosaveInt = 1; } autosaveInt = autosaveInt * 60 * 20; - autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave, - autosaveInt, autosaveInt); + autosaveBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, autoSave, autosaveInt, autosaveInt); healBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, doHeals, 20, 20); if (cmanager.useLeases()) { int leaseInterval = cmanager.getLeaseCheckInterval(); @@ -578,8 +567,7 @@ public class Residence extends JavaPlugin { leaseInterval = 1; } leaseInterval = leaseInterval * 60 * 20; - leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire, - leaseInterval, leaseInterval); + leaseBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, leaseExpire, leaseInterval, leaseInterval); } if (cmanager.enabledRentSystem()) { int rentint = cmanager.getRentCheckInterval(); @@ -587,8 +575,7 @@ public class Residence extends JavaPlugin { rentint = 1; } rentint = rentint * 60 * 20; - rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, rentExpire, - rentint, rentint); + rentBukkitId = server.getScheduler().scheduleSyncRepeatingTask(this, rentExpire, rentint, rentint); } for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (Residence.getPermissionManager().isResidenceAdmin(player)) { @@ -603,8 +590,7 @@ public class Residence extends JavaPlugin { this.getLogger().warning(" - 初始化失败! 卸载插件! 请报告以下错误给作者,谢谢!"); this.getLogger().warning("错误: " + ex); } - versionChecker = new VersionChecker(this); - versionChecker.VersionCheck(null); + new VersionChecker(this); } @Override @@ -726,16 +712,14 @@ public class Residence extends JavaPlugin { ymlSaveLoc.renameTo(backupFile); } tmpFile.renameTo(ymlSaveLoc); - this.getLogger().info( - "保存领地数据到文件中,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)"); + this.getLogger().info("保存领地数据到文件中,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)"); if (cmanager.showIntervalMessages()) { this.getLogger().info(" - 保存插件数据..."); } } private void writeDefaultConfigFromJar() { - if (this.writeDefaultFileFromJar(new File(this.getDataFolder(), "config.yml"), - "config.yml", true)) { + if (this.writeDefaultFileFromJar(new File(this.getDataFolder(), "config.yml"), "config.yml", true)) { this.getLogger().info("保存默认配置文件..."); } } @@ -744,8 +728,7 @@ public class Residence extends JavaPlugin { private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) { try { File fileBackup = new File(this.getDataFolder(), "backup-" + writeName); - File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation() - .toURI()).getCanonicalFile(); + File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getCanonicalFile(); if (jarloc.isFile()) { JarFile jar = new JarFile(jarloc); JarEntry entry = jar.getJarEntry(jarPath); diff --git a/src/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java b/src/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java index 9f985cb..95f2dbf 100644 --- a/src/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java +++ b/src/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java @@ -1,5 +1,6 @@ /* - * To change this template, choose Tools | Templates and open the template in the editor. + * To change this template, choose Tools | Templates and open the template in + * the editor. */ package com.bekvon.bukkit.residence.listeners; @@ -76,8 +77,7 @@ public class ResidencePlayerListener implements Listener { public void doHeals() { try { for (Player player : Bukkit.getServer().getOnlinePlayers()) { - String resname = Residence.getPlayerListener().getCurrentResidenceName( - player.getName()); + String resname = Residence.getPlayerListener().getCurrentResidenceName(player.getName()); ClaimedResidence res = null; if (resname != null) { res = Residence.getResidenceManager().getByName(resname); @@ -131,12 +131,11 @@ public class ResidencePlayerListener implements Listener { if (leave != null && !leave.equals("")) { if (Residence.getConfigManager().useActionBar()) { - ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW) - .append(insertMessages(player, ResOld.getName(), ResOld, leave)) - .toString()); + ActionBar.send(player, + (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave)) + .toString()); } else { - player.sendMessage(ChatColor.YELLOW - + this.insertMessages(player, ResOld.getName(), ResOld, leave)); + player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave)); } } currentRes.remove(pname); @@ -145,8 +144,7 @@ public class ResidencePlayerListener implements Listener { return; } if (move) { - if (!res.getPermissions().playerHas(pname, "move", true) - && !Residence.isResAdminOn(player) + if (!res.getPermissions().playerHas(pname, "move", true) && !Residence.isResAdminOn(player) && !player.hasPermission("residence.admin.move")) { Location lastLoc = lastOutsideLoc.get(pname); if (lastLoc != null) { @@ -155,8 +153,7 @@ public class ResidencePlayerListener implements Listener { player.teleport(res.getOutsideFreeLoc(loc)); } player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("ResidenceMoveDeny", - res.getName().split("\\.")[res.getName().split("\\.").length - 1])); + + Residence.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1])); return; } } @@ -175,12 +172,11 @@ public class ResidencePlayerListener implements Listener { if (leave != null && !leave.equals("") && ResOld != res.getParent()) { if (Residence.getConfigManager().useActionBar()) { - ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW) - .append(insertMessages(player, ResOld.getName(), ResOld, leave)) - .toString()); + ActionBar.send(player, + (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave)) + .toString()); } else { - player.sendMessage(ChatColor.YELLOW - + this.insertMessages(player, ResOld.getName(), ResOld, leave)); + player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave)); } } } @@ -190,17 +186,12 @@ public class ResidencePlayerListener implements Listener { ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player); Residence.getServ().getPluginManager().callEvent(chgEvent); - if (enterMessage != null && !enterMessage.equals("") - && !(ResOld != null && res == ResOld.getParent())) { + if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) { if (Residence.getConfigManager().useActionBar()) { - ActionBar.send( - player, - (new StringBuilder()).append(ChatColor.YELLOW) - .append(insertMessages(player, areaname, res, enterMessage)) + ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, areaname, res, enterMessage)) .toString()); } else { - player.sendMessage(ChatColor.YELLOW - + this.insertMessages(player, areaname, res, enterMessage)); + player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, areaname, res, enterMessage)); } } } @@ -225,53 +216,25 @@ public class ResidencePlayerListener implements Listener { } private boolean isCanUseEntity_BothClick(Material mat, Block block) { - return mat == Material.LEVER - || mat == Material.STONE_BUTTON - || mat == Material.WOOD_BUTTON - || mat == Material.WOODEN_DOOR - || mat == Material.SPRUCE_DOOR - || mat == Material.BIRCH_DOOR - || mat == Material.JUNGLE_DOOR - || mat == Material.ACACIA_DOOR - || mat == Material.DARK_OAK_DOOR - || mat == Material.SPRUCE_FENCE_GATE - || mat == Material.BIRCH_FENCE_GATE - || mat == Material.JUNGLE_FENCE_GATE - || mat == Material.ACACIA_FENCE_GATE - || mat == Material.DARK_OAK_FENCE_GATE - || mat == Material.TRAP_DOOR - || mat == Material.FENCE_GATE - || mat == Material.PISTON_BASE - || mat == Material.PISTON_STICKY_BASE - || mat == Material.DRAGON_EGG - || Residence.getConfigManager().getCustomBothClick() - .contains(Integer.valueOf(block.getTypeId())); + return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR + || mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR + || mat == Material.DARK_OAK_DOOR || mat == Material.SPRUCE_FENCE_GATE || mat == Material.BIRCH_FENCE_GATE + || mat == Material.JUNGLE_FENCE_GATE || mat == Material.ACACIA_FENCE_GATE || mat == Material.DARK_OAK_FENCE_GATE + || mat == Material.TRAP_DOOR || mat == Material.FENCE_GATE || mat == Material.PISTON_BASE || mat == Material.PISTON_STICKY_BASE + || mat == Material.DRAGON_EGG || Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId())); } private boolean isCanUseEntity_RClickOnly(Material mat, Block block) { - return mat == Material.ITEM_FRAME - || mat == Material.BEACON - || mat == Material.FLOWER_POT - || mat == Material.COMMAND - || mat == Material.ANVIL - || mat == Material.CAKE_BLOCK - || mat == Material.NOTE_BLOCK - || mat == Material.DIODE - || mat == Material.DIODE_BLOCK_OFF - || mat == Material.DIODE_BLOCK_ON - || mat == Material.BED_BLOCK - || mat == Material.WORKBENCH - || mat == Material.BREWING_STAND + return mat == Material.ITEM_FRAME || mat == Material.BEACON || mat == Material.FLOWER_POT || mat == Material.COMMAND || mat == Material.ANVIL + || mat == Material.CAKE_BLOCK || mat == Material.NOTE_BLOCK || mat == Material.DIODE || mat == Material.DIODE_BLOCK_OFF + || mat == Material.DIODE_BLOCK_ON || mat == Material.BED_BLOCK || mat == Material.WORKBENCH || mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE - || Residence.getConfigManager().getCustomRightClick() - .contains(Integer.valueOf(block.getTypeId())); + || Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId())); } private boolean isContainer(Material mat, Block block) { - return FlagPermissions.getMaterialUseFlagList().containsKey(mat) - && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container") - || Residence.getConfigManager().getCustomContainers() - .contains(Integer.valueOf(block.getTypeId())); + return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container") + || Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId())); } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @@ -280,25 +243,19 @@ public class ResidencePlayerListener implements Listener { if (Residence.isResAdminOn(player)) return; String pname = player.getName(); - ClaimedResidence res = Residence.getResidenceManager().getByLoc( - event.getBlockClicked().getLocation()); + ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation()); if (res != null) { - if (Residence.getConfigManager().preventRentModify() - && Residence.getConfigManager().enabledRentSystem()) { + if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) { if (Residence.getRentManager().isRented(res.getName())) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("RentedModifyDeny")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny")); event.setCancelled(true); return; } } } - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked() - .getLocation(), player); - if (!perms.playerHas(pname, player.getWorld().getName(), "bucket", - perms.playerHas(pname, player.getWorld().getName(), "build", true))) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "bucket")); + FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player); + if (!perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true))) { + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "bucket")); event.setCancelled(true); } } @@ -309,26 +266,21 @@ public class ResidencePlayerListener implements Listener { String pname = player.getName(); if (Residence.isResAdminOn(player)) return; - ClaimedResidence res = Residence.getResidenceManager().getByLoc( - event.getBlockClicked().getLocation()); + ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation()); if (res != null) { - if (Residence.getConfigManager().preventRentModify() - && Residence.getConfigManager().enabledRentSystem()) { + if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) { if (Residence.getRentManager().isRented(res.getName())) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("RentedModifyDeny")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny")); event.setCancelled(true); return; } } } - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked() - .getLocation(), player); + FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player); boolean hasbucket = perms.playerHas(pname, player.getWorld().getName(), "bucket", perms.playerHas(pname, player.getWorld().getName(), "build", true)); if (!hasbucket) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "bucket")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "bucket")); event.setCancelled(true); } } @@ -356,13 +308,11 @@ public class ResidencePlayerListener implements Listener { if (block == null) return; Material mat = block.getType(); - if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) - && event.getAction() == Action.RIGHT_CLICK_BLOCK + if (!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block) || event.getAction() == Action.PHYSICAL)) { int typeId = player.getItemInHand().getTypeId(); - if (typeId != Residence.getConfigManager().getSelectionTooldID() - && typeId != Residence.getConfigManager().getInfoToolID() && typeId != 351 - && typeId != 416) + if (typeId != Residence.getConfigManager().getSelectionTooldID() && typeId != Residence.getConfigManager().getInfoToolID() + && typeId != 351 && typeId != 416) return; } FlagPermissions perms = Residence.getPermsByLocForPlayer(block.getLocation(), player); @@ -373,14 +323,12 @@ public class ResidencePlayerListener implements Listener { if (!resadmin) { boolean hasuse = perms.playerHas(player.getName(), world, "use", true); boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse); - if ((!hasuse && !haspressure || !haspressure) - && (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) { + if ((!hasuse && !haspressure || !haspressure) && (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) { event.setCancelled(true); return; } } - if (!perms.playerHas(player.getName(), world, "trample", - perms.playerHas(player.getName(), world, "build", true)) + if (!perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true)) && (mat == Material.SOIL || mat == Material.SOUL_SAND)) { event.setCancelled(true); return; @@ -392,39 +340,29 @@ public class ResidencePlayerListener implements Listener { event.setCancelled(true); return; } - if (event.getAction() == Action.LEFT_CLICK_BLOCK - || event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (player.getItemInHand().getTypeId() == Residence.getConfigManager() - .getSelectionTooldID()) { + if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getSelectionTooldID()) { Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit"); if (wep != null) { - if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == Residence - .getConfigManager().getSelectionTooldID()) + if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == Residence.getConfigManager().getSelectionTooldID()) return; } PermissionGroup group = Residence.getPermissionManager().getGroup(player); - if (player.hasPermission("residence.select") - || player.hasPermission("residence.create") - && !player.isPermissionSet("residence.select") - || group.canCreateResidences() - && !player.isPermissionSet("residence.create") + if (player.hasPermission("residence.select") || player.hasPermission("residence.create") + && !player.isPermissionSet("residence.select") || group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select") || resadmin) { if (event.getAction() == Action.LEFT_CLICK_BLOCK) { Location loc = block.getLocation(); Residence.getSelectionManager().placeLoc1(player, loc); player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("SelectPoint", - Residence.getLanguage().getPhrase("Primary")) - + ChatColor.RED + "(" + loc.getBlockX() + "," + loc.getBlockY() - + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!"); + + Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Primary")) + ChatColor.RED + + "(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!"); } else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { Location loc = block.getLocation(); Residence.getSelectionManager().placeLoc2(player, loc); player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("SelectPoint", - Residence.getLanguage().getPhrase("Secondary")) - + ChatColor.RED + "(" + loc.getBlockX() + "," + loc.getBlockY() - + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!"); + + Residence.getLanguage().getPhrase("SelectPoint", Residence.getLanguage().getPhrase("Secondary")) + ChatColor.RED + + "(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!"); } event.setCancelled(true); } @@ -447,15 +385,10 @@ public class ResidencePlayerListener implements Listener { if (heldItem != null) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (player.getItemInHand().getTypeId() == 351) { - if (player.getItemInHand().getData().getData() == 15 - && block.getType() == Material.GRASS - || player.getItemInHand().getData().getData() == 3 - && block.getTypeId() == 17 - && (block.getData() == 3 || block.getData() == 7 - || block.getData() == 11 || block.getData() == 15)) { - perms = Residence.getPermsByLocForPlayer( - block.getRelative(event.getBlockFace()).getLocation(), - player); + if (player.getItemInHand().getData().getData() == 15 && block.getType() == Material.GRASS + || player.getItemInHand().getData().getData() == 3 && block.getTypeId() == 17 + && (block.getData() == 3 || block.getData() == 7 || block.getData() == 11 || block.getData() == 15)) { + perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player); if (!perms.playerHas(player.getName(), world, "build", true)) { event.setCancelled(true); return; @@ -463,11 +396,9 @@ public class ResidencePlayerListener implements Listener { } } if (heldItem == Material.ARMOR_STAND) { - perms = Residence.getPermsByLocForPlayer( - block.getRelative(event.getBlockFace()).getLocation(), player); + perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player); if (!perms.playerHas(player.getName(), world, "build", true)) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); event.setCancelled(true); return; } @@ -476,51 +407,40 @@ public class ResidencePlayerListener implements Listener { } if (isContainer(mat, block) || isCanUseEntity(mat, block)) { boolean hasuse = perms.playerHas(player.getName(), world, "use", true); - for (Entry checkMat : FlagPermissions - .getMaterialUseFlagList().entrySet()) { + for (Entry checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) { if (mat == checkMat.getKey()) { - if (!perms.playerHas(player.getName(), world, checkMat.getValue(), - hasuse)) { + if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) { if (hasuse || checkMat.getValue().equals("container")) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", - checkMat.getValue())); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", checkMat.getValue())); return; } else { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "use")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use")); return; } } } } - if (Residence.getConfigManager().getCustomContainers() - .contains(Integer.valueOf(block.getTypeId()))) { + if (Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()))) { if (!perms.playerHas(player.getName(), world, "container", hasuse)) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "container")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container")); return; } } - if (Residence.getConfigManager().getCustomBothClick() - .contains(Integer.valueOf(block.getTypeId()))) { + if (Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))) { if (!hasuse) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "use")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use")); return; } } if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (Residence.getConfigManager().getCustomRightClick() - .contains(Integer.valueOf(block.getTypeId()))) { + if (Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()))) { if (!hasuse) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "use")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use")); return; } } @@ -543,11 +463,9 @@ public class ResidencePlayerListener implements Listener { FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player); String world = player.getWorld().getName(); - if (!perms.playerHas(player.getName(), world, "container", - perms.playerHas(player.getName(), world, "use", true))) { + if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "container")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container")); } } @@ -559,12 +477,10 @@ public class ResidencePlayerListener implements Listener { Entity ent = event.getRightClicked(); /* Trade */ if (ent.getType() == EntityType.VILLAGER) { - ClaimedResidence res = Residence.getResidenceManager().getByLoc( - event.getPlayer().getLocation()); + ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getPlayer().getLocation()); if (res != null && !res.getPermissions().playerHas(player.getName(), "trade", true)) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); event.setCancelled(true); } } @@ -584,11 +500,9 @@ public class ResidencePlayerListener implements Listener { event.setCancelled(true); return; } - if (!perms.playerHas(player.getName(), world, "container", - perms.playerHas(player.getName(), world, "use", true))) { + if (!perms.playerHas(player.getName(), world, "container", perms.playerHas(player.getName(), world, "use", true))) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("FlagDeny", "container")); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container")); } } @@ -600,9 +514,6 @@ public class ResidencePlayerListener implements Listener { Residence.turnResAdminOn(player); } handleNewLocation(player, player.getLocation(), false); - if (player.isOp() || player.hasPermission("residence.versioncheck")) { - Residence.getVersionChecker().VersionCheck(player); - } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) @@ -669,15 +580,13 @@ public class ResidencePlayerListener implements Listener { } ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc); - if (event.getCause() == TeleportCause.ENDER_PEARL - || event.getCause() == TeleportCause.COMMAND + if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND || event.getCause() == TeleportCause.NETHER_PORTAL) { if (res != null) { String areaname = Residence.getResidenceManager().getNameByLoc(loc); if (!res.getPermissions().playerHas(player.getName(), "move", true)) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("ResidenceMoveDeny", areaname)); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMoveDeny", areaname)); return; } } @@ -685,11 +594,9 @@ public class ResidencePlayerListener implements Listener { if (event.getCause() == TeleportCause.PLUGIN) { if (res != null) { String areaname = Residence.getResidenceManager().getNameByLoc(loc); - if (!res.getPermissions().playerHas(player.getName(), "tp", true) - && !player.hasPermission("residence.admin.tp")) { + if (!res.getPermissions().playerHas(player.getName(), "tp", true) && !player.hasPermission("residence.admin.tp")) { event.setCancelled(true); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("TeleportDeny", areaname)); + player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("TeleportDeny", areaname)); return; } } @@ -713,14 +620,10 @@ public class ResidencePlayerListener implements Listener { String pname = player.getName(); if (playerToggleChat.contains(pname)) { playerToggleChat.remove(pname); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("ResidenceChat", - ChatColor.RED + "OFF" + ChatColor.YELLOW + "!")); + player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "OFF" + ChatColor.YELLOW + "!")); } else { playerToggleChat.add(pname); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("ResidenceChat", - ChatColor.RED + "ON" + ChatColor.YELLOW + "!")); + player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "ON" + ChatColor.YELLOW + "!")); } } } diff --git a/src/com/bekvon/bukkit/residence/utils/DataBackup.java b/src/com/bekvon/bukkit/residence/utils/DataBackup.java new file mode 100644 index 0000000..dd40de4 --- /dev/null +++ b/src/com/bekvon/bukkit/residence/utils/DataBackup.java @@ -0,0 +1,115 @@ +package com.bekvon.bukkit.residence.utils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.zip.Deflater; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import org.bukkit.World; + +import com.bekvon.bukkit.residence.Residence; + +public class DataBackup { + private File BackupDir = new File(Residence.getDataLocation(), "Backup"); + + public static void run() throws IOException { + DataBackup backup = new DataBackup(); + backup.backup(); + } + + public void backup() throws IOException { + try { + BackupDir.mkdir(); + Date date = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); + File fileZip = new File(BackupDir, dateFormat.format(date) + ".zip"); + + // Create the Source List, and add directories/etc to the file. + List sources = new ArrayList(); + + File saveFolder = new File(Residence.getDataLocation(), "Save"); + File worldFolder = new File(saveFolder, "Worlds"); + if (!saveFolder.isDirectory()) { + return; + } + File saveFile; + for (World world : Residence.getServ().getWorlds()) { + saveFile = new File(worldFolder, "res_" + world.getName() + ".yml"); + if (saveFile.isFile()) { + sources.add(saveFile); + } + } + packZip(fileZip, sources); + } catch (Exception e) { + e.printStackTrace(); + return; + } + } + + private void packZip(File output, List sources) throws IOException { + ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(output)); + zipOut.setLevel(Deflater.DEFAULT_COMPRESSION); + + for (File source : sources) { + if (source.isDirectory()) { + zipDir(zipOut, "", source); + } else { + zipFile(zipOut, "", source); + } + } + + zipOut.flush(); + zipOut.close(); + } + + private String buildPath(String path, String file) { + if (path == null || path.isEmpty()) { + return file; + } + + return path + File.separator + file; + } + + private void zipDir(ZipOutputStream zos, String path, File dir) throws IOException { + if (!dir.canRead()) { + return; + } + + File[] files = dir.listFiles(); + path = buildPath(path, dir.getName()); + + for (File source : files) { + if (source.isDirectory()) { + zipDir(zos, path, source); + } else { + zipFile(zos, path, source); + } + } + } + + private void zipFile(ZipOutputStream zos, String path, File file) throws IOException { + if (!file.canRead()) { + return; + } + + zos.putNextEntry(new ZipEntry(buildPath(path, file.getName()))); + + FileInputStream fis = new FileInputStream(file); + byte[] buffer = new byte[4092]; + int byteCount = 0; + + while ((byteCount = fis.read(buffer)) != -1) { + zos.write(buffer, 0, byteCount); + } + + fis.close(); + zos.closeEntry(); + } +} diff --git a/src/com/bekvon/bukkit/residence/utils/VersionChecker.java b/src/com/bekvon/bukkit/residence/utils/VersionChecker.java index d1cac7d..9ef4b1b 100644 --- a/src/com/bekvon/bukkit/residence/utils/VersionChecker.java +++ b/src/com/bekvon/bukkit/residence/utils/VersionChecker.java @@ -10,45 +10,66 @@ import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.plugin.Plugin; -import com.bekvon.bukkit.residence.Residence; import com.google.common.base.Charsets; -public class VersionChecker { - Residence plugin; +public class VersionChecker implements Listener { + Plugin plugin; + String checkurl = "https://coding.net/u/502647092/p/{0}/git/raw/{1}/src/plugin.yml"; + String branch = "master"; - public VersionChecker(Residence plugin) { + public VersionChecker(Plugin plugin) { this.plugin = plugin; + plugin.getServer().getPluginManager().registerEvents(this, plugin); + this.VersionCheck(null); + } + + // https://coding.net/u/502647092/p/SimpleEssential/git/raw/master/src/plugin.yml + public VersionChecker(Plugin plugin, String branch) { + this.plugin = plugin; + plugin.getServer().getPluginManager().registerEvents(this, plugin); + this.checkurl = branch; + this.VersionCheck(null); + } + + public String getCheckUrl(String pluginName, String branch) { + return String.format(checkurl, pluginName, branch); + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent e) { + if (e.getPlayer().isOp()) { + this.VersionCheck(e.getPlayer()); + } } public void VersionCheck(final Player player) { Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { - String readURL = "http://ci.citycraft.cn:8800/jenkins/job/Residence-Fix/lastSuccessfulBuild/artifact/src/plugin.yml"; + String readURL = getCheckUrl(plugin.getName(), branch); FileConfiguration config; String currentVersion = plugin.getDescription().getVersion(); try { URL url = new URL(readURL); - BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), - Charsets.UTF_8)); + BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), Charsets.UTF_8)); config = YamlConfiguration.loadConfiguration(br); String newVersion = config.getString("version"); br.close(); if (!newVersion.equals(currentVersion)) { String[] msg = new String[] { - ChatColor.GREEN + "领地插件最新版本 v" + newVersion, + ChatColor.GREEN + plugin.getName() + " 插件最新版本 v" + newVersion, ChatColor.RED + "服务器运行版本: v" + currentVersion, - ChatColor.GOLD + "插件更新网站: " + ChatColor.BLUE - + plugin.getDescription().getWebsite(), - ChatColor.YELLOW - + "查看最新修改: " - + ChatColor.BLUE - + "http://ci.citycraft.cn:8800/jenkins/job/Residence-Fix/changes" }; + ChatColor.GOLD + "插件更新网站: " + ChatColor.BLUE + plugin.getDescription().getWebsite() + }; if (player != null) { player.sendMessage(msg); } else { - plugin.consoleMessage(msg); + plugin.getServer().getConsoleSender().sendMessage(msg); } } } catch (IOException e) { diff --git a/src/com/bekvon/bukkit/residence/utils/ZipLibrary.java b/src/com/bekvon/bukkit/residence/utils/ZipLibrary.java deleted file mode 100644 index ca414ec..0000000 --- a/src/com/bekvon/bukkit/residence/utils/ZipLibrary.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.bekvon.bukkit.residence.utils; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.zip.Deflater; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -import org.bukkit.World; - -import com.bekvon.bukkit.residence.Residence; - -public class ZipLibrary { - private static File BackupDir = new File(Residence.getDataLocation(), "Backup"); - - public static void backup() throws IOException { - try { - BackupDir.mkdir(); - - } - catch (Exception e) { - e.printStackTrace(); - return; - } - - // Generate the proper date for the backup filename - Date date = new Date(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); - File fileZip = new File(BackupDir, dateFormat.format(date) + ".zip"); - - // Create the Source List, and add directories/etc to the file. - List sources = new ArrayList(); - - File saveFolder = new File(Residence.getDataLocation(), "Save"); - File worldFolder = new File(saveFolder, "Worlds"); - if (!saveFolder.isDirectory()) { - return; - } - File saveFile; - for (World world : Residence.getServ().getWorlds()) { - saveFile = new File(worldFolder, "res_" + world.getName() + ".yml"); - if (saveFile.isFile()) { - sources.add(saveFile); - } - } - - - packZip(fileZip, sources); - } - - private static void packZip(File output, List sources) throws IOException { - ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(output)); - zipOut.setLevel(Deflater.DEFAULT_COMPRESSION); - - for (File source : sources) { - if (source.isDirectory()) { - zipDir(zipOut, "", source); - } - else { - zipFile(zipOut, "", source); - } - } - - zipOut.flush(); - zipOut.close(); - } - - private static String buildPath(String path, String file) { - if (path == null || path.isEmpty()) { - return file; - } - - return path + File.separator + file; - } - - private static void zipDir(ZipOutputStream zos, String path, File dir) throws IOException { - if (!dir.canRead()) { - return; - } - - File[] files = dir.listFiles(); - path = buildPath(path, dir.getName()); - - for (File source : files) { - if (source.isDirectory()) { - zipDir(zos, path, source); - } - else { - zipFile(zos, path, source); - } - } - } - - private static void zipFile(ZipOutputStream zos, String path, File file) throws IOException { - if (!file.canRead()) { - return; - } - - zos.putNextEntry(new ZipEntry(buildPath(path, file.getName()))); - - FileInputStream fis = new FileInputStream(file); - byte[] buffer = new byte[4092]; - int byteCount = 0; - - while ((byteCount = fis.read(buffer)) != -1) { - zos.write(buffer, 0, byteCount); - } - - fis.close(); - zos.closeEntry(); - } -}