diff --git a/pom.xml b/pom.xml index 148b7ca..aeba771 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.citycraft Residence - 2.7.0.6 + 2.8.0.0 Residence ${project.name} diff --git a/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java b/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java index dfe9947..74f4c93 100644 --- a/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/ConfigManager.java @@ -20,48 +20,50 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions; * @author Administrator */ public class ConfigManager { - protected String defaultGroup; - protected boolean useLeases; - protected boolean enableEconomy; - protected String economySystem; + private boolean enforceAreaInsideArea; + protected boolean actionBar; + protected boolean adminOps; protected boolean adminsOnly; protected boolean allowEmptyResidences; - protected int infoToolId; - protected int selectionToolId; - protected boolean adminOps; - protected String multiworldPlugin; - protected boolean enableRentSystem; - protected boolean leaseAutoRenew; - protected int rentCheckInterval; - protected int leaseCheckInterval; protected int autoSaveInt; - protected boolean flagsInherit; protected ChatColor chatColor; protected boolean chatEnable; - protected boolean actionBar; - protected int minMoveUpdate; + protected List customBothClick; + protected List customContainers; + protected List customRightClick; + protected String defaultGroup; + protected String economySystem; + protected boolean enableDebug; + protected boolean enableEconomy; + protected boolean enableLeaseMoneyAccount; + protected boolean enableRentSystem; + protected boolean flagsInherit; protected FlagPermissions globalCreatorDefaults; - protected FlagPermissions globalResidenceDefaults; protected Map globalGroupDefaults; + protected FlagPermissions globalResidenceDefaults; + protected int infoToolId; protected String language; - protected boolean preventBuildInRent; - protected boolean stopOnSaveError; + protected boolean leaseAutoRenew; + protected int leaseCheckInterval; protected boolean legacyperms; + protected int minMoveUpdate; + protected String multiworldPlugin; protected String namefix; + protected Residence plugin; + protected boolean preventBuildInRent; + protected int rentCheckInterval; + protected int selectionToolId; protected boolean showIntervalMessages; protected boolean spoutEnable; - protected boolean enableLeaseMoneyAccount; - protected boolean enableDebug; - protected List customContainers; - protected List customBothClick; - protected List customRightClick; - private boolean enforceAreaInsideArea; + protected boolean stopOnSaveError; + protected boolean useLeases; - public ConfigManager(FileConfiguration config) { - globalCreatorDefaults = new FlagPermissions(); - globalResidenceDefaults = new FlagPermissions(); + public ConfigManager(final Residence plugin) { + this.plugin = plugin; + globalCreatorDefaults = new FlagPermissions(plugin); + globalResidenceDefaults = new FlagPermissions(plugin); globalGroupDefaults = new HashMap(); - this.load(config); + this.load(plugin.getConfig()); } public boolean allowAdminsOnly() { @@ -89,7 +91,7 @@ public class ConfigManager { } public boolean enableEconomy() { - return enableEconomy && Residence.getEconomyManager() != null; + return enableEconomy && plugin.getEconomyManager() != null; } public boolean enableLeaseMoneyAccount() { @@ -209,7 +211,7 @@ public class ConfigManager { } @SuppressWarnings("deprecation") - private void load(FileConfiguration config) { + private void load(final FileConfiguration config) { defaultGroup = config.getString("Global.DefaultGroup", "default").toLowerCase(); adminsOnly = config.getBoolean("Global.AdminOnlyCommands", false); useLeases = config.getBoolean("Global.UseLeaseSystem", false); @@ -243,20 +245,23 @@ public class ConfigManager { customContainers = config.getIntegerList("Global.CustomContainers"); customBothClick = config.getIntegerList("Global.CustomBothClick"); customRightClick = config.getIntegerList("Global.CustomRightClick"); - ConfigurationSection node = config.getConfigurationSection("Global.GroupDefault"); + final ConfigurationSection node = config.getConfigurationSection("Global.GroupDefault"); - if (!Residence.is1_8()) + if (!plugin.is1_8()) { actionBar = false; + } if (node != null) { - Set keys = node.getConfigurationSection(defaultGroup).getKeys(false); - if (keys != null) - for (String key : keys) + final Set keys = node.getConfigurationSection(defaultGroup).getKeys(false); + if (keys != null) { + for (final String key : keys) { globalGroupDefaults.put(key, FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.GroupDefault"))); + } + } } try { chatColor = ChatColor.valueOf(config.getString("Global.ResidenceChatColor", "DARK_PURPLE")); - } catch (Exception ex) { + } catch (final Exception ex) { chatColor = ChatColor.DARK_PURPLE; } } diff --git a/src/main/java/com/bekvon/bukkit/residence/FlagManager.java b/src/main/java/com/bekvon/bukkit/residence/FlagManager.java index 544d83b..2168788 100644 --- a/src/main/java/com/bekvon/bukkit/residence/FlagManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/FlagManager.java @@ -4,7 +4,6 @@ import java.util.HashMap; import java.util.Map.Entry; import org.bukkit.event.Listener; -import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import com.bekvon.bukkit.residence.listeners.flag.ResidenceFlyListener; @@ -12,27 +11,28 @@ import com.bekvon.bukkit.residence.listeners.flag.ResidenceFlyListener; import cn.citycraft.PluginHelper.config.FileConfig; public class FlagManager { - Plugin plugin; FileConfig config; - HashMap flagmap; - public FlagManager(Plugin plugin) { + Residence plugin; + + public FlagManager(final Residence plugin) { this.plugin = plugin; this.config = new FileConfig(plugin, "flagconfig.yml"); } public void init() { - PluginManager pm = plugin.getServer().getPluginManager(); + final PluginManager pm = plugin.getServer().getPluginManager(); flagmap = new HashMap(); - flagmap.put(config.getBoolean("Flag.Fly"), new ResidenceFlyListener()); + flagmap.put(config.getBoolean("Flag.Fly"), new ResidenceFlyListener(plugin)); - for (Entry fm : flagmap.entrySet()) - if (fm.getKey()) + for (final Entry fm : flagmap.entrySet()) { + if (fm.getKey()) { pm.registerEvents(fm.getValue(), plugin); - - Residence.getLog().info("扩展Flag初始化完毕!"); + } + } + plugin.getLogger().info("扩展Flag初始化完毕!"); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/Residence.java b/src/main/java/com/bekvon/bukkit/residence/Residence.java index fbb1eee..8dcbbae 100644 --- a/src/main/java/com/bekvon/bukkit/residence/Residence.java +++ b/src/main/java/com/bekvon/bukkit/residence/Residence.java @@ -84,195 +84,183 @@ public class Residence extends JavaPlugin { public static float bukkitver; - protected static ResidenceManager rmanager; - protected static SelectionManager smanager; - protected static PermissionManager gmanager; - protected static ConfigManager cmanager; - protected static FlagManager fmanager; - protected static TaskManager taskmanager; - protected static ResidenceBlockListener blistener; - protected static ResidencePlayerListener plistener; - protected static ResidenceEntityListener elistener; - protected static ResidencePlayerListener_1_8 plistener1_8; - protected static TransactionManager tmanager; - protected static PermissionListManager pmanager; - protected static LeaseManager leasemanager; - protected static WorldItemManager imanager; - protected static WorldFlagManager wmanager; - protected static RentManager rentmanager; - protected static ChatManager chatmanager; - protected static Server server; - public static HelpEntry helppages; - protected static Language language; - protected static Logger log; - protected static boolean useWorldEdit; - protected static EconomyInterface economy; public final static int saveVersion = 1; - protected static File dataFolder; - protected static int leaseBukkitId = -1; - protected static int rentBukkitId = -1; - protected static int healBukkitId = -1; - protected static int autosaveBukkitId = -1; - protected static List resadminToggle; - protected static FileConfig config; - private final static String[] validLanguages = { "English", "Chinese" }; - public static boolean initsuccess; - - protected HandlerMainCommand hdmcnd; - + public final static String[] validLanguages = { "English", "Chinese" }; + protected ResidenceBlockListener blistener; + protected ChatManager chatmanager; + protected ConfigManager cmanager; + protected FileConfig config; + protected File dataFolder; + protected Map deleteConfirm; + protected EconomyInterface economy; + protected ResidenceEntityListener elistener; protected boolean firstenable = true; - - public Map deleteConfirm; + protected FlagManager fmanager; + protected PermissionManager gmanager; + protected HandlerMainCommand hdmcnd; + protected HelpEntry helppages; + protected WorldItemManager imanager; + protected boolean init; + protected Language language; + protected LeaseManager leasemanager; + protected Logger log; + protected ResidencePlayerListener plistener; + protected ResidencePlayerListener_1_8 plistener1_8; + protected PermissionListManager pmanager; + protected RentManager rentmanager; + protected List resadminToggle; + protected ResidenceManager rmanager; + protected Server server; + protected SelectionManager smanager; + protected TaskManager taskmanager; + protected TransactionManager tmanager; + protected boolean useWorldEdit; + protected WorldFlagManager wmanager; public Residence() { } - public static ResidenceBlockListener getBlockListener() { + public ResidenceBlockListener getBlockListener() { return blistener; } - public static ChatManager getChatManager() { + public ChatManager getChatManager() { return chatmanager; } - public static ConfigManager getConfigManager() { - return cmanager; - } - - public static File getDataLocation() { - return dataFolder; - } - - public static EconomyInterface getEconomyManager() { - return economy; - } - - public static ResidenceEntityListener getEntityListener() { - return elistener; - } - - public static WorldItemManager getItemManager() { - return imanager; - } - - public static Language getLanguage() { - if (language == null) - language = new Language(); - return language; - } - - public static LeaseManager getLeaseManager() { - return leasemanager; - } - - public static Logger getLog() { - return log; - } - - public static PermissionManager getPermissionManager() { - return gmanager; - } - - public static FlagPermissions getPermsByLoc(Location loc) { - ClaimedResidence res = rmanager.getByLoc(loc); - if (res != null) - return res.getPermissions(); - else - return wmanager.getPerms(loc.getWorld().getName()); - } - - public static FlagPermissions getPermsByLocForPlayer(Location loc, Player player) { - ClaimedResidence res = rmanager.getByLoc(loc); - if (res != null) - return res.getPermissions(); - else if (player != null) - return wmanager.getPerms(player); - else - return wmanager.getPerms(loc.getWorld().getName()); - } - - public static ResidencePlayerListener getPlayerListener() { - return plistener; - } - - public static RentManager getRentManager() { - return rentmanager; - } - - public static ResidenceManager getResidenceManager() { - return rmanager; - } - - public static SelectionManager getSelectionManager() { - return smanager; - } - - public static Server getServ() { - return server; - } - - public static TransactionManager getTransactionManager() { - return tmanager; - } - - public static WorldFlagManager getWorldFlags() { - return wmanager; - } - - public static boolean is1_8() { - return bukkitver == 1.8; - } - - public static boolean isResAdminOn(Player player) { - if (resadminToggle.contains(player.getName())) - return true; - return false; - } - - public static boolean isResAdminOn(String player) { - if (resadminToggle.contains(player.toLowerCase())) - return true; - return false; - } - - public static boolean isUseWorldEdit() { - return useWorldEdit; - } - - public static void turnResAdminOn(Player player) { - resadminToggle.add(player.getName()); - } - - public static boolean validName(String name) { - if (name.contains(":") || name.contains(".")) - return false; - if (cmanager.getResidenceNameRegex() == null) - return true; - else { - String namecheck = name.replaceAll(cmanager.getResidenceNameRegex(), ""); - if (!name.equals(namecheck)) - return false; - return true; - } - } - - public void consoleMessage(String message) { - this.getLogger().info(message); - } - - public void consoleMessage(String[] msg) { - for (String s : msg) - consoleMessage(s); - } - @Override public FileConfiguration getConfig() { return config; } - public void loadLang(File langFile) throws FileNotFoundException, IOException, InvalidConfigurationException { - FileConfig langconfig = new FileConfig(this, langFile); - helppages = HelpEntry.parseHelp(langconfig, "CommandHelp"); + public ConfigManager getConfigManager() { + return cmanager; + } + + public File getDataLocation() { + return dataFolder; + } + + public Map getDeleteConfirm() { + return deleteConfirm; + } + + public EconomyInterface getEconomyManager() { + return economy; + } + + public ResidenceEntityListener getEntityListener() { + return elistener; + } + + public HelpEntry getHelppages() { + return helppages; + } + + public WorldItemManager getItemManager() { + return imanager; + } + + public Language getLanguage() { + if (language == null) { + language = new Language(); + } + return language; + } + + public LeaseManager getLeaseManager() { + return leasemanager; + } + + public Logger getLog() { + return log; + } + + public PermissionListManager getPermissionListManager() { + return pmanager; + } + + public PermissionManager getPermissionManager() { + return gmanager; + } + + public FlagPermissions getPermsByLoc(final Location loc) { + final ClaimedResidence res = rmanager.getByLoc(loc); + if (res != null) { + return res.getPermissions(); + } else { + return wmanager.getPerms(loc.getWorld().getName()); + } + } + + public FlagPermissions getPermsByLocForPlayer(final Location loc, final Player player) { + final ClaimedResidence res = rmanager.getByLoc(loc); + if (res != null) { + return res.getPermissions(); + } else if (player != null) { + return wmanager.getPerms(player); + } else { + return wmanager.getPerms(loc.getWorld().getName()); + } + } + + public ResidencePlayerListener getPlayerListener() { + return plistener; + } + + public RentManager getRentManager() { + return rentmanager; + } + + public ResidenceManager getResidenceManager() { + return rmanager; + } + + public SelectionManager getSelectionManager() { + return smanager; + } + + public Server getServ() { + return server; + } + + public TransactionManager getTransactionManager() { + return tmanager; + } + + public WorldFlagManager getWorldFlags() { + return wmanager; + } + + public boolean is1_8() { + return bukkitver == 1.8; + } + + public boolean isInit() { + return init; + } + + public boolean isResAdminOn(final Player player) { + if (resadminToggle.contains(player.getName())) { + return true; + } + return false; + } + + public boolean isResAdminOn(final String player) { + if (resadminToggle.contains(player.toLowerCase())) { + return true; + } + return false; + } + + public boolean isUseWorldEdit() { + return useWorldEdit; + } + + public void loadLang(final File langFile) throws FileNotFoundException, IOException, InvalidConfigurationException { + final FileConfig langconfig = new FileConfig(this, langFile); + helppages = HelpEntry.parseHelp(this, langconfig, "CommandHelp"); HelpEntry.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7)); InformationPager.setLinesPerPage(langconfig.getInt("HelpLinesPerPage", 7)); language = Language.parseText(langconfig, "Language"); @@ -280,9 +268,9 @@ public class Residence extends JavaPlugin { @SuppressWarnings("unchecked") public boolean loadYml() throws Exception { - File saveFolder = new File(dataFolder, "Save"); + final File saveFolder = new File(dataFolder, "Save"); try { - File worldFolder = new File(saveFolder, "Worlds"); + final File worldFolder = new File(saveFolder, "Worlds"); if (!saveFolder.isDirectory()) { this.getLogger().warning("领地数据保存目录不存在..."); this.getLogger().warning("请重新启动服务器生成新的文件..."); @@ -290,9 +278,9 @@ public class Residence extends JavaPlugin { } YMLSaveHelper yml; File loadFile; - long time = System.currentTimeMillis(); - HashMap worlds = new HashMap(); - for (World world : server.getWorlds()) { + final long time = System.currentTimeMillis(); + final HashMap worlds = new HashMap(); + for (final World world : server.getWorlds()) { loadFile = new File(worldFolder, "res_" + world.getName() + ".yml"); if (loadFile.isFile()) { yml = new YMLSaveHelper(loadFile); @@ -300,34 +288,34 @@ public class Residence extends JavaPlugin { worlds.put(world.getName(), yml.getRoot().get("Residences")); } } - rmanager = ResidenceManager.load(worlds); + rmanager = ResidenceManager.load(this, worlds); loadFile = new File(saveFolder, "forsale.yml"); if (loadFile.isFile()) { yml = new YMLSaveHelper(loadFile); yml.load(); - tmanager = TransactionManager.load((Map) yml.getRoot().get("Economy"), gmanager, rmanager); + tmanager = TransactionManager.load(this, (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(this, (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(this, (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(this, (Map) yml.getRoot().get("RentSystem")); } this.getLogger().info("从配置文件中读取领地数据,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)"); return true; - } catch (Exception ex) { + } catch (final Exception ex) { this.getLogger().warning("领地数据载入时发生错误,请报告以下内容给作者: "); this.getLogger().warning("错误: " + ex); throw ex; @@ -335,30 +323,27 @@ public class Residence extends JavaPlugin { } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender); + public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) { + final ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender); server.getPluginManager().callEvent(cevent); - if (cevent.isCancelled()) + if (cevent.isCancelled()) { return true; + } return hdmcnd.onCommand(sender, command, label, args); } @Override public void onDisable() { - server.getScheduler().cancelTask(autosaveBukkitId); - server.getScheduler().cancelTask(healBukkitId); - if (cmanager.useLeases()) - server.getScheduler().cancelTask(leaseBukkitId); - if (cmanager.enabledRentSystem()) - server.getScheduler().cancelTask(rentBukkitId); - if (initsuccess) + taskmanager.cancelall(); + if (init) { try { saveYml(); - DataBackup.run(); - } catch (Exception ex) { + DataBackup.run(this); + } catch (final Exception ex) { this.getLogger().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!"); this.getLogger().warning("错误: " + ex); } + } } @Override @@ -366,45 +351,50 @@ public class Residence extends JavaPlugin { try { log = this.getLogger(); bukkitver = Float.parseFloat(this.getServer().getBukkitVersion().substring(0, 3)); - initsuccess = false; + init = false; deleteConfirm = new HashMap(); resadminToggle = new ArrayList(); server = this.getServer(); dataFolder = this.getDataFolder(); - if (!dataFolder.isDirectory()) + if (!dataFolder.isDirectory()) { dataFolder.mkdirs(); - cmanager = new ConfigManager(this.getConfig()); - String multiworld = cmanager.getMultiworldPlugin(); + } + cmanager = new ConfigManager(this); + final String multiworld = cmanager.getMultiworldPlugin(); if (multiworld != null) { - Plugin plugin = server.getPluginManager().getPlugin(multiworld); - if (plugin != null) + final Plugin plugin = server.getPluginManager().getPlugin(multiworld); + if (plugin != null) { if (!plugin.isEnabled()) { this.getLogger().info(" - 加载多世界插件: " + multiworld); server.getPluginManager().enablePlugin(plugin); } + } } - gmanager = new PermissionManager(this.getConfig()); + gmanager = new PermissionManager(this); imanager = new WorldItemManager(this.getConfig()); - wmanager = new WorldFlagManager(this.getConfig()); + wmanager = new WorldFlagManager(this); - chatmanager = new ChatManager(); - rentmanager = new RentManager(); - for (String lang : validLanguages) + chatmanager = new ChatManager(this); + rentmanager = new RentManager(this); + for (final String lang : validLanguages) { try { - if (this.checkNewLanguageVersion(lang)) + if (this.checkNewLanguageVersion(lang)) { this.writeDefaultLanguageFile(lang); - } catch (Exception ex) { + } + } catch (final Exception ex) { this.getLogger().warning("语言文件升级失败: " + lang + ".yml"); - helppages = new HelpEntry(""); + helppages = new HelpEntry(this, ""); language = new Language(); } - File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() + ".yml"); + } + final File langFile = new File(new File(dataFolder, "Language"), cmanager.getLanguage() + ".yml"); try { - if (langFile.isFile()) + if (langFile.isFile()) { loadLang(langFile); - else + } else { this.getLogger().warning("语言文件不存在..."); - } catch (Exception ex) { + } + } catch (final Exception ex) { this.getLogger().warning("语言文件载入失败: " + cmanager.getLanguage() + ".yml 写入默认语言文件"); this.writeDefaultLanguageFile(cmanager.getLanguage()); loadLang(langFile); @@ -413,71 +403,82 @@ 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(); + final ResidenceVaultAdapter vault = (ResidenceVaultAdapter) gmanager.getPermissionsPlugin(); if (vault.economyOK()) { economy = vault; this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName()); } } - if (economy == null) + if (economy == null) { this.loadVaultEconomy(); - if (economy == null) + } + if (economy == null) { this.loadEssentialsEconomy(); - if (economy == null) + } + if (economy == null) { this.getLogger().warning("未找到经济系统..."); + } } try { this.loadYml(); - } catch (Exception e) { + } catch (final Exception e) { this.getLogger().warning("领地数据载入错误,可能造成插件无法启动,请尝试恢复备份文件!"); this.getLogger().warning("错误: " + e); } - if (rmanager == null) - rmanager = new ResidenceManager(); - if (leasemanager == null) - leasemanager = new LeaseManager(rmanager); - if (tmanager == null) - tmanager = new TransactionManager(rmanager, gmanager); - if (pmanager == null) - pmanager = new PermissionListManager(); - if (taskmanager == null) + if (rmanager == null) { + rmanager = new ResidenceManager(this); + } + if (leasemanager == null) { + leasemanager = new LeaseManager(this, rmanager); + } + if (tmanager == null) { + tmanager = new TransactionManager(this, rmanager, gmanager); + } + if (pmanager == null) { + pmanager = new PermissionListManager(this); + } + if (taskmanager == null) { taskmanager = new TaskManager(this); + } if (firstenable) { - if (!this.isEnabled()) + if (!this.isEnabled()) { return; + } FlagPermissions.initValidFlags(); - Plugin p = server.getPluginManager().getPlugin("WorldEdit"); + final Plugin p = server.getPluginManager().getPlugin("WorldEdit"); if (p != null) { - smanager = new WorldEditSelectionManager(server); + smanager = new WorldEditSelectionManager(this); useWorldEdit = true; this.getLogger().info("发现 WorldEdit"); } else { - smanager = new SelectionManager(server); + smanager = new SelectionManager(this); useWorldEdit = false; this.getLogger().warning("WorldEdit 未找到!"); } - blistener = new ResidenceBlockListener(); - plistener = new ResidencePlayerListener(); - elistener = new ResidenceEntityListener(); - plistener1_8 = new ResidencePlayerListener_1_8(); - PluginManager pm = getServer().getPluginManager(); + blistener = new ResidenceBlockListener(this); + plistener = new ResidencePlayerListener(this); + elistener = new ResidenceEntityListener(this); + plistener1_8 = new ResidencePlayerListener_1_8(this); + final PluginManager pm = getServer().getPluginManager(); pm.registerEvents(blistener, this); pm.registerEvents(plistener, this); - if (is1_8()) + if (is1_8()) { pm.registerEvents(plistener1_8, this); + } pm.registerEvents(elistener, this); firstenable = false; - } else + } else { plistener.reload(); + } fmanager = new FlagManager(this); fmanager.init(); - taskmanager.add(server.getScheduler().runTaskTimer(this, new HealTask(), 20, 20)); + taskmanager.add(server.getScheduler().runTaskTimer(this, new HealTask(this), 20, 20)); - HandlerMainCommand hdmcnd = new HandlerMainCommand(this); + hdmcnd = new HandlerMainCommand(this); hdmcnd.registerCommand(new CommandRc(this)); hdmcnd.registerCommand(new CommandRes(this)); hdmcnd.registerCommand(new CommandResLoad(this)); @@ -490,20 +491,22 @@ public class Residence extends JavaPlugin { if (cmanager.useLeases()) { int leaseInterval = cmanager.getLeaseCheckInterval(); leaseInterval = leaseInterval < 1 ? 1 : leaseInterval * 60 * 20; - taskmanager.add(server.getScheduler().runTaskTimer(this, new LeaseTask(), leaseInterval, leaseInterval)); + taskmanager.add(server.getScheduler().runTaskTimer(this, new LeaseTask(this), leaseInterval, leaseInterval)); } if (cmanager.enabledRentSystem()) { int rentint = cmanager.getRentCheckInterval(); rentint = rentint < 1 ? 1 : rentint * 60 * 20; - taskmanager.add(server.getScheduler().runTaskTimer(this, new RentTask(), rentint, rentint)); + taskmanager.add(server.getScheduler().runTaskTimer(this, new RentTask(this), rentint, rentint)); } - for (Player player : Bukkit.getServer().getOnlinePlayers()) - if (Residence.getPermissionManager().isResidenceAdmin(player)) + for (final Player player : Bukkit.getServer().getOnlinePlayers()) { + if (this.getPermissionManager().isResidenceAdmin(player)) { turnResAdminOn(player); + } + } this.getLogger().info("载入完成! 版本: " + this.getDescription().getVersion() + " 重制 by 喵♂呜"); - initsuccess = true; - } catch (Exception ex) { - initsuccess = false; + init = true; + } catch (final Exception ex) { + init = false; getServer().getPluginManager().disablePlugin(this); this.getLogger().warning(" - 初始化失败! 卸载插件! 请报告以下错误给作者,谢谢!"); this.getLogger().warning("错误: " + ex); @@ -519,10 +522,10 @@ public class Residence extends JavaPlugin { @Override public void reloadConfig() { config.reload(); - }; + } public void reloadPlugin() { - PluginManager pm = server.getPluginManager(); + final PluginManager pm = server.getPluginManager(); pm.disablePlugin(this); pm.enablePlugin(this); } @@ -530,31 +533,33 @@ public class Residence extends JavaPlugin { @Override public void saveConfig() { config.save(); - } + }; public void saveYml() throws IOException { - File saveFolder = new File(dataFolder, "Save"); - File worldFolder = new File(saveFolder, "Worlds"); + final File saveFolder = new File(dataFolder, "Save"); + final File worldFolder = new File(saveFolder, "Worlds"); worldFolder.mkdirs(); YMLSaveHelper yml; - long time = System.currentTimeMillis(); - Map save = rmanager.save(); - for (Entry entry : save.entrySet()) { - File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey() + ".yml"); - File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey() + ".yml"); + final long time = System.currentTimeMillis(); + final Map save = rmanager.save(); + for (final Entry entry : save.entrySet()) { + final File ymlSaveLoc = new File(worldFolder, "res_" + entry.getKey() + ".yml"); + final File tmpFile = new File(worldFolder, "tmp_res_" + entry.getKey() + ".yml"); yml = new YMLSaveHelper(tmpFile); yml.getRoot().put("Version", saveVersion); - World world = server.getWorld(entry.getKey()); - if (world != null) + final World world = server.getWorld(entry.getKey()); + if (world != null) { yml.getRoot().put("Seed", world.getSeed()); + } yml.getRoot().put("Residences", entry.getValue()); yml.save(); if (ymlSaveLoc.isFile()) { - File backupFolder = new File(worldFolder, "Backup"); + final File backupFolder = new File(worldFolder, "Backup"); backupFolder.mkdirs(); - File backupFile = new File(backupFolder, "res_" + entry.getKey() + ".yml"); - if (backupFile.isFile()) + final File backupFile = new File(backupFolder, "res_" + entry.getKey() + ".yml"); + if (backupFile.isFile()) { backupFile.delete(); + } ymlSaveLoc.renameTo(backupFile); } tmpFile.renameTo(ymlSaveLoc); @@ -569,11 +574,12 @@ public class Residence extends JavaPlugin { yml.getRoot().put("Economy", tmanager.save()); yml.save(); if (ymlSaveLoc.isFile()) { - File backupFolder = new File(saveFolder, "Backup"); + final File backupFolder = new File(saveFolder, "Backup"); backupFolder.mkdirs(); - File backupFile = new File(backupFolder, "forsale.yml"); - if (backupFile.isFile()) + final File backupFile = new File(backupFolder, "forsale.yml"); + if (backupFile.isFile()) { backupFile.delete(); + } ymlSaveLoc.renameTo(backupFile); } tmpFile.renameTo(ymlSaveLoc); @@ -586,11 +592,12 @@ public class Residence extends JavaPlugin { yml.getRoot().put("Leases", leasemanager.save()); yml.save(); if (ymlSaveLoc.isFile()) { - File backupFolder = new File(saveFolder, "Backup"); + final File backupFolder = new File(saveFolder, "Backup"); backupFolder.mkdirs(); - File backupFile = new File(backupFolder, "leases.yml"); - if (backupFile.isFile()) + final File backupFile = new File(backupFolder, "leases.yml"); + if (backupFile.isFile()) { backupFile.delete(); + } ymlSaveLoc.renameTo(backupFile); } tmpFile.renameTo(ymlSaveLoc); @@ -603,11 +610,12 @@ public class Residence extends JavaPlugin { yml.getRoot().put("PermissionLists", pmanager.save()); yml.save(); if (ymlSaveLoc.isFile()) { - File backupFolder = new File(saveFolder, "Backup"); + final File backupFolder = new File(saveFolder, "Backup"); backupFolder.mkdirs(); - File backupFile = new File(backupFolder, "permlists.yml"); - if (backupFile.isFile()) + final File backupFile = new File(backupFolder, "permlists.yml"); + if (backupFile.isFile()) { backupFile.delete(); + } ymlSaveLoc.renameTo(backupFile); } tmpFile.renameTo(ymlSaveLoc); @@ -620,82 +628,112 @@ public class Residence extends JavaPlugin { yml.getRoot().put("RentSystem", rentmanager.save()); yml.save(); if (ymlSaveLoc.isFile()) { - File backupFolder = new File(saveFolder, "Backup"); + final File backupFolder = new File(saveFolder, "Backup"); backupFolder.mkdirs(); - File backupFile = new File(backupFolder, "rent.yml"); - if (backupFile.isFile()) + final File backupFile = new File(backupFolder, "rent.yml"); + if (backupFile.isFile()) { backupFile.delete(); + } ymlSaveLoc.renameTo(backupFile); } tmpFile.renameTo(ymlSaveLoc); this.getLogger().info("保存领地数据到文件中,耗时" + ((float) (System.currentTimeMillis() - time) / 1000) + " 秒)"); - if (cmanager.showIntervalMessages()) + if (cmanager.showIntervalMessages()) { this.getLogger().info(" - 保存插件数据..."); + } } - 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"); - if (outFile.isFile()) { - FileConfig testconfig = new FileConfig(this, outFile); - int oldversion = testconfig.getInt("FieldsVersion", 0); - if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/" + lang + ".yml", false)) + public void turnResAdminOn(final Player player) { + resadminToggle.add(player.getName()); + } + + public boolean validName(final String name) { + if (name.contains(":") || name.contains(".")) { + return false; + } + if (cmanager.getResidenceNameRegex() == null) { + return true; + } else { + final String namecheck = name.replaceAll(cmanager.getResidenceNameRegex(), ""); + if (!name.equals(namecheck)) { return false; - FileConfig testconfig2 = new FileConfig(this, checkFile); + } + return true; + } + } + + private boolean checkNewLanguageVersion(final String lang) throws IOException, FileNotFoundException, InvalidConfigurationException { + final File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml"); + final File checkFile = new File(new File(this.getDataFolder(), "Language"), "temp-" + lang + ".yml"); + if (outFile.isFile()) { + final FileConfig testconfig = new FileConfig(this, outFile); + final int oldversion = testconfig.getInt("FieldsVersion", 0); + if (!this.writeDefaultFileFromJar(checkFile, "languagefiles/" + lang + ".yml", false)) { + return false; + } + final FileConfig testconfig2 = new FileConfig(this, checkFile); testconfig2.load(checkFile); - int newversion = testconfig2.getInt("FieldsVersion", oldversion); - if (checkFile.isFile()) + final int newversion = testconfig2.getInt("FieldsVersion", oldversion); + if (checkFile.isFile()) { checkFile.delete(); - if (newversion > oldversion) + } + if (newversion > oldversion) { return true; + } return false; } return true; } private void loadEssentialsEconomy() { - Plugin p = getServer().getPluginManager().getPlugin("Essentials"); + final Plugin p = getServer().getPluginManager().getPlugin("Essentials"); if (p != null) { economy = new EssentialsEcoAdapter((Essentials) p); this.getLogger().info("成功关联Essentials Economy!"); - } else + } else { this.getLogger().info("Essentials Economy 未找到!"); + } } private void loadVaultEconomy() { - Plugin p = getServer().getPluginManager().getPlugin("Vault"); + final Plugin p = getServer().getPluginManager().getPlugin("Vault"); if (p != null) { - ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer()); + final ResidenceVaultAdapter vault = new ResidenceVaultAdapter(getServer()); if (vault.economyOK()) { this.getLogger().info("发现 Vault 使用经济系统: " + vault.getEconomyName()); economy = vault; - } else + } else { this.getLogger().info("发现 Vault, 但是 Vault 未找到经济系统..."); - } else + } + } else { this.getLogger().info("Vault 未找到!"); + } } @SuppressWarnings("resource") - private boolean writeDefaultFileFromJar(File writeName, String jarPath, boolean backupOld) { + private boolean writeDefaultFileFromJar(final File writeName, final String jarPath, final boolean backupOld) { try { - File fileBackup = new File(this.getDataFolder(), "backup-" + writeName); - File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getCanonicalFile(); + final File fileBackup = new File(this.getDataFolder(), "backup-" + writeName); + final File jarloc = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getCanonicalFile(); if (jarloc.isFile()) { - JarFile jar = new JarFile(jarloc); - JarEntry entry = jar.getJarEntry(jarPath); + final JarFile jar = new JarFile(jarloc); + final JarEntry entry = jar.getJarEntry(jarPath); if (entry != null && !entry.isDirectory()) { - InputStream in = jar.getInputStream(entry); - InputStreamReader isr = new InputStreamReader(in, "UTF8"); - if (writeName.isFile()) + final InputStream in = jar.getInputStream(entry); + final InputStreamReader isr = new InputStreamReader(in, "UTF8"); + if (writeName.isFile()) { if (backupOld) { - if (fileBackup.isFile()) + if (fileBackup.isFile()) { fileBackup.delete(); + } writeName.renameTo(fileBackup); - } else + } else { writeName.delete(); - FileOutputStream out = new FileOutputStream(writeName); - OutputStreamWriter osw = new OutputStreamWriter(out, "UTF8"); - char[] tempbytes = new char[512]; + } + } + final FileOutputStream out = new FileOutputStream(writeName); + final OutputStreamWriter osw = new OutputStreamWriter(out, "UTF8"); + final char[] tempbytes = new char[512]; int readbytes = isr.read(tempbytes, 0, 512); while (readbytes > -1) { osw.write(tempbytes, 0, readbytes); @@ -707,16 +745,17 @@ public class Residence extends JavaPlugin { } } return false; - } catch (Exception ex) { + } catch (final Exception ex) { this.getLogger().warning("文件写入失败: " + writeName); return false; } } - private void writeDefaultLanguageFile(String lang) { - File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml"); + private void writeDefaultLanguageFile(final String lang) { + final File outFile = new File(new File(this.getDataFolder(), "Language"), lang + ".yml"); outFile.getParentFile().mkdirs(); - if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true)) + if (this.writeDefaultFileFromJar(outFile, "languagefiles/" + lang + ".yml", true)) { this.getLogger().info("保存默认 " + lang + " 语言文件..."); + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java b/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java deleted file mode 100644 index 896241e..0000000 --- a/src/main/java/com/bekvon/bukkit/residence/ResidenceCommandListener.java +++ /dev/null @@ -1,1337 +0,0 @@ -/* - * To change this template, choose Tools | Templates and open the template in the editor. - */ -package com.bekvon.bukkit.residence; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import com.bekvon.bukkit.residence.permissions.PermissionGroup; -import com.bekvon.bukkit.residence.protection.ClaimedResidence; -import com.bekvon.bukkit.residence.protection.CuboidArea; -import com.bekvon.bukkit.residence.protection.FlagPermissions; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; - -public class ResidenceCommandListener extends Residence { - - @SuppressWarnings("deprecation") - public boolean commandRes(String[] args, boolean resadmin, Command command, CommandSender sender) { - // if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?")) - // return commandHelp(args, resadmin, sender); - int page = 1; - // try { - // if (args.length > 0) - // page = Integer.parseInt(args[args.length - 1]); - // } catch (Exception ex) { - // } - Player player = (Player) sender; - PermissionGroup group = null; - String pname = null; - // if (sender instanceof Player) { - // player = (Player) sender; - // group = Residence.getPermissionManager().getGroup(player); - // pname = player.getName(); - // } else - // resadmin = true; - // if (cmanager.allowAdminsOnly()) - // if (!resadmin) { - // sender.sendMessage(ChatColor.RED + language.getPhrase("AdminOnly")); - // return true; - // } - // if (args.length == 0) - // return false; - // if (args.length == 0) { - // args = new String[1]; - // args[0] = "?"; - // } - String cmd = args[0].toLowerCase(); - - // if (cmd.equals("remove") || cmd.equals("delete")) - // return commandResRemove(args, resadmin, sender, page); - // if (cmd.equals("confirm")) - // return commandResConfirm(args, resadmin, sender, page); - // if (cmd.equals("version")) { - // sender.sendMessage(ChatColor.GRAY + "------------------------------------"); - // sender.sendMessage(ChatColor.RED + "当前服务器运行的 " + ChatColor.GOLD + "Residence" + ChatColor.RED + " 版本: " + ChatColor.BLUE + this.getDescription().getVersion()); - // sender.sendMessage(ChatColor.GREEN + "创建者: " + ChatColor.YELLOW + "bekvon"); - // sender.sendMessage(ChatColor.GREEN + "升级到 1.8 by: " + ChatColor.YELLOW + "DartCZ"); - // sender.sendMessage(ChatColor.RED + "升级到最新无UUID版本 by: " + ChatColor.YELLOW + "喵♂呜"); - // String names = null; - // List authlist = this.getDescription().getAuthors(); - // for (String auth : authlist) - // if (names == null) - // names = auth; - // else - // names = names + ", " + auth; - // sender.sendMessage(ChatColor.GREEN + "作者: " + ChatColor.YELLOW + names); - // sender.sendMessage(ChatColor.DARK_AQUA + "插件命令列表,帮助, 请查看wiki:"); - // sender.sendMessage(ChatColor.GREEN + "http://residencebukkitmod.wikispaces.com/"); - // sender.sendMessage(ChatColor.AQUA + "重制版本请查看Jenkins:"); - // sender.sendMessage(ChatColor.BLUE + this.getDescription().getWebsite()); - // sender.sendMessage(ChatColor.GRAY + "------------------------------------"); - // return true; - // } - // if (cmd.equals("setowner") && args.length == 3) { - // if (!resadmin) { - // sender.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - // return true; - // } - // ClaimedResidence area = rmanager.getByName(args[1]); - // if (area != null) { - // area.getPermissions().setOwner(args[2], true); - // if (area.getParent() == null) - // sender.sendMessage(ChatColor.GREEN - // + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN)); - // else - // sender.sendMessage(ChatColor.GREEN + language.getPhrase("SubzoneOwnerChange", - // ChatColor.YELLOW + " " + args[1].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN)); - // } else - // sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - // return true; - // } - - if (player == null) - return true; - if (command.getName().equals("resadmin")) - if (args.length == 1 && args[0].equals("on")) { - resadminToggle.add(player.getName()); - player.sendMessage(ChatColor.YELLOW + language.getPhrase("AdminToggle", language.getPhrase("TurnOn"))); - return true; - } else if (args.length == 1 && args[0].equals("off")) { - resadminToggle.remove(player.getName()); - player.sendMessage(ChatColor.YELLOW + language.getPhrase("AdminToggle", language.getPhrase("TurnOff"))); - return true; - } - if (!resadmin && resadminToggle.contains(player.getName())) - if (!gmanager.isResidenceAdmin(player)) - resadminToggle.remove(player.getName()); - - // 此处开始的命令必须Player执行 - - if (cmd.equals("select")) - return commandResSelect(args, resadmin, player, page); - if (cmd.equals("create")) - return commandResCreate(args, resadmin, player, page); - if (cmd.equals("subzone") || cmd.equals("sz")) - return commandResSubzone(args, resadmin, player, page); - if (cmd.equals("sublist")) - return commandResSublist(args, resadmin, player, page); - if (cmd.equals("removeall")) { - if (args.length != 2) - return false; - if (resadmin || args[1].endsWith(pname)) { - rmanager.removeAllByOwner(player, args[1]); - player.sendMessage(ChatColor.GREEN + language.getPhrase("RemovePlayersResidences", ChatColor.YELLOW + args[1] + ChatColor.GREEN)); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - if (cmd.equals("compass")) - return commandResCompass(args, resadmin, player, page); - if (cmd.equals("area")) - return commandResArea(args, resadmin, player, page); - if (cmd.equals("lists")) - return commandResList(args, resadmin, player, page); - if (cmd.equals("default")) { - if (args.length == 2) { - ClaimedResidence res = rmanager.getByName(args[1]); - res.getPermissions().applyDefaultFlags(player, resadmin); - return true; - } - return false; - } - if (cmd.equals("limits")) { - if (args.length == 1) { - gmanager.getGroup(player).printLimits(player); - return true; - } - return false; - } - if (cmd.equals("info")) { - if (args.length == 1) { - String area = rmanager.getNameByLoc(player.getLocation()); - if (area != null) - rmanager.printAreaInfo(area, player); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args.length == 2) { - rmanager.printAreaInfo(args[1], player); - return true; - } - return false; - } - if (cmd.equals("check")) { - if (args.length == 3 || args.length == 4) { - if (args.length == 4) - pname = args[3]; - ClaimedResidence res = rmanager.getByName(args[1]); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - if (!res.getPermissions().hasApplicableFlag(pname, args[2])) - player.sendMessage(language.getPhrase("FlagCheckFalse", - ChatColor.YELLOW + args[2] + ChatColor.RED + "." + ChatColor.YELLOW + pname + ChatColor.RED + "." + ChatColor.YELLOW + args[1] + ChatColor.RED)); - else - player.sendMessage(language.getPhrase("FlagCheckTrue", - ChatColor.GREEN + args[2] + ChatColor.YELLOW + "." + ChatColor.GREEN + pname + ChatColor.YELLOW + "." + ChatColor.YELLOW + args[1] + ChatColor.RED + "." - + (res.getPermissions().playerHas(pname, res.getPermissions().getWorld(), args[2], false) ? ChatColor.GREEN + "TRUE" : ChatColor.RED + "FALSE"))); - return true; - } - return false; - } - if (cmd.equals("current")) { - if (args.length != 1) - return false; - String res = rmanager.getNameByLoc(player.getLocation()); - if (res == null) - player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); - else - player.sendMessage(ChatColor.GREEN + language.getPhrase("InResidence", ChatColor.YELLOW + res + ChatColor.GREEN)); - return true; - } - if (cmd.equals("set")) - return commandResSet(args, resadmin, player, page); - if (cmd.equals("pset")) - return commandResPset(args, resadmin, player, page); - if (cmd.equals("gset")) - return commandResGset(args, resadmin, player, page); - if (cmd.equals("lset")) - return commandResLset(args, resadmin, player, page); - if (cmd.equals("list")) { - if (args.length == 1) { - rmanager.listResidences(player); - return true; - } else if (args.length == 2) { - try { - Integer.parseInt(args[1]); - rmanager.listResidences(player, page); - } catch (Exception ex) { - rmanager.listResidences(player, args[1]); - } - return true; - } else if (args.length == 3) { - rmanager.listResidences(player, args[1], page); - return true; - } - return false; - } - if (cmd.equals("listhidden")) { - if (!resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - if (args.length == 1) { - rmanager.listResidences(player, 1, true); - return true; - } else if (args.length == 2) { - try { - Integer.parseInt(args[1]); - rmanager.listResidences(player, page, true); - } catch (Exception ex) { - rmanager.listResidences(player, args[1], 1, true); - } - return true; - } else if (args.length == 3) { - rmanager.listResidences(player, args[1], page, true); - return true; - } - return false; - } - if (cmd.equals("rename")) { - if (args.length == 3) { - rmanager.renameResidence(player, args[1], args[2], resadmin); - return true; - } - return false; - } - if (cmd.equals("renamearea")) { - if (args.length == 4) { - ClaimedResidence res = rmanager.getByName(args[1]); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - res.renameArea(player, args[2], args[3], resadmin); - return true; - } - return false; - } - if (cmd.equals("unstuck")) { - if (args.length != 1) - return false; - group = gmanager.getGroup(player); - if (!group.hasUnstuckAccess()) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - ClaimedResidence res = rmanager.getByLoc(player.getLocation()); - if (res == null) - player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); - else { - player.sendMessage(ChatColor.YELLOW + language.getPhrase("Moved") + "..."); - player.teleport(res.getOutsideFreeLoc(player.getLocation())); - } - return true; - } - if (cmd.equals("kick")) { - if (args.length != 2) - return false; - Player targetplayer = Bukkit.getPlayer(args[1]); - if (targetplayer == null) - return false; - group = gmanager.getGroup(player); - if (!group.hasKickAccess()) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - ClaimedResidence res = rmanager.getByLoc(targetplayer.getLocation()); - if (res.getOwner().equals(player.getName())) - if (res.getPlayersInResidence().contains(targetplayer)) { - targetplayer.teleport(res.getOutsideFreeLoc(player.getLocation())); - targetplayer.sendMessage(ChatColor.RED + language.getPhrase("Kicked") + "!"); - } - - } - if (cmd.equals("mirror")) { - if (args.length != 3) - return false; - rmanager.mirrorPerms(player, args[2], args[1], resadmin); - return true; - } - if (cmd.equals("listall")) { - if (args.length == 1) - rmanager.listAllResidences(player, 1); - else if (args.length == 2) - try { - rmanager.listAllResidences(player, page); - } catch (Exception ex) { - } - else - return false; - return true; - } - if (cmd.equals("listallhidden")) { - if (!resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - if (args.length == 1) - rmanager.listAllResidences(player, 1, true); - else if (args.length == 2) - try { - rmanager.listAllResidences(player, page, true); - } catch (Exception ex) { - } - else - return false; - return true; - } - if (cmd.equals("material")) { - if (args.length != 2) - return false; - try { - player.sendMessage(ChatColor.GREEN + language.getPhrase("MaterialGet", - ChatColor.GOLD + args[1] + ChatColor.GREEN + "." + ChatColor.RED + Material.getMaterial(Integer.parseInt(args[1])).name() + ChatColor.GREEN)); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial")); - } - return true; - } - if (cmd.equals("tpset")) { - ClaimedResidence res = rmanager.getByLoc(player.getLocation()); - if (res != null) - res.setTpLoc(player, resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - if (cmd.equals("tp")) { - if (args.length != 2) - return false; - ClaimedResidence res = rmanager.getByName(args[1]); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - res.tpToResidence(player, player, resadmin); - return true; - } - if (cmd.equals("lease")) - return commandResLease(args, resadmin, player, page); - if (cmd.equals("bank")) - return commandResBank(args, resadmin, player, page); - if (cmd.equals("market")) - return commandResMarket(args, resadmin, player, page); - if (cmd.equals("message")) - return commandResMessage(args, resadmin, player, page); - if (cmd.equals("give") && args.length == 3) { - rmanager.giveResidence(player, args[2], args[1], resadmin); - return true; - } - if (cmd.equals("server")) { - if (!resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - if (args.length == 2) { - ClaimedResidence res = rmanager.getByName(args[1]); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - res.getPermissions().setOwner("Server Land", false); - player.sendMessage( - ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + args[1] + ChatColor.GREEN + "." + ChatColor.YELLOW + "Server Land" + ChatColor.GREEN)); - return true; - } else { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - } - if (cmd.equals("clearflags")) { - if (!resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - ClaimedResidence area = rmanager.getByName(args[1]); - if (area != null) { - area.getPermissions().clearFlags(); - player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagsCleared")); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - if (cmd.equals("tool")) { - player.sendMessage(ChatColor.YELLOW + language.getPhrase("SelectionTool") + ":" + ChatColor.GREEN + Material.getMaterial(cmanager.getSelectionTooldID())); - player.sendMessage(ChatColor.YELLOW + language.getPhrase("InfoTool") + ": " + ChatColor.GREEN + Material.getMaterial(cmanager.getInfoToolID())); - return true; - } - return false; - } - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - return true; - // ResidenceCommandEvent cevent = new ResidenceCommandEvent(command.getName(), args, sender); - // server.getPluginManager().callEvent(cevent); - // if (cevent.isCancelled()) - // return true; - // if (command.getName().equals("resreload") && args.length == 0) { - // if (sender instanceof Player) { - // Player player = (Player) sender; - // if (Residence.getPermissionManager().isResidenceAdmin(player)) { - // this.reloadPlugin(); - // sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件."); - // System.out.println("[Residence] 重载 by " + player.getName() + "."); - // } - // } else { - // this.reloadPlugin(); - // System.out.println("[Residence] 重载 by 控制台."); - // } - // return true; - // } - // if (command.getName().equals("resload")) { - // if (!(sender instanceof Player) || sender instanceof Player && gmanager.isResidenceAdmin((Player) sender)) - // try { - // this.loadYml(); - // sender.sendMessage(ChatColor.GREEN + "[Residence] 从配置保存文件重新载入数据..."); - // } catch (Exception ex) { - // sender.sendMessage(ChatColor.RED + "[Residence] 无法从配置保存文件重新载入数据, 请查看控制台异常信息!"); - // sender.sendMessage(ChatColor.RED + "[Residence] 异常: " + ex.getMessage()); - // Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex); - // } - // return true; - // } else if (command.getName().equals("resworld")) { - // if (args.length == 2 && args[0].equalsIgnoreCase("remove")) - // if (sender instanceof ConsoleCommandSender) { - // rmanager.removeAllFromWorld(sender, args[1]); - // return true; - // } else - // sender.sendMessage(ChatColor.RED + "当前命令必须从控制台执行."); - // return false; - // } else if (command.getName().equals("rc")) { - // if (sender instanceof Player) { - // Player player = (Player) sender; - // String pname = player.getName(); - // if (cmanager.chatEnabled()) { - // if (args.length == 0) - // plistener.tooglePlayerResidenceChat(player); - // else { - // String area = plistener.getCurrentResidenceName(pname); - // if (area != null) { - // ChatChannel channel = chatmanager.getChannel(area); - // if (channel != null) { - // String message = ""; - // for (String arg : args) - // message = message + " " + arg; - // channel.chat(pname, message); - // } else - // player.sendMessage(ChatColor.RED + language.getPhrase("InvalidChannel")); - // } else - // player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); - // } - // } else - // player.sendMessage(ChatColor.RED + language.getPhrase("ChatDisabled")); - // } - // return true; - // } else if (command.getName().equals("res") || command.getName().equals("residence") || command.getName().equals("resadmin")) { - // boolean resadmin = false; - // if (sender instanceof Player) { - // if (command.getName().equals("resadmin") && gmanager.isResidenceAdmin((Player) sender)) - // resadmin = true; - // if (command.getName().equals("resadmin") && !gmanager.isResidenceAdmin((Player) sender)) { - // ((Player) sender).sendMessage(ChatColor.RED + language.getPhrase("NonAdmin")); - // return true; - // } - // } else - // resadmin = true; - // return commandRes(args, resadmin, command, sender); - // } - // return super.onCommand(sender, command, label, args); - } - - // private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) { - // if (helppages != null) { - // String helppath = "res"; - // for (String arg : args) { - // if (arg.equalsIgnoreCase("?")) - // break; - // helppath = helppath + "." + arg; - // } - // int page = 1; - // if (!args[args.length - 1].equalsIgnoreCase("?")) - // try { - // page = Integer.parseInt(args[args.length - 1]); - // } catch (Exception ex) { - // sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidHelp")); - // } - // if (helppages.containesEntry(helppath)) { - // helppages.printHelp(sender, page, helppath); - // return true; - // } - // } - // return false; - // } - - private boolean commandResArea(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 4) - if (args[1].equals("remove")) { - ClaimedResidence res = rmanager.getByName(args[2]); - if (res != null) - res.removeArea(player, args[3], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args[1].equals("add")) { - WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); - if (wep != null) - if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) - smanager.worldEdit(player); - if (smanager.hasPlacedBoth(player.getName())) { - ClaimedResidence res = rmanager.getByName(args[2]); - if (res != null) - res.addArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[3], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); - return true; - } else if (args[1].equals("replace")) { - WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); - if (wep != null) - if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) - smanager.worldEdit(player); - if (smanager.hasPlacedBoth(player.getName())) { - ClaimedResidence res = rmanager.getByName(args[2]); - if (res != null) - res.replaceArea(player, new CuboidArea(smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName())), args[3], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); - return true; - } - if ((args.length == 3 || args.length == 4) && args[1].equals("list")) { - ClaimedResidence res = rmanager.getByName(args[2]); - if (res != null) - res.printAreaList(player, page); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if ((args.length == 3 || args.length == 4) && args[1].equals("listall")) { - ClaimedResidence res = rmanager.getByName(args[2]); - if (res != null) - res.printAdvancedAreaList(player, page); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - return false; - } - - private boolean commandResBank(String[] args, boolean resadmin, Player player, int page) { - if (args.length != 3) - return false; - ClaimedResidence res = rmanager.getByName(plistener.getCurrentResidenceName(player.getName())); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("NotInResidence")); - return true; - } - int amount = 0; - try { - amount = Integer.parseInt(args[2]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); - return true; - } - if (args[1].equals("deposit")) - res.getBank().deposit(player, amount, resadmin); - else if (args[1].equals("withdraw")) - res.getBank().withdraw(player, amount, resadmin); - else - return false; - return true; - } - - private boolean commandResCompass(String[] args, boolean resadmin, Player player, int page) { - if (args.length != 2) { - player.setCompassTarget(player.getWorld().getSpawnLocation()); - player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetReset")); - return true; - } - if (rmanager.getByName(args[1]) != null) { - if (rmanager.getByName(args[1]).getWorld().equalsIgnoreCase(player.getWorld().getName())) { - Location low = rmanager.getByName(args[1]).getArea("main").getLowLoc(); - Location high = rmanager.getByName(args[1]).getArea("main").getHighLoc(); - Location mid = new Location(low.getWorld(), (low.getBlockX() + high.getBlockX()) / 2, (low.getBlockY() + high.getBlockY()) / 2, (low.getBlockZ() + high.getBlockZ()) / 2); - player.setCompassTarget(mid); - player.sendMessage(ChatColor.GREEN + language.getPhrase("CompassTargetSet", ChatColor.YELLOW + args[1] + ChatColor.GREEN)); - } - } else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - - // private boolean commandResConfirm(String[] args, boolean resadmin, CommandSender sender, int page) { - // Player player = null; - // String name = "Console"; - // if (sender instanceof Player) { - // player = (Player) sender; - // name = player.getName(); - // } - // if (args.length == 1) { - // String area = deleteConfirm.get(name); - // if (area == null) - // sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - // else { - // rmanager.removeResidence(player, area, resadmin); - // deleteConfirm.remove(name); - // if (player == null) - // sender.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); - // } - // } - // return true; - // } - - private boolean commandResCreate(String[] args, boolean resadmin, Player player, int page) { - if (args.length != 2) - return false; - WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); - if (wep != null) - if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) - smanager.worldEdit(player); - if (smanager.hasPlacedBoth(player.getName())) { - rmanager.addResidence(player, args[1], smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), resadmin); - return true; - } else { - player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); - return true; - } - } - - private boolean commandResGset(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 4) { - ClaimedResidence area = rmanager.getByLoc(player.getLocation()); - if (area != null) - area.getPermissions().setGroupFlag(player, args[1], args[2], args[3], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea")); - return true; - } else if (args.length == 5) { - ClaimedResidence area = rmanager.getByName(args[1]); - if (area != null) - area.getPermissions().setGroupFlag(player, args[2], args[3], args[4], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - return false; - } - - private boolean commandResLease(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 2 || args.length == 3) { - if (args[1].equals("renew")) { - if (args.length == 3) - leasemanager.renewArea(args[2], player); - else - leasemanager.renewArea(rmanager.getNameByLoc(player.getLocation()), player); - return true; - } else if (args[1].equals("cost")) - if (args.length == 3) { - ClaimedResidence res = Residence.getResidenceManager().getByName(args[2]); - if (res == null || leasemanager.leaseExpires(args[2])) { - int cost = leasemanager.getRenewCost(res); - player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + args[2] + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW)); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire")); - return true; - } else { - String area = rmanager.getNameByLoc(player.getLocation()); - ClaimedResidence res = rmanager.getByName(area); - if (area == null || res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidArea")); - return true; - } - if (leasemanager.leaseExpires(area)) { - int cost = leasemanager.getRenewCost(res); - player.sendMessage(ChatColor.YELLOW + language.getPhrase("LeaseRenewalCost", ChatColor.RED + area + ChatColor.YELLOW + "." + ChatColor.RED + cost + ChatColor.YELLOW)); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire")); - return true; - } - } else if (args.length == 4) - if (args[1].equals("set")) { - if (!resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - return true; - } - if (args[3].equals("infinite")) { - if (leasemanager.leaseExpires(args[2])) { - leasemanager.removeExpireTime(args[2]); - player.sendMessage(ChatColor.GREEN + language.getPhrase("LeaseInfinite")); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("LeaseNotExpire")); - return true; - } else { - int days; - try { - days = Integer.parseInt(args[3]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidDays")); - return true; - } - leasemanager.setExpireTime(player, args[2], days); - return true; - } - } - return false; - } - - private boolean commandResList(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 2) { - if (args[1].equals("list")) { - pmanager.printLists(player); - return true; - } - } else if (args.length == 3) { - if (args[1].equals("view")) { - pmanager.printList(player, args[2]); - return true; - } else if (args[1].equals("remove")) { - pmanager.removeList(player, args[2]); - return true; - } else if (args[1].equals("add")) { - pmanager.makeList(player, args[2]); - return true; - } - } else if (args.length == 4) { - if (args[1].equals("apply")) { - pmanager.applyListToResidence(player, args[2], args[3], resadmin); - return true; - } - } else if (args.length == 5) { - if (args[1].equals("set")) { - pmanager.getList(player.getName(), args[2]).setFlag(args[3], FlagPermissions.stringToFlagState(args[4])); - player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet")); - return true; - } - } else if (args.length == 6) - if (args[1].equals("gset")) { - pmanager.getList(player.getName(), args[2]).setGroupFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5])); - player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet")); - return true; - } else if (args[1].equals("pset")) { - pmanager.getList(player.getName(), args[2]).setPlayerFlag(args[3], args[4], FlagPermissions.stringToFlagState(args[5])); - player.sendMessage(ChatColor.GREEN + language.getPhrase("FlagSet")); - return true; - } - return false; - } - - private boolean commandResLset(String[] args, boolean resadmin, Player player, int page) { - ClaimedResidence res = null; - Material mat = null; - String listtype = null; - boolean showinfo = false; - if (args.length == 2 && args[1].equals("info")) { - res = rmanager.getByLoc(player.getLocation()); - showinfo = true; - } else if (args.length == 3 && args[2].equals("info")) { - res = rmanager.getByName(args[1]); - showinfo = true; - } - if (showinfo) { - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - player.sendMessage(ChatColor.RED + "Blacklist:"); - res.getItemBlacklist().printList(player); - player.sendMessage(ChatColor.GREEN + "Ignorelist:"); - res.getItemIgnoreList().printList(player); - return true; - } else if (args.length == 4) { - res = rmanager.getByName(args[1]); - listtype = args[2]; - try { - mat = Material.valueOf(args[3].toUpperCase()); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial")); - return true; - } - } else if (args.length == 3) { - res = rmanager.getByLoc(player.getLocation()); - listtype = args[1]; - try { - mat = Material.valueOf(args[2].toUpperCase()); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMaterial")); - return true; - } - } - if (res != null && listtype != null) { - if (listtype.equalsIgnoreCase("blacklist")) - res.getItemBlacklist().playerListChange(player, mat, resadmin); - else if (listtype.equalsIgnoreCase("ignorelist")) - res.getItemIgnoreList().playerListChange(player, mat, resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidList")); - return true; - } else { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - } - - private boolean commandResMarket(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 1) - return false; - String command = args[1].toLowerCase(); - if (command.equals("list")) - return commandResMarketList(args, resadmin, player, page); - if (command.equals("autorenew")) - return commandResMarketAutorenew(args, resadmin, player, page); - if (command.equals("rentable")) - return commandResMarketRentable(args, resadmin, player, page); - if (command.equals("rent")) - return commandResMarketRent(args, resadmin, player, page); - if (command.equals("release")) { - if (args.length != 3) - return false; - if (rentmanager.isRented(args[2])) - rentmanager.removeFromForRent(player, args[2], resadmin); - else - rentmanager.unrent(player, args[2], resadmin); - return true; - } - if (command.equals("info")) { - if (args.length == 2) { - String areaname = rmanager.getNameByLoc(player.getLocation()); - tmanager.viewSaleInfo(areaname, player); - if (cmanager.enabledRentSystem() && rentmanager.isForRent(areaname)) - rentmanager.printRentInfo(player, areaname); - } else if (args.length == 3) { - tmanager.viewSaleInfo(args[2], player); - if (cmanager.enabledRentSystem() && rentmanager.isForRent(args[2])) - rentmanager.printRentInfo(player, args[2]); - } else - return false; - return true; - } - if (command.equals("buy")) { - if (args.length != 3) - return false; - tmanager.buyPlot(args[2], player, resadmin); - return true; - } - if (command.equals("unsell")) { - if (args.length != 3) - return false; - tmanager.removeFromSale(player, args[2], resadmin); - return true; - } - if (command.equals("sell")) { - if (args.length != 4) - return false; - int amount; - try { - amount = Integer.parseInt(args[3]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); - return true; - } - tmanager.putForSale(args[2], player, amount, resadmin); - return true; - } - return false; - } - - private boolean commandResMarketAutorenew(String[] args, boolean resadmin, Player player, int page) { - if (!cmanager.enableEconomy()) { - player.sendMessage(ChatColor.RED + language.getPhrase("MarketDisabled")); - return true; - } - if (args.length != 4) - return false; - boolean value; - if (args[3].equalsIgnoreCase("true") || args[3].equalsIgnoreCase("t")) - value = true; - else if (args[3].equalsIgnoreCase("false") || args[3].equalsIgnoreCase("f")) - value = false; - else { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean")); - return true; - } - if (rentmanager.isRented(args[2]) && rentmanager.getRentingPlayer(args[2]).equalsIgnoreCase(player.getName())) - rentmanager.setRentedRepeatable(player, args[2], value, resadmin); - else if (rentmanager.isForRent(args[2])) - rentmanager.setRentRepeatable(player, args[2], value, resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("RentReleaseInvalid", ChatColor.YELLOW + args[2] + ChatColor.RED)); - return true; - } - - private boolean commandResMarketList(String[] args, boolean resadmin, Player player, int page) { - if (!cmanager.enableEconomy()) { - player.sendMessage(ChatColor.RED + language.getPhrase("MarketDisabled")); - return true; - } - player.sendMessage(ChatColor.BLUE + "---" + language.getPhrase("MarketList") + "---"); - tmanager.printForSaleResidences(player); - if (cmanager.enabledRentSystem()) - rentmanager.printRentableResidences(player); - return true; - } - - private boolean commandResMarketRent(String[] args, boolean resadmin, Player player, int page) { - if (args.length < 3 || args.length > 4) - return false; - boolean repeat = false; - if (args.length == 4) - if (args[3].equalsIgnoreCase("t") || args[3].equalsIgnoreCase("true")) - repeat = true; - else if (!args[3].equalsIgnoreCase("f") && !args[3].equalsIgnoreCase("false")) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean")); - return true; - } - rentmanager.rent(player, args[2], repeat, resadmin); - return true; - } - - private boolean commandResMarketRentable(String[] args, boolean resadmin, Player player, int page) { - if (args.length < 5 || args.length > 6) - return false; - if (!cmanager.enabledRentSystem()) { - player.sendMessage(ChatColor.RED + language.getPhrase("RentDisabled")); - return true; - } - int days; - int cost; - try { - cost = Integer.parseInt(args[3]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidCost")); - return true; - } - try { - days = Integer.parseInt(args[4]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidDays")); - return true; - } - boolean repeat = false; - if (args.length == 6) - if (args[5].equalsIgnoreCase("t") || args[5].equalsIgnoreCase("true")) - repeat = true; - else if (!args[5].equalsIgnoreCase("f") && !args[5].equalsIgnoreCase("false")) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidBoolean")); - return true; - } - rentmanager.setForRent(player, args[2], cost, days, repeat, resadmin); - return true; - } - - private boolean commandResMessage(String[] args, boolean resadmin, Player player, int page) { - ClaimedResidence res = null; - int start = 0; - boolean enter = false; - if (args.length < 2) - return false; - if (args[1].equals("enter")) { - enter = true; - res = rmanager.getByLoc(player.getLocation()); - start = 2; - } else if (args[1].equals("leave")) { - res = rmanager.getByLoc(player.getLocation()); - start = 2; - } else if (args[1].equals("remove")) { - if (args.length > 2 && args[2].equals("enter")) { - res = rmanager.getByLoc(player.getLocation()); - if (res != null) - res.setEnterLeaveMessage(player, null, true, resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args.length > 2 && args[2].equals("leave")) { - res = rmanager.getByLoc(player.getLocation()); - if (res != null) - res.setEnterLeaveMessage(player, null, false, resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType")); - return true; - } else if (args.length > 2 && args[2].equals("enter")) { - enter = true; - res = rmanager.getByName(args[1]); - start = 3; - } else if (args.length > 2 && args[2].equals("leave")) { - res = rmanager.getByName(args[1]); - start = 3; - } else if (args.length > 2 && args[2].equals("remove")) { - res = rmanager.getByName(args[1]); - if (args.length != 4) - return false; - if (args[3].equals("enter")) { - if (res != null) - res.setEnterLeaveMessage(player, null, true, resadmin); - return true; - } else if (args[3].equals("leave")) { - if (res != null) - res.setEnterLeaveMessage(player, null, false, resadmin); - return true; - } - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType")); - return true; - } else { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidMessageType")); - return true; - } - if (start == 0) - return false; - String message = ""; - for (int i = start; i < args.length; i++) - message = message + args[i] + " "; - if (res != null) - res.setEnterLeaveMessage(player, message, enter, resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - - private boolean commandResPset(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 3 && args[2].equalsIgnoreCase("removeall")) { - ClaimedResidence area = rmanager.getByLoc(player.getLocation()); - if (area != null) - area.getPermissions().removeAllPlayerFlags(player, args[1], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args.length == 4 && args[3].equalsIgnoreCase("removeall")) { - ClaimedResidence area = rmanager.getByName(args[1]); - if (area != null) - area.getPermissions().removeAllPlayerFlags(player, args[2], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args.length == 4) { - ClaimedResidence area = rmanager.getByLoc(player.getLocation()); - if (area != null) - area.getPermissions().setPlayerFlag(player, args[1], args[2], args[3], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args.length == 5) { - ClaimedResidence area = rmanager.getByName(args[1]); - if (area != null) - area.getPermissions().setPlayerFlag(player, args[2], args[3], args[4], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - return false; - } - - // private boolean commandResRemove(String[] args, boolean resadmin, CommandSender sender, int page) { - // Player player = null; - // if (sender instanceof Player) { - // player = (Player) sender; - // if (args.length == 1) { - // String area = rmanager.getNameByLoc(player.getLocation()); - // if (area != null) { - // ClaimedResidence res = rmanager.getByName(area); - // if (res.getParent() != null) { - // String[] split = area.split("\\."); - // String words = split[split.length - 1]; - // if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { - // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); - // deleteConfirm.put(player.getName(), area); - // } else - // rmanager.removeResidence(player, area, resadmin); - // return true; - // } else { - // if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { - // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED)); - // deleteConfirm.put(player.getName(), area); - // } else - // rmanager.removeResidence(player, area, resadmin); - // return true; - // } - // } - // return false; - // } - // } - // if (args.length != 2) - // return false; - // if (player != null) { - // if (!deleteConfirm.containsKey(player.getName()) || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) { - // String words = null; - // if (rmanager.getByName(args[1]) != null) { - // ClaimedResidence res = rmanager.getByName(args[1]); - // if (res.getParent() != null) { - // String[] split = args[1].split("\\."); - // words = split[split.length - 1]; - // } - // } - // if (words == null) - // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED)); - // else - // player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); - // deleteConfirm.put(player.getName(), args[1]); - // } else - // rmanager.removeResidence(player, args[1], resadmin); - // } else if (!deleteConfirm.containsKey("Console") || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) { - // String words = null; - // if (rmanager.getByName(args[1]) != null) { - // ClaimedResidence res = rmanager.getByName(args[1]); - // if (res.getParent() != null) { - // String[] split = args[1].split("\\."); - // words = split[split.length - 1]; - // } - // } - // if (words == null) - // server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED)); - // else - // server.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); - // deleteConfirm.put("Console", args[1]); - // } else - // rmanager.removeResidence(args[1]); - // return true; - // } - - private boolean commandResSelect(String[] args, boolean resadmin, Player player, int page) { - PermissionGroup group = Residence.getPermissionManager().getGroup(player); - if (!group.selectCommandAccess() && !resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled")); - return true; - } - if (!group.canCreateResidences() && group.getMaxSubzoneDepth() <= 0 && !resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled")); - return true; - } - if ((!player.hasPermission("residence.create") && player.isPermissionSet("residence.create") && !player.hasPermission("residence.select") && player.isPermissionSet("residence.select")) - && !resadmin) { - player.sendMessage(ChatColor.RED + language.getPhrase("SelectDiabled")); - return true; - } - if (args.length == 2) { - if (args[1].equals("size") || args[1].equals("cost")) { - if (smanager.hasPlacedBoth(player.getName())) - try { - smanager.showSelectionInfo(player); - return true; - } catch (Exception ex) { - Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex); - return true; - } - else if (smanager.worldEdit(player)) - try { - smanager.showSelectionInfo(player); - return true; - } catch (Exception ex) { - Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex); - return true; - } - } else if (args[1].equals("vert")) { - smanager.vert(player, resadmin); - return true; - } else if (args[1].equals("sky")) { - smanager.sky(player, resadmin); - return true; - } else if (args[1].equals("bedrock")) { - smanager.bedrock(player, resadmin); - return true; - } else if (args[1].equals("coords")) { - Location playerLoc1 = smanager.getPlayerLoc1(player.getName()); - if (playerLoc1 != null) - player.sendMessage(ChatColor.GREEN + language.getPhrase("Primary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc1.getBlockX() + ", " + playerLoc1.getBlockY() + ", " - + playerLoc1.getBlockZ() + ")"); - Location playerLoc2 = smanager.getPlayerLoc2(player.getName()); - if (playerLoc2 != null) - player.sendMessage(ChatColor.GREEN + language.getPhrase("Secondary.Selection") + ":" + ChatColor.AQUA + " (" + playerLoc2.getBlockX() + ", " + playerLoc2.getBlockY() + ", " - + playerLoc2.getBlockZ() + ")"); - return true; - } else if (args[1].equals("chunk")) { - smanager.selectChunk(player); - return true; - } else if (args[1].equals("worldedit")) { - if (smanager.worldEdit(player)) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SelectionSuccess")); - return true; - } - } else if (args.length == 3) - if (args[1].equals("expand")) { - int amount; - try { - amount = Integer.parseInt(args[2]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); - return true; - } - smanager.modify(player, false, amount); - return true; - } else if (args[1].equals("shift")) { - int amount; - try { - amount = Integer.parseInt(args[2]); - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidAmount")); - return true; - } - smanager.modify(player, true, amount); - return true; - } - if (args.length > 1 && args[1].equals("residence")) { - String resName; - String areaName; - ClaimedResidence res = null; - if (args.length > 2) - res = rmanager.getByName(args[2]); - else - res = rmanager.getByLoc(player.getLocation()); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - resName = res.getName(); - CuboidArea area = null; - if (args.length > 3) { - area = res.getArea(args[3]); - areaName = args[3]; - } else { - areaName = res.getAreaIDbyLoc(player.getLocation()); - area = res.getArea(areaName); - } - if (area != null) { - smanager.placeLoc1(player, area.getHighLoc()); - smanager.placeLoc2(player, area.getLowLoc()); - player.sendMessage(ChatColor.GREEN + language.getPhrase("SelectionArea", ChatColor.GOLD + areaName + ChatColor.GREEN + "." + ChatColor.GOLD + resName + ChatColor.GREEN)); - } else - player.sendMessage(ChatColor.RED + language.getPhrase("AreaNonExist")); - return true; - } else - try { - smanager.selectBySize(player, Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])); - return true; - } catch (Exception ex) { - player.sendMessage(ChatColor.RED + language.getPhrase("SelectionFail")); - return true; - } - } - - private boolean commandResSet(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 3) { - String area = rmanager.getNameByLoc(player.getLocation()); - if (area != null) - rmanager.getByName(area).getPermissions().setFlag(player, args[1], args[2], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } else if (args.length == 4) { - ClaimedResidence area = rmanager.getByName(args[1]); - if (area != null) - area.getPermissions().setFlag(player, args[2], args[3], resadmin); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - return false; - } - - private boolean commandResSublist(String[] args, boolean resadmin, Player player, int page) { - if (args.length == 1 || args.length == 2 || args.length == 3) { - ClaimedResidence res; - if (args.length == 1) - res = rmanager.getByLoc(player.getLocation()); - else - res = rmanager.getByName(args[1]); - if (res != null) - res.printSubzoneList(player, page); - else - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - return false; - } - - private boolean commandResSubzone(String[] args, boolean resadmin, Player player, int page) { - if (args.length != 2 && args.length != 3) - return false; - String zname; - String parent; - if (args.length == 2) { - parent = rmanager.getNameByLoc(player.getLocation()); - zname = args[1]; - } else { - parent = args[1]; - zname = args[2]; - } - WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); - if (wep != null) - if (wep.getConfig().getInt("wand-item") == Residence.getConfigManager().selectionToolId) - smanager.worldEdit(player); - if (smanager.hasPlacedBoth(player.getName())) { - ClaimedResidence res = rmanager.getByName(parent); - if (res == null) { - player.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - return true; - } - res.addSubzone(player, smanager.getPlayerLoc1(player.getName()), smanager.getPlayerLoc2(player.getName()), zname, resadmin); - return true; - } else { - player.sendMessage(ChatColor.RED + language.getPhrase("SelectPoints")); - return true; - } - } -} diff --git a/src/main/java/com/bekvon/bukkit/residence/chat/ChatChannel.java b/src/main/java/com/bekvon/bukkit/residence/chat/ChatChannel.java index 55e0353..e83221a 100644 --- a/src/main/java/com/bekvon/bukkit/residence/chat/ChatChannel.java +++ b/src/main/java/com/bekvon/bukkit/residence/chat/ChatChannel.java @@ -5,64 +5,64 @@ package com.bekvon.bukkit.residence.chat; -import com.bekvon.bukkit.residence.Residence; -import com.bekvon.bukkit.residence.event.ResidenceChatEvent; import java.util.ArrayList; import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.entity.Player; +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.event.ResidenceChatEvent; + /** * * @author Administrator */ public class ChatChannel { - protected String name; - protected List members; + protected List members; + protected String name; + protected Residence plugin; - public ChatChannel(String channelName) - { - name = channelName; - members = new ArrayList(); - } + public ChatChannel(final Residence plugin, final String channelName) { + this.plugin = plugin; + name = channelName; + members = new ArrayList(); + } - public void chat(String sourcePlayer, String message) - { - Server serv = Residence.getServ(); - ChatColor color = Residence.getConfigManager().getChatColor(); - ResidenceChatEvent cevent = new ResidenceChatEvent(Residence.getResidenceManager().getByName(name),serv.getPlayer(sourcePlayer),message,color); - Residence.getServ().getPluginManager().callEvent(cevent); - if(cevent.isCancelled()) - return; - for(String member : members) - { - Player player = serv.getPlayer(member); - if(player!=null) - player.sendMessage(cevent.getColor() + sourcePlayer + ": " + cevent.getChatMessage()); - } - System.out.println("ResidentialChat[" + name + "] - " + sourcePlayer + ": " + cevent.getChatMessage()); - } - - public void join(String player) - { - if(!members.contains(player)) - members.add(player); - } - - public void leave(String player) - { - members.remove(player); - } + public void chat(final String sourcePlayer, final String message) { + final Server serv = plugin.getServ(); + final ChatColor color = plugin.getConfigManager().getChatColor(); + final ResidenceChatEvent cevent = new ResidenceChatEvent(plugin.getResidenceManager().getByName(name), serv.getPlayer(sourcePlayer), message, color); + plugin.getServ().getPluginManager().callEvent(cevent); + if (cevent.isCancelled()) { + return; + } + for (final String member : members) { + final Player player = serv.getPlayer(member); + if (player != null) { + player.sendMessage(cevent.getColor() + sourcePlayer + ": " + cevent.getChatMessage()); + } + } + System.out.println("ResidentialChat[" + name + "] - " + sourcePlayer + ": " + cevent.getChatMessage()); + } - public boolean hasMember(String player) - { - return members.contains(player); - } + public boolean hasMember(final String player) { + return members.contains(player); + } - public int memberCount() - { - return members.size(); - } + public void join(final String player) { + if (!members.contains(player)) { + members.add(player); + } + } + + public void leave(final String player) { + members.remove(player); + } + + public int memberCount() { + return members.size(); + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/chat/ChatManager.java b/src/main/java/com/bekvon/bukkit/residence/chat/ChatManager.java index 2814247..5b841c6 100644 --- a/src/main/java/com/bekvon/bukkit/residence/chat/ChatManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/chat/ChatManager.java @@ -5,56 +5,55 @@ package com.bekvon.bukkit.residence.chat; -import com.bekvon.bukkit.residence.Residence; import java.util.HashMap; import java.util.Map; + import org.bukkit.Server; +import com.bekvon.bukkit.residence.Residence; + /** * * @author Administrator */ public class ChatManager { - protected Map channelmap; - protected Server server; + protected Map channelmap; + protected Residence plugin; + protected Server server; - public ChatManager() - { - server = Residence.getServ(); - channelmap = new HashMap(); - } + public ChatManager(final Residence plugin) { + server = plugin.getServ(); + channelmap = new HashMap(); + } - public void setChannel(String player, String channel) - { - this.removeFromChannel(player); - if(!channelmap.containsKey(channel)) - channelmap.put(channel, new ChatChannel(channel)); - channelmap.get(channel).join(player); - } + public ChatChannel getChannel(final String channel) { + return channelmap.get(channel); + } - public void removeFromChannel(String player) - { - for(ChatChannel chan : channelmap.values()) - { - if(chan.hasMember(player)) - chan.leave(player); - } - } - - public ChatChannel getChannel(String channel) - { - return channelmap.get(channel); - } + public ChatChannel getPlayerChannel(final String player) { + for (final ChatChannel chan : channelmap.values()) { + if (chan.hasMember(player)) { + return chan; + } + } + return null; + } - public ChatChannel getPlayerChannel(String player) - { - for(ChatChannel chan : channelmap.values()) - { - if(chan.hasMember(player)) - return chan; - } - return null; - } + public void removeFromChannel(final String player) { + for (final ChatChannel chan : channelmap.values()) { + if (chan.hasMember(player)) { + chan.leave(player); + } + } + } + + public void setChannel(final String player, final String channel) { + this.removeFromChannel(player); + if (!channelmap.containsKey(channel)) { + channelmap.put(channel, new ChatChannel(plugin, channel)); + } + channelmap.get(channel).join(player); + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRc.java b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRc.java index 807da6a..4aca5ee 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRc.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRc.java @@ -14,34 +14,38 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandRc extends BaseCommand { Residence plugin; - public CommandRc(Residence plugin) { + public CommandRc(final Residence plugin) { super("rc"); this.plugin = plugin; setOnlyPlayerExecutable(true); } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { - String pname = sender.getName(); - if (Residence.getConfigManager().chatEnabled()) { - if (args.length == 0) - Residence.getPlayerListener().tooglePlayerResidenceChat((Player) sender); - else { - String area = Residence.getPlayerListener().getCurrentResidenceName(pname); + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final String pname = sender.getName(); + if (plugin.getConfigManager().chatEnabled()) { + if (args.length == 0) { + plugin.getPlayerListener().tooglePlayerResidenceChat((Player) sender); + } else { + final String area = plugin.getPlayerListener().getCurrentResidenceName(pname); if (area != null) { - ChatChannel channel = Residence.getChatManager().getChannel(area); + final ChatChannel channel = plugin.getChatManager().getChannel(area); if (channel != null) { String message = ""; - for (String arg : args) + for (final String arg : args) { message = message + " " + arg; + } channel.chat(pname, message); - } else - sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidChannel")); - } else - sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotInResidence")); + } else { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidChannel")); + } + } else { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotInResidence")); + } } - } else - sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ChatDisabled")); + } else { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ChatDisabled")); + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRes.java b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRes.java index 9d7be89..a7bb423 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRes.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandRes.java @@ -7,79 +7,155 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.commandsub.CommandArea; +import com.bekvon.bukkit.residence.commandsub.CommandBank; +import com.bekvon.bukkit.residence.commandsub.CommandCheck; +import com.bekvon.bukkit.residence.commandsub.CommandClearFlags; +import com.bekvon.bukkit.residence.commandsub.CommandCompass; import com.bekvon.bukkit.residence.commandsub.CommandConfirm; +import com.bekvon.bukkit.residence.commandsub.CommandCreate; +import com.bekvon.bukkit.residence.commandsub.CommandCurrent; +import com.bekvon.bukkit.residence.commandsub.CommandDefault; +import com.bekvon.bukkit.residence.commandsub.CommandGive; +import com.bekvon.bukkit.residence.commandsub.CommandGset; +import com.bekvon.bukkit.residence.commandsub.CommandInfo; +import com.bekvon.bukkit.residence.commandsub.CommandKick; +import com.bekvon.bukkit.residence.commandsub.CommandLease; +import com.bekvon.bukkit.residence.commandsub.CommandLimits; +import com.bekvon.bukkit.residence.commandsub.CommandList; +import com.bekvon.bukkit.residence.commandsub.CommandListAll; +import com.bekvon.bukkit.residence.commandsub.CommandListAllHidden; +import com.bekvon.bukkit.residence.commandsub.CommandListHidden; +import com.bekvon.bukkit.residence.commandsub.CommandLists; +import com.bekvon.bukkit.residence.commandsub.CommandLset; +import com.bekvon.bukkit.residence.commandsub.CommandMarket; +import com.bekvon.bukkit.residence.commandsub.CommandMaterial; +import com.bekvon.bukkit.residence.commandsub.CommandMessage; +import com.bekvon.bukkit.residence.commandsub.CommandMirror; +import com.bekvon.bukkit.residence.commandsub.CommandPset; import com.bekvon.bukkit.residence.commandsub.CommandRemove; +import com.bekvon.bukkit.residence.commandsub.CommandRemoveAll; +import com.bekvon.bukkit.residence.commandsub.CommandRename; +import com.bekvon.bukkit.residence.commandsub.CommandRenameArea; +import com.bekvon.bukkit.residence.commandsub.CommandSelect; +import com.bekvon.bukkit.residence.commandsub.CommandServer; +import com.bekvon.bukkit.residence.commandsub.CommandSet; import com.bekvon.bukkit.residence.commandsub.CommandSetOwner; +import com.bekvon.bukkit.residence.commandsub.CommandSubList; +import com.bekvon.bukkit.residence.commandsub.CommandSubZone; +import com.bekvon.bukkit.residence.commandsub.CommandTool; +import com.bekvon.bukkit.residence.commandsub.CommandTp; +import com.bekvon.bukkit.residence.commandsub.CommandTpSet; +import com.bekvon.bukkit.residence.commandsub.CommandUnStuck; import com.bekvon.bukkit.residence.commandsub.CommandVersion; import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.PluginHelper.commands.HandlerSubCommand; public class CommandRes extends BaseCommand { - Residence plugin; - HandlerSubCommand hdsubcmd; - public CommandRes(Residence plugin) { + Residence plugin; + + public CommandRes(final Residence plugin) { super("res", "residence", "resadmin"); this.plugin = plugin; hdsubcmd = new HandlerSubCommand(plugin); - hdsubcmd.registerCommand(new CommandConfirm(plugin)); - hdsubcmd.registerCommand(new CommandRemove(plugin)); - hdsubcmd.registerCommand(new CommandVersion(plugin)); - hdsubcmd.registerCommand(new CommandSetOwner(plugin)); - // Player player = null; - // boolean resadmin = (command != null); - // ResidenceManager rmanager = Residence.getResidenceManager(); - // Map deleteConfirm = plugin.deleteConfirm; - // Language language = Residence.getLanguage(); + hdsubcmd.registerCommand(new CommandArea(plugin)); + hdsubcmd.registerCommand(new CommandBank(plugin)); + hdsubcmd.registerCommand(new CommandCheck(plugin)); + hdsubcmd.registerCommand(new CommandClearFlags(plugin)); + hdsubcmd.registerCommand(new CommandCompass(plugin)); + hdsubcmd.registerCommand(new CommandConfirm(plugin)); + hdsubcmd.registerCommand(new CommandCreate(plugin)); + hdsubcmd.registerCommand(new CommandCurrent(plugin)); + hdsubcmd.registerCommand(new CommandDefault(plugin)); + hdsubcmd.registerCommand(new CommandGive(plugin)); + hdsubcmd.registerCommand(new CommandGset(plugin)); + hdsubcmd.registerCommand(new CommandInfo(plugin)); + hdsubcmd.registerCommand(new CommandKick(plugin)); + hdsubcmd.registerCommand(new CommandLease(plugin)); + hdsubcmd.registerCommand(new CommandLimits(plugin)); + hdsubcmd.registerCommand(new CommandList(plugin)); + hdsubcmd.registerCommand(new CommandListAll(plugin)); + hdsubcmd.registerCommand(new CommandListAllHidden(plugin)); + hdsubcmd.registerCommand(new CommandListHidden(plugin)); + hdsubcmd.registerCommand(new CommandLists(plugin)); + hdsubcmd.registerCommand(new CommandLset(plugin)); + hdsubcmd.registerCommand(new CommandMarket(plugin)); + hdsubcmd.registerCommand(new CommandMaterial(plugin)); + hdsubcmd.registerCommand(new CommandMessage(plugin)); + hdsubcmd.registerCommand(new CommandMirror(plugin)); + hdsubcmd.registerCommand(new CommandPset(plugin)); + hdsubcmd.registerCommand(new CommandRemove(plugin)); + hdsubcmd.registerCommand(new CommandRemoveAll(plugin)); + hdsubcmd.registerCommand(new CommandRename(plugin)); + hdsubcmd.registerCommand(new CommandRenameArea(plugin)); + hdsubcmd.registerCommand(new CommandSelect(plugin)); + hdsubcmd.registerCommand(new CommandServer(plugin)); + hdsubcmd.registerCommand(new CommandSet(plugin)); + hdsubcmd.registerCommand(new CommandSetOwner(plugin)); + hdsubcmd.registerCommand(new CommandSubList(plugin)); + hdsubcmd.registerCommand(new CommandSubZone(plugin)); + hdsubcmd.registerCommand(new CommandTool(plugin)); + hdsubcmd.registerCommand(new CommandTp(plugin)); + hdsubcmd.registerCommand(new CommandTpSet(plugin)); + hdsubcmd.registerCommand(new CommandUnStuck(plugin)); + hdsubcmd.registerCommand(new CommandVersion(plugin)); plugin.getCommand("residence").setTabCompleter(hdsubcmd); } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { boolean resadmin = false; if (sender instanceof Player) { - if (label.equalsIgnoreCase("resadmin")) - if (Residence.getPermissionManager().isResidenceAdmin((Player) sender)) + if (label.equalsIgnoreCase("resadmin")) { + if (plugin.getPermissionManager().isResidenceAdmin((Player) sender)) { resadmin = true; - else - sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NonAdmin")); - } else + } else { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NonAdmin")); + } + } + } else { resadmin = true; + } if (args.length > 0 && args[args.length - 1].equalsIgnoreCase("?") || args.length > 1 && args[args.length - 2].equals("?")) { commandHelp(args, resadmin, sender); return; } - if (Residence.getConfigManager().allowAdminsOnly()) + if (plugin.getConfigManager().allowAdminsOnly()) { if (!resadmin) { - sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AdminOnly")); + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AdminOnly")); return; } - if (args.length == 0) + } + if (args.length == 0) { return; + } hdsubcmd.onCommand(sender, resadmin ? command : null, label, args); } - private boolean commandHelp(String[] args, boolean resadmin, CommandSender sender) { - if (Residence.helppages != null) { + private boolean commandHelp(final String[] args, final boolean resadmin, final CommandSender sender) { + if (plugin.getHelppages() != null) { String helppath = "res"; - for (String arg : args) { - if (arg.equalsIgnoreCase("?")) + for (final String arg : args) { + if (arg.equalsIgnoreCase("?")) { break; + } helppath = helppath + "." + arg; } int page = 1; - if (!args[args.length - 1].equalsIgnoreCase("?")) + if (!args[args.length - 1].equalsIgnoreCase("?")) { try { page = Integer.parseInt(args[args.length - 1]); - } catch (Exception ex) { - sender.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidHelp")); + } catch (final Exception ex) { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidHelp")); } - if (Residence.helppages.containesEntry(helppath)) { - Residence.helppages.printHelp(sender, page, helppath); + } + if (plugin.getHelppages().containesEntry(helppath)) { + plugin.getHelppages().printHelp(sender, page, helppath); return true; } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResLoad.java b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResLoad.java index 62803f6..163d221 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResLoad.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResLoad.java @@ -16,22 +16,23 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandResLoad extends BaseCommand { Residence plugin; - public CommandResLoad(Residence plugin) { + public CommandResLoad(final Residence plugin) { super("resreload"); this.plugin = plugin; } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { - if (!(sender instanceof Player) || Residence.getPermissionManager().isResidenceAdmin((Player) sender)) + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + if (!(sender instanceof Player) || plugin.getPermissionManager().isResidenceAdmin((Player) sender)) { try { plugin.loadYml(); sender.sendMessage(ChatColor.GREEN + "[Residence] 从配置保存文件重新载入数据..."); - } catch (Exception ex) { + } catch (final Exception ex) { sender.sendMessage(ChatColor.RED + "[Residence] 无法从配置保存文件重新载入数据, 请查看控制台异常信息!"); sender.sendMessage(ChatColor.RED + "[Residence] 异常: " + ex.getMessage()); Logger.getLogger(Residence.class.getName()).log(Level.SEVERE, null, ex); } + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResReload.java b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResReload.java index 8730d6a..91c07f0 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResReload.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResReload.java @@ -13,23 +13,23 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandResReload extends BaseCommand { Residence plugin; - public CommandResReload(Residence plugin) { + public CommandResReload(final Residence plugin) { super("resreload"); this.plugin = plugin; } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { if (sender instanceof Player) { - Player player = (Player) sender; - if (Residence.getPermissionManager().isResidenceAdmin(player)) { + final Player player = (Player) sender; + if (plugin.getPermissionManager().isResidenceAdmin(player)) { plugin.reloadPlugin(); sender.sendMessage(ChatColor.GREEN + "[Residence] 重载配置文件."); - System.out.println("[Residence] 重载 by " + player.getName() + "."); + plugin.getLogger().info("重载 by " + player.getName() + "."); } } else { plugin.reloadPlugin(); - System.out.println("[Residence] 重载 by 控制台."); + plugin.getLogger().info("重载 by 控制台."); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResWorld.java b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResWorld.java index 1ec65fd..c5938ba 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResWorld.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandmain/CommandResWorld.java @@ -13,7 +13,7 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandResWorld extends BaseCommand { Residence plugin; - public CommandResWorld(Residence plugin) { + public CommandResWorld(final Residence plugin) { super("resworld"); this.plugin = plugin; setMinimumArguments(2); @@ -21,12 +21,14 @@ public class CommandResWorld extends BaseCommand { } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { - if (args[0].equalsIgnoreCase("remove")) - if (sender instanceof ConsoleCommandSender) - Residence.getResidenceManager().removeAllFromWorld(sender, args[1]); - else + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + if (args[0].equalsIgnoreCase("remove")) { + if (sender instanceof ConsoleCommandSender) { + plugin.getResidenceManager().removeAllFromWorld(sender, args[1]); + } else { sender.sendMessage(ChatColor.RED + "当前命令必须从控制台执行."); + } + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandConfirm.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandConfirm.java index fdda85a..a0a6b8d 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandConfirm.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandConfirm.java @@ -17,32 +17,31 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandConfirm extends BaseCommand { Residence plugin; - public CommandConfirm(Residence plugin) { - super("?", "help"); + public CommandConfirm(final Residence plugin) { + super("confirm"); this.plugin = plugin; } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { Player player = null; - boolean resadmin = (command != null); - ResidenceManager rmanager = Residence.getResidenceManager(); - Map deleteConfirm = plugin.deleteConfirm; - Language language = Residence.getLanguage(); + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Map deleteConfirm = plugin.getDeleteConfirm(); + final Language language = plugin.getLanguage(); String name = "Console"; if (sender instanceof Player) { player = (Player) sender; name = player.getName(); } - if (args.length == 1) { - String area = deleteConfirm.get(name); - if (area == null) - sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); - else { - rmanager.removeResidence(player, area, resadmin); - deleteConfirm.remove(name); - if (player == null) - sender.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); + final String area = deleteConfirm.get(name); + if (area == null) { + sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } else { + rmanager.removeResidence(player, area, resadmin); + deleteConfirm.remove(name); + if (player == null) { + sender.sendMessage(ChatColor.GREEN + language.getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemove.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemove.java index b6331ca..057b939 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemove.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandRemove.java @@ -19,79 +19,84 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandRemove extends BaseCommand { Residence plugin; - public CommandRemove(Residence plugin) { + public CommandRemove(final Residence plugin) { super("remove", "delete"); this.plugin = plugin; } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { Player player = null; - boolean resadmin = (command != null); - ResidenceManager rmanager = Residence.getResidenceManager(); - Map deleteConfirm = plugin.deleteConfirm; - Language language = Residence.getLanguage(); + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Map deleteConfirm = plugin.getDeleteConfirm(); + final Language language = plugin.getLanguage(); if (sender instanceof Player) { player = (Player) sender; - if (args.length == 1) { - String area = rmanager.getNameByLoc(player.getLocation()); - if (area != null) { - ClaimedResidence res = rmanager.getByName(area); - if (res.getParent() != null) { - String[] split = area.split("\\."); - String words = split[split.length - 1]; - if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { - player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); - deleteConfirm.put(player.getName(), area); - } else - rmanager.removeResidence(player, area, resadmin); - return; + final String area = rmanager.getNameByLoc(player.getLocation()); + if (area != null) { + final ClaimedResidence res = rmanager.getByName(area); + if (res.getParent() != null) { + final String[] split = area.split("\\."); + final String words = split[split.length - 1]; + if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { + player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); + deleteConfirm.put(player.getName(), area); } else { - if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { - player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED)); - deleteConfirm.put(player.getName(), area); - } else - rmanager.removeResidence(player, area, resadmin); - return; + rmanager.removeResidence(player, area, resadmin); } + return; + } else { + if (!deleteConfirm.containsKey(player.getName()) || !area.equalsIgnoreCase(deleteConfirm.get(player.getName()))) { + player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + area + ChatColor.RED)); + deleteConfirm.put(player.getName(), area); + } else { + rmanager.removeResidence(player, area, resadmin); + } + return; } } } - if (args.length != 2) + if (args.length != 1) { return; + } if (player != null) { - if (!deleteConfirm.containsKey(player.getName()) || !args[1].equalsIgnoreCase(deleteConfirm.get(player.getName()))) { + if (!deleteConfirm.containsKey(player.getName()) || !args[0].equalsIgnoreCase(deleteConfirm.get(player.getName()))) { String words = null; - if (rmanager.getByName(args[1]) != null) { - ClaimedResidence res = rmanager.getByName(args[1]); + if (rmanager.getByName(args[0]) != null) { + final ClaimedResidence res = rmanager.getByName(args[0]); if (res.getParent() != null) { - String[] split = args[1].split("\\."); + final String[] split = args[0].split("\\."); words = split[split.length - 1]; } } - if (words == null) - player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED)); - else + if (words == null) { + player.sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[0] + ChatColor.RED)); + } else { player.sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); - deleteConfirm.put(player.getName(), args[1]); - } else - rmanager.removeResidence(player, args[1], resadmin); - } else if (!deleteConfirm.containsKey("Console") || !args[1].equalsIgnoreCase(deleteConfirm.get("Console"))) { + } + deleteConfirm.put(player.getName(), args[0]); + } else { + rmanager.removeResidence(player, args[0], resadmin); + } + } else if (!deleteConfirm.containsKey("Console") || !args[0].equalsIgnoreCase(deleteConfirm.get("Console"))) { String words = null; - if (rmanager.getByName(args[1]) != null) { - ClaimedResidence res = rmanager.getByName(args[1]); + if (rmanager.getByName(args[0]) != null) { + final ClaimedResidence res = rmanager.getByName(args[1]); if (res.getParent() != null) { - String[] split = args[1].split("\\."); + final String[] split = args[0].split("\\."); words = split[split.length - 1]; } } - if (words == null) - Bukkit.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[1] + ChatColor.RED)); - else + if (words == null) { + Bukkit.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteConfirm", ChatColor.YELLOW + args[0] + ChatColor.RED)); + } else { Bukkit.getConsoleSender().sendMessage(ChatColor.RED + language.getPhrase("DeleteSubzoneConfirm", ChatColor.YELLOW + words + ChatColor.RED)); - deleteConfirm.put("Console", args[1]); - } else - rmanager.removeResidence(args[1]); + } + deleteConfirm.put("Console", args[0]); + } else { + rmanager.removeResidence(args[0]); + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSetOwner.java b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSetOwner.java index 5eb64ee..6601dd4 100644 --- a/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSetOwner.java +++ b/src/main/java/com/bekvon/bukkit/residence/commandsub/CommandSetOwner.java @@ -15,30 +15,34 @@ import cn.citycraft.PluginHelper.commands.BaseCommand; public class CommandSetOwner extends BaseCommand { Residence plugin; - public CommandSetOwner(Residence plugin) { + public CommandSetOwner(final Residence plugin) { super("setowner"); this.plugin = plugin; + setMinimumArguments(2); + setPossibleArguments("[领地名] [玩家]"); } @Override - public void execute(CommandSender sender, Command command, String label, String[] args) throws CommandException { - boolean resadmin = (command != null); - ResidenceManager rmanager = Residence.getResidenceManager(); - Language language = Residence.getLanguage(); - - if (!resadmin) + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { + final boolean resadmin = (command != null); + final ResidenceManager rmanager = plugin.getResidenceManager(); + final Language language = plugin.getLanguage(); + if (!resadmin) { sender.sendMessage(ChatColor.RED + language.getPhrase("NoPermission")); - ClaimedResidence area = rmanager.getByName(args[1]); + } + final ClaimedResidence area = rmanager.getByName(args[0]); if (area != null) { - area.getPermissions().setOwner(args[2], true); - if (area.getParent() == null) + area.getPermissions().setOwner(args[1], true); + if (area.getParent() == null) { sender.sendMessage( - ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN)); - else + ChatColor.GREEN + language.getPhrase("ResidenceOwnerChange", ChatColor.YELLOW + " " + args[0] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[1] + ChatColor.GREEN)); + } else { sender.sendMessage(ChatColor.GREEN + language.getPhrase("SubzoneOwnerChange", - ChatColor.YELLOW + " " + args[1].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[2] + ChatColor.GREEN)); - } else + ChatColor.YELLOW + " " + args[0].split("\\.")[args[1].split("\\.").length - 1] + " " + ChatColor.GREEN + "." + ChatColor.YELLOW + args[1] + ChatColor.GREEN)); + } + } else { sender.sendMessage(ChatColor.RED + language.getPhrase("InvalidResidence")); + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/economy/ResidenceBank.java b/src/main/java/com/bekvon/bukkit/residence/economy/ResidenceBank.java index 8640833..ec51254 100644 --- a/src/main/java/com/bekvon/bukkit/residence/economy/ResidenceBank.java +++ b/src/main/java/com/bekvon/bukkit/residence/economy/ResidenceBank.java @@ -4,98 +4,87 @@ */ package com.bekvon.bukkit.residence.economy; + import org.bukkit.ChatColor; +import org.bukkit.entity.Player; import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; -import org.bukkit.entity.Player; /** * * @author Administrator */ public class ResidenceBank { - int storedMoney; - ClaimedResidence res; + Residence plugin; + ClaimedResidence res; + int storedMoney; - public ResidenceBank(ClaimedResidence parent) - { - storedMoney = 0; - res = parent; - } + public ResidenceBank(final Residence plugin, final ClaimedResidence parent) { + this.plugin = plugin; + storedMoney = 0; + res = parent; + } - public int getStoredMoney() - { - return storedMoney; - } + public void add(final int amount) { + storedMoney = storedMoney + amount; + } - public void setStoredMoney(int amount) - { - storedMoney = amount; - } + public void deposit(final Player player, final int amount, final boolean resadmin) { + if (!plugin.getConfigManager().enableEconomy()) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); + } + if (!resadmin && !res.getPermissions().playerHas(player.getName(), "bank", false)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoBankAccess")); + return; + } + if (!plugin.getEconomyManager().canAfford(player.getName(), amount)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney")); + return; + } + if (plugin.getEconomyManager().subtract(player.getName(), amount)) { + this.add(amount); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("BankDeposit", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN)); + } + } - public void add(int amount) - { - storedMoney = storedMoney + amount; - } + public int getStoredMoney() { + return storedMoney; + } - public boolean hasEnough(int amount) - { - if(storedMoney >= amount) - return true; - return false; - } + public boolean hasEnough(final int amount) { + if (storedMoney >= amount) { + return true; + } + return false; + } - public void subtract(int amount) - { - storedMoney = storedMoney - amount; - if(storedMoney<0) - storedMoney = 0; - } + public void setStoredMoney(final int amount) { + storedMoney = amount; + } - public void withdraw(Player player, int amount, boolean resadmin) - { - if(!Residence.getConfigManager().enableEconomy()) - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("MarketDisabled")); - } - if(!resadmin && !res.getPermissions().playerHas(player.getName(), "bank", false)) - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoBankAccess")); - return; - } - if(!hasEnough(amount)) - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("BankNoMoney")); - return; - } - if(Residence.getEconomyManager().add(player.getName(), amount)) - { - this.subtract(amount); - player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("BankWithdraw",ChatColor.YELLOW + String.format("%d",amount) + ChatColor.GREEN)); - } - } + public void subtract(final int amount) { + storedMoney = storedMoney - amount; + if (storedMoney < 0) { + storedMoney = 0; + } + } - public void deposit(Player player, int amount, boolean resadmin) - { - if(!Residence.getConfigManager().enableEconomy()) - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("MarketDisabled")); - } - if(!resadmin && !res.getPermissions().playerHas(player.getName(), "bank", false)) - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoBankAccess")); - return; - } - if(!Residence.getEconomyManager().canAfford(player.getName(), amount)) - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NotEnoughMoney")); - return; - } - if(Residence.getEconomyManager().subtract(player.getName(), amount)) - { - this.add(amount); - player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("BankDeposit",ChatColor.YELLOW + String.format("%d",amount) + ChatColor.GREEN)); - } - } + public void withdraw(final Player player, final int amount, final boolean resadmin) { + if (!plugin.getConfigManager().enableEconomy()) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); + } + if (!resadmin && !res.getPermissions().playerHas(player.getName(), "bank", false)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoBankAccess")); + return; + } + if (!hasEnough(amount)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("BankNoMoney")); + return; + } + if (plugin.getEconomyManager().add(player.getName(), amount)) { + this.subtract(amount); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("BankWithdraw", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN)); + } + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/economy/TransactionManager.java b/src/main/java/com/bekvon/bukkit/residence/economy/TransactionManager.java index b6c3a4b..4b63096 100644 --- a/src/main/java/com/bekvon/bukkit/residence/economy/TransactionManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/economy/TransactionManager.java @@ -5,262 +5,269 @@ package com.bekvon.bukkit.residence.economy; -import org.bukkit.ChatColor; - -import com.bekvon.bukkit.residence.protection.CuboidArea; -import com.bekvon.bukkit.residence.Residence; -import com.bekvon.bukkit.residence.protection.ResidenceManager; -import com.bekvon.bukkit.residence.permissions.PermissionManager; -import com.bekvon.bukkit.residence.permissions.PermissionGroup; -import com.bekvon.bukkit.residence.protection.ClaimedResidence; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; + +import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.entity.Player; +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.permissions.PermissionGroup; +import com.bekvon.bukkit.residence.permissions.PermissionManager; +import com.bekvon.bukkit.residence.protection.ClaimedResidence; +import com.bekvon.bukkit.residence.protection.CuboidArea; +import com.bekvon.bukkit.residence.protection.ResidenceManager; + /** - * + * * @author Administrator */ public class TransactionManager { - ResidenceManager manager; - private Map sellAmount; - PermissionManager gm; + private Map sellAmount; + PermissionManager gm; + ResidenceManager manager; + Residence plugin; - public static boolean chargeEconomyMoney(Player player, int amount) { - EconomyInterface econ = Residence.getEconomyManager(); - if (econ == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("MarketDisabled")); - return false; - } - if (!econ.canAfford(player.getName(), amount)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotEnoughMoney")); - return false; - } - econ.subtract(player.getName(), amount); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("MoneyCharged", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); - return true; - } + public TransactionManager(final Residence plugin, final ResidenceManager m, final PermissionManager g) { + this.plugin = plugin; + gm = g; + manager = m; + sellAmount = Collections.synchronizedMap(new HashMap()); + } - public TransactionManager(ResidenceManager m, PermissionManager g) { - gm = g; - manager = m; - sellAmount = Collections.synchronizedMap(new HashMap()); - } + public static boolean chargeEconomyMoney(final Residence plugin, final Player player, final int amount) { + final EconomyInterface econ = plugin.getEconomyManager(); + if (econ == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); + return false; + } + if (!econ.canAfford(player.getName(), amount)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney")); + return false; + } + econ.subtract(player.getName(), amount); + player.sendMessage(ChatColor.GREEN + + plugin.getLanguage().getPhrase("MoneyCharged", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); + return true; + } - public void putForSale(String areaname, Player player, int amount, boolean resadmin) { - if (Residence.getConfigManager().enabledRentSystem()) { - if (Residence.getRentManager().isForRent(areaname)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentSellFail")); - return; - } - } - if (!resadmin) { - if (!Residence.getConfigManager().enableEconomy() || Residence.getEconomyManager() == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("MarketDisabled")); - return; - } - boolean cansell = Residence.getPermissionManager().getGroup(player).canSellLand() || player.hasPermission("residence.sell"); - if (!cansell && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); - return; - } - if (amount <= 0) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidAmount")); - return; - } - } - String pname = player.getName(); - ClaimedResidence area = manager.getByName(areaname); - if (area == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); - return; - } - if (!area.getPermissions().getOwner().equals(pname) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); - return; - } - if (sellAmount.containsKey(areaname)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AlreadySellFail")); - return; - } - sellAmount.put(areaname, amount); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceForSale", ChatColor.YELLOW + areaname + ChatColor.GREEN + "." + ChatColor.YELLOW + amount + ChatColor.GREEN)); - } + @SuppressWarnings({ "unchecked", "rawtypes" }) + public static TransactionManager load(final Residence plugin, final Map root, final PermissionManager p, final ResidenceManager r) { + final TransactionManager tman = new TransactionManager(plugin, r, p); + if (root != null) { + tman.sellAmount = root; + } + return tman; + } - public boolean putForSale(String areaname, int amount) { - if (Residence.getConfigManager().enabledRentSystem()) { - if (Residence.getRentManager().isForRent(areaname)) { - return false; - } - } - ClaimedResidence area = manager.getByName(areaname); - if (area == null) { - return false; - } - if (sellAmount.containsKey(areaname)) { - return false; - } - sellAmount.put(areaname, amount); - return true; - } + public void buyPlot(final String areaname, final Player player, final boolean resadmin) { + final PermissionGroup group = gm.getGroup(player); + if (!resadmin) { + if (!plugin.getConfigManager().enableEconomy() || plugin.getEconomyManager() == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); + return; + } + final boolean canbuy = group.canBuyLand() || player.hasPermission("plugin.buy"); + if (!canbuy && !resadmin) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + return; + } + } + if (isForSale(areaname)) { + final ClaimedResidence res = manager.getByName(areaname); + if (res == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidArea")); + sellAmount.remove(areaname); + return; + } + if (res.getPermissions().getOwner().equals(player.getName())) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("OwnerBuyFail")); + return; + } + if (plugin.getResidenceManager().getOwnedZoneCount(player.getName()) >= group.getMaxZones() && !resadmin) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceTooMany")); + return; + } + final Server serv = plugin.getServ(); + final int amount = sellAmount.get(areaname); + if (!resadmin) { + if (!group.buyLandIgnoreLimits()) { + final CuboidArea[] areas = res.getAreaArray(); + for (final CuboidArea thisarea : areas) { + if (!group.inLimits(thisarea)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceBuyTooBig")); + return; + } + } + } + } + final EconomyInterface econ = plugin.getEconomyManager(); + if (econ == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); + return; + } + final String buyerName = player.getName(); + String sellerName = res.getPermissions().getOwner(); + final Player sellerNameFix = plugin.getServ().getPlayer(sellerName); + if (sellerNameFix != null) { + sellerName = sellerNameFix.getName(); + } + if (econ.canAfford(buyerName, amount)) { + if (!econ.transfer(buyerName, sellerName, amount)) { + player.sendMessage(ChatColor.RED + "Error, could not transfer " + amount + " from " + buyerName + " to " + sellerName); + return; + } + res.getPermissions().setOwner(player.getName(), true); + res.getPermissions().applyDefaultFlags(); + this.removeFromSale(areaname); + player.sendMessage(ChatColor.GREEN + + plugin.getLanguage().getPhrase("MoneyCharged", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceBought", ChatColor.GREEN + areaname + ChatColor.YELLOW)); + final Player seller = serv.getPlayer(sellerName); + if (seller != null && seller.isOnline()) { + seller.sendMessage(ChatColor.GREEN + + plugin.getLanguage().getPhrase("ResidenceBuy", ChatColor.YELLOW + player.getName() + ChatColor.GREEN + "." + ChatColor.YELLOW + areaname + ChatColor.GREEN)); + seller.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MoneyCredit", + ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney")); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); + } + } - public void buyPlot(String areaname, Player player, boolean resadmin) { - PermissionGroup group = gm.getGroup(player); - if (!resadmin) { - if (!Residence.getConfigManager().enableEconomy() || Residence.getEconomyManager() == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("MarketDisabled")); - return; - } - boolean canbuy = group.canBuyLand() || player.hasPermission("residence.buy"); - if (!canbuy && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); - return; - } - } - if (isForSale(areaname)) { - ClaimedResidence res = manager.getByName(areaname); - if (res == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidArea")); - sellAmount.remove(areaname); - return; - } - if (res.getPermissions().getOwner().equals(player.getName())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("OwnerBuyFail")); - return; - } - if (Residence.getResidenceManager().getOwnedZoneCount(player.getName()) >= group.getMaxZones() && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceTooMany")); - return; - } - Server serv = Residence.getServ(); - int amount = sellAmount.get(areaname); - if (!resadmin) { - if (!group.buyLandIgnoreLimits()) { - CuboidArea[] areas = res.getAreaArray(); - for (CuboidArea thisarea : areas) { - if (!group.inLimits(thisarea)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceBuyTooBig")); - return; - } - } - } - } - EconomyInterface econ = Residence.getEconomyManager(); - if (econ == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("MarketDisabled")); - return; - } - String buyerName = player.getName(); - String sellerName = res.getPermissions().getOwner(); - Player sellerNameFix = Residence.getServ().getPlayer(sellerName); - if (sellerNameFix != null) { - sellerName = sellerNameFix.getName(); - } - if (econ.canAfford(buyerName, amount)) { - if (!econ.transfer(buyerName, sellerName, amount)) { - player.sendMessage(ChatColor.RED + "Error, could not transfer " + amount + " from " + buyerName + " to " + sellerName); - return; - } - res.getPermissions().setOwner(player.getName(), true); - res.getPermissions().applyDefaultFlags(); - this.removeFromSale(areaname); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("MoneyCharged", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceBought", ChatColor.GREEN + areaname + ChatColor.YELLOW)); - Player seller = serv.getPlayer(sellerName); - if (seller != null && seller.isOnline()) { - seller.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceBuy", ChatColor.YELLOW + player.getName() + ChatColor.GREEN + "." + ChatColor.YELLOW + areaname + ChatColor.GREEN)); - seller.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("MoneyCredit", ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); - } - } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotEnoughMoney")); - } - } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); - } - } + public void clearSales() { + sellAmount.clear(); + System.out.println("[Residence] - ReInit land selling."); + } - public void removeFromSale(Player player, String areaname, boolean resadmin) { - ClaimedResidence area = manager.getByName(areaname); - if (area != null) { - if (!isForSale(areaname)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForSale")); - return; - } - if (area.getPermissions().getOwner().equals(player.getName()) || resadmin) { - removeFromSale(areaname); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceStopSelling")); - } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); - } - } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidArea")); - } - } + public int getSaleAmount(final String name) { + return sellAmount.get(name); + } - public void removeFromSale(String areaname) { - sellAmount.remove(areaname); - } + public boolean isForSale(final String areaname) { + return sellAmount.containsKey(areaname); + } - public boolean isForSale(String areaname) { - return sellAmount.containsKey(areaname); - } + public void printForSaleResidences(final Player player) { + final Set> set = sellAmount.entrySet(); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LandForSale") + ":"); + final StringBuilder sbuild = new StringBuilder(); + sbuild.append(ChatColor.GREEN); + boolean firstadd = true; + for (final Entry land : set) { + if (!firstadd) { + sbuild.append(", "); + } else { + firstadd = false; + } + sbuild.append(land.getKey()); + } + player.sendMessage(sbuild.toString()); + } - public void viewSaleInfo(String areaname, Player player) { - if (sellAmount.containsKey(areaname)) { - player.sendMessage("------------------------"); - player.sendMessage(ChatColor.YELLOW + "Name:" + ChatColor.DARK_GREEN + " " + areaname); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("SellAmount") + ":" + ChatColor.RED + " " + sellAmount.get(areaname)); - if (Residence.getConfigManager().useLeases()) { - Date etime = Residence.getLeaseManager().getExpireTime(areaname); - if (etime != null) { - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("LeaseExpire") + ":" + ChatColor.GREEN + " " + etime.toString()); - } - } - player.sendMessage("------------------------"); - } - } + public boolean putForSale(final String areaname, final int amount) { + if (plugin.getConfigManager().enabledRentSystem()) { + if (plugin.getRentManager().isForRent(areaname)) { + return false; + } + } + final ClaimedResidence area = manager.getByName(areaname); + if (area == null) { + return false; + } + if (sellAmount.containsKey(areaname)) { + return false; + } + sellAmount.put(areaname, amount); + return true; + } - public void printForSaleResidences(Player player) { - Set> set = sellAmount.entrySet(); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("LandForSale") + ":"); - StringBuilder sbuild = new StringBuilder(); - sbuild.append(ChatColor.GREEN); - boolean firstadd = true; - for (Entry land : set) { - if (!firstadd) { - sbuild.append(", "); - } else { - firstadd = false; - } - sbuild.append(land.getKey()); - } - player.sendMessage(sbuild.toString()); - } + public void putForSale(final String areaname, final Player player, final int amount, final boolean resadmin) { + if (plugin.getConfigManager().enabledRentSystem()) { + if (plugin.getRentManager().isForRent(areaname)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentSellFail")); + return; + } + } + if (!resadmin) { + if (!plugin.getConfigManager().enableEconomy() || plugin.getEconomyManager() == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); + return; + } + final boolean cansell = plugin.getPermissionManager().getGroup(player).canSellLand() || player.hasPermission("plugin.sell"); + if (!cansell && !resadmin) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + return; + } + if (amount <= 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidAmount")); + return; + } + } + final String pname = player.getName(); + final ClaimedResidence area = manager.getByName(areaname); + if (area == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); + return; + } + if (!area.getPermissions().getOwner().equals(pname) && !resadmin) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + return; + } + if (sellAmount.containsKey(areaname)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AlreadySellFail")); + return; + } + sellAmount.put(areaname, amount); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceForSale", ChatColor.YELLOW + areaname + ChatColor.GREEN + "." + ChatColor.YELLOW + amount + ChatColor.GREEN)); + } - public void clearSales() { - sellAmount.clear(); - System.out.println("[Residence] - ReInit land selling."); - } + public void removeFromSale(final Player player, final String areaname, final boolean resadmin) { + final ClaimedResidence area = manager.getByName(areaname); + if (area != null) { + if (!isForSale(areaname)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceNotForSale")); + return; + } + if (area.getPermissions().getOwner().equals(player.getName()) || resadmin) { + removeFromSale(areaname); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceStopSelling")); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidArea")); + } + } - public int getSaleAmount(String name) { - return sellAmount.get(name); - } + public void removeFromSale(final String areaname) { + sellAmount.remove(areaname); + } - public Map save() { - return sellAmount; - } + public Map save() { + return sellAmount; + } - @SuppressWarnings({ "unchecked", "rawtypes" }) - public static TransactionManager load(Map root, PermissionManager p, ResidenceManager r) { - TransactionManager tman = new TransactionManager(r, p); - if (root != null) { - tman.sellAmount = root; - } - return tman; - } + public void viewSaleInfo(final String areaname, final Player player) { + if (sellAmount.containsKey(areaname)) { + player.sendMessage("------------------------"); + player.sendMessage(ChatColor.YELLOW + "Name:" + ChatColor.DARK_GREEN + " " + areaname); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("SellAmount") + ":" + ChatColor.RED + " " + sellAmount.get(areaname)); + if (plugin.getConfigManager().useLeases()) { + final Date etime = plugin.getLeaseManager().getExpireTime(areaname); + if (etime != null) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseExpire") + ":" + ChatColor.GREEN + " " + etime.toString()); + } + } + player.sendMessage("------------------------"); + } + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java b/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java index c58c589..041fa1b 100644 --- a/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/economy/rent/RentManager.java @@ -27,55 +27,61 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagState; * @author Administrator */ public class RentManager { - protected Map rentedLand; protected Map rentableLand; + protected Map rentedLand; + Residence plugin; - public RentManager() { + public RentManager(final Residence plugin) { + this.plugin = plugin; rentedLand = new HashMap(); rentableLand = new HashMap(); } @SuppressWarnings("unchecked") - public static RentManager load(Map root) { - RentManager rentManager = new RentManager(); + public static RentManager load(final Residence plugin, final Map root) { + final RentManager rentManager = new RentManager(plugin); if (root != null) { - Map rentables = (Map) root.get("Rentables"); - for (Entry rent : rentables.entrySet()) + final Map rentables = (Map) root.get("Rentables"); + for (final Entry rent : rentables.entrySet()) { rentManager.rentableLand.put(rent.getKey(), RentableLand.load((Map) rent.getValue())); - Map rented = (Map) root.get("Rented"); - for (Entry rent : rented.entrySet()) + } + final Map rented = (Map) root.get("Rented"); + for (final Entry rent : rented.entrySet()) { rentManager.rentedLand.put(rent.getKey(), RentedLand.load((Map) rent.getValue())); + } } return rentManager; } public void checkCurrentRents() { - Iterator> it = rentedLand.entrySet().iterator(); + final Iterator> it = rentedLand.entrySet().iterator(); while (it.hasNext()) { - Entry next = it.next(); - RentedLand land = next.getValue(); + final Entry next = it.next(); + final RentedLand land = next.getValue(); if (land.endTime <= System.currentTimeMillis()) { - ClaimedResidence res = Residence.getResidenceManager().getByName(next.getKey()); - if (Residence.getConfigManager().debugEnabled()) + final ClaimedResidence res = plugin.getResidenceManager().getByName(next.getKey()); + if (plugin.getConfigManager().debugEnabled()) { System.out.println("Rent Check: " + next.getKey()); + } if (res != null) { - ResidenceRentEvent revent = new ResidenceRentEvent(res, null, RentEventType.RENT_EXPIRE); - Residence.getServ().getPluginManager().callEvent(revent); + final ResidenceRentEvent revent = new ResidenceRentEvent(res, null, RentEventType.RENT_EXPIRE); + plugin.getServ().getPluginManager().callEvent(revent); if (!revent.isCancelled()) { - RentableLand rentable = rentableLand.get(next.getKey()); + final RentableLand rentable = rentableLand.get(next.getKey()); if (!rentable.repeatable) { rentableLand.remove(next.getKey()); it.remove(); res.getPermissions().applyDefaultFlags(); } else if (land.autoRefresh) { - if (!Residence.getEconomyManager().canAfford(land.player, rentable.cost)) { + if (!plugin.getEconomyManager().canAfford(land.player, rentable.cost)) { it.remove(); res.getPermissions().applyDefaultFlags(); - } else if (!Residence.getEconomyManager().transfer(land.player, res.getPermissions().getOwner(), rentable.cost)) { + } else if (!plugin.getEconomyManager().transfer(land.player, res.getPermissions().getOwner(), rentable.cost)) { it.remove(); res.getPermissions().applyDefaultFlags(); - } else + } else { land.endTime = System.currentTimeMillis() + this.daysToMs(rentable.days); + } } else { res.getPermissions().applyDefaultFlags(); it.remove(); @@ -89,160 +95,174 @@ public class RentManager { } } - public int getCostOfRent(String landName) { + public int getCostOfRent(final String landName) { return rentableLand.containsKey(landName) ? rentableLand.get(landName).cost : 0; } - public int getRentableCount(String player) { - Set set = rentableLand.keySet(); + public int getRentableCount(final String player) { + final Set set = rentableLand.keySet(); int count = 0; - for (String land : set) { - ClaimedResidence res = Residence.getResidenceManager().getByName(land); - if (res != null) - if (res.getPermissions().getOwner().equalsIgnoreCase(player)) + for (final String land : set) { + final ClaimedResidence res = plugin.getResidenceManager().getByName(land); + if (res != null) { + if (res.getPermissions().getOwner().equalsIgnoreCase(player)) { count++; + } + } } return count; } - public boolean getRentableRepeatable(String landName) { + public boolean getRentableRepeatable(final String landName) { return rentableLand.containsKey(landName) ? rentableLand.get(landName).repeatable : false; } - public int getRentCount(String player) { - Set> set = rentedLand.entrySet(); + public int getRentCount(final String player) { + final Set> set = rentedLand.entrySet(); int count = 0; - for (Entry land : set) - if (land.getValue().player.equalsIgnoreCase(player)) + for (final Entry land : set) { + if (land.getValue().player.equalsIgnoreCase(player)) { count++; + } + } return count; } - public int getRentDays(String landName) { + public int getRentDays(final String landName) { return rentableLand.containsKey(landName) ? rentableLand.get(landName).days : 0; } - public boolean getRentedAutoRepeats(String landName) { + public boolean getRentedAutoRepeats(final String landName) { return getRentableRepeatable(landName) ? (rentedLand.containsKey(landName) ? rentedLand.get(landName).autoRefresh : false) : false; } - public String getRentingPlayer(String landName) { + public String getRentingPlayer(final String landName) { return rentedLand.containsKey(landName) ? rentedLand.get(landName).player : null; } - public boolean isForRent(String landName) { + public boolean isForRent(final String landName) { return rentableLand.containsKey(landName); } - public boolean isRented(String landName) { + public boolean isRented(final String landName) { return rentedLand.containsKey(landName); } - public void printRentableResidences(Player player) { - Set> set = rentableLand.entrySet(); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("RentableLand") + ":"); - StringBuilder sbuild = new StringBuilder(); + public void printRentableResidences(final Player player) { + final Set> set = rentableLand.entrySet(); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("RentableLand") + ":"); + final StringBuilder sbuild = new StringBuilder(); sbuild.append(ChatColor.GREEN); boolean firstadd = true; - for (Entry land : set) + for (final Entry land : set) { if (!this.isRented(land.getKey())) { - if (!firstadd) + if (!firstadd) { sbuild.append(", "); - else + } else { firstadd = false; + } sbuild.append(land.getKey()); } + } player.sendMessage(sbuild.toString()); } - public void printRentInfo(Player player, String landName) { - RentableLand rentable = rentableLand.get(landName); - RentedLand rented = rentedLand.get(landName); + public void printRentInfo(final Player player, final String landName) { + final RentableLand rentable = rentableLand.get(landName); + final RentedLand rented = rentedLand.get(landName); if (rentable != null) { - player.sendMessage(ChatColor.GOLD + Residence.getLanguage().getPhrase("Land") + ":" + ChatColor.DARK_GREEN + landName); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Cost") + ": " + ChatColor.DARK_AQUA + rentable.cost + " per " + rentable.days + " days"); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("RentableAutoRenew") + ":" + ChatColor.DARK_AQUA + rentable.repeatable); + player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("Land") + ":" + ChatColor.DARK_GREEN + landName); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Cost") + ": " + ChatColor.DARK_AQUA + rentable.cost + " per " + rentable.days + " days"); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("RentableAutoRenew") + ":" + ChatColor.DARK_AQUA + rentable.repeatable); if (rented != null) { - player.sendMessage(ChatColor.GOLD + Residence.getLanguage().getPhrase("Status") + ":" + ChatColor.YELLOW + " " - + Residence.getLanguage().getPhrase("ResidenceRentedBy", ChatColor.RED + rented.player + ChatColor.YELLOW)); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("RentExpire") + ":" + ChatColor.GREEN + new Date(rented.endTime)); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("RentAutoRenew") + ":" + ChatColor.DARK_AQUA + rented.autoRefresh); - } else - player.sendMessage(ChatColor.GOLD + Residence.getLanguage().getPhrase("Status") + ":" + ChatColor.GREEN + " " + Residence.getLanguage().getPhrase("Available")); - } else - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForRent")); + player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("Status") + ":" + ChatColor.YELLOW + " " + + plugin.getLanguage().getPhrase("ResidenceRentedBy", ChatColor.RED + rented.player + ChatColor.YELLOW)); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("RentExpire") + ":" + ChatColor.GREEN + new Date(rented.endTime)); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("RentAutoRenew") + ":" + ChatColor.DARK_AQUA + rented.autoRefresh); + } else { + player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("Status") + ":" + ChatColor.GREEN + " " + plugin.getLanguage().getPhrase("Available")); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceNotForRent")); + } } - public void removeFromForRent(Player player, String landName, boolean resadmin) { - RentedLand rent = rentedLand.get(landName); + public void removeFromForRent(final Player player, final String landName, final boolean resadmin) { + final RentedLand rent = rentedLand.get(landName); if (rent == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotRented")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceNotRented")); return; } if (resadmin || rent.player.equalsIgnoreCase(player.getName())) { - ResidenceRentEvent revent = new ResidenceRentEvent(Residence.getResidenceManager().getByName(landName), player, RentEventType.UNRENTABLE); - Residence.getServ().getPluginManager().callEvent(revent); - if (revent.isCancelled()) + final ResidenceRentEvent revent = new ResidenceRentEvent(plugin.getResidenceManager().getByName(landName), player, RentEventType.UNRENTABLE); + plugin.getServ().getPluginManager().callEvent(revent); + if (revent.isCancelled()) { return; + } rentedLand.remove(landName); - if (!rentableLand.get(landName).repeatable) + if (!rentableLand.get(landName).repeatable) { rentableLand.remove(landName); - ClaimedResidence res = Residence.getResidenceManager().getByName(landName); - if (res != null) + } + final ClaimedResidence res = plugin.getResidenceManager().getByName(landName); + if (res != null) { res.getPermissions().applyDefaultFlags(); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceUnrent", ChatColor.YELLOW + landName + ChatColor.GREEN)); - } else - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + } + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceUnrent", ChatColor.YELLOW + landName + ChatColor.GREEN)); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } } - public void removeFromRent(String landName) { + public void removeFromRent(final String landName) { rentedLand.remove(landName); } - public void removeRentable(String landName) { + public void removeRentable(final String landName) { removeFromRent(landName); rentableLand.remove(landName); } - public void rent(Player player, String landName, boolean repeat, boolean resadmin) { - if (!Residence.getConfigManager().enabledRentSystem()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentDisabled")); + public void rent(final Player player, final String landName, final boolean repeat, final boolean resadmin) { + if (!plugin.getConfigManager().enabledRentSystem()) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentDisabled")); return; } - ClaimedResidence res = Residence.getResidenceManager().getByName(landName); + final ClaimedResidence res = plugin.getResidenceManager().getByName(landName); if (res != null) { if (res.getPermissions().getOwner().equalsIgnoreCase(player.getName())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("OwnerRentFail")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("OwnerRentFail")); return; } } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); return; } - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); if (!resadmin && this.getRentCount(player.getName()) >= group.getMaxRents()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMaxRent")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMaxRent")); return; } if (!this.isForRent(landName)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForRent")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceNotForRent")); return; } if (this.isRented(landName)) { - String[] split = landName.split("\\."); - if (split.length != 0) - player.sendMessage(Residence.getLanguage().getPhrase("ResidenceAlreadyRented", + final String[] split = landName.split("\\."); + if (split.length != 0) { + player.sendMessage(plugin.getLanguage().getPhrase("ResidenceAlreadyRented", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED + "." + ChatColor.YELLOW + this.getRentingPlayer(landName))); + } return; } - RentableLand land = rentableLand.get(landName); - if (Residence.getEconomyManager().canAfford(player.getName(), land.cost)) { - ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.RENT); - Residence.getServ().getPluginManager().callEvent(revent); - if (revent.isCancelled()) + final RentableLand land = rentableLand.get(landName); + if (plugin.getEconomyManager().canAfford(player.getName(), land.cost)) { + final ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.RENT); + plugin.getServ().getPluginManager().callEvent(revent); + if (revent.isCancelled()) { return; - if (Residence.getEconomyManager().transfer(player.getName(), res.getPermissions().getOwner(), land.cost)) { - RentedLand newrent = new RentedLand(); + } + if (plugin.getEconomyManager().transfer(player.getName(), res.getPermissions().getOwner(), land.cost)) { + final RentedLand newrent = new RentedLand(); newrent.player = player.getName(); newrent.startTime = System.currentTimeMillis(); newrent.endTime = System.currentTimeMillis() + daysToMs(land.days); @@ -251,134 +271,149 @@ public class RentManager { res.getPermissions().copyUserPermissions(res.getPermissions().getOwner(), player.getName()); res.getPermissions().clearPlayersFlags(res.getPermissions().getOwner()); res.getPermissions().setPlayerFlag(player.getName(), "admin", FlagState.TRUE); - String[] split = landName.split("\\."); - if (split.length != 0) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRentSuccess", + final String[] split = landName.split("\\."); + if (split.length != 0) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceRentSuccess", ChatColor.YELLOW + split[split.length - 1] + ChatColor.GREEN + "." + ChatColor.YELLOW + land.days + ChatColor.GREEN)); - } else + } + } else { player.sendMessage(ChatColor.RED + "Error, unable to transfer money..."); - } else - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotEnoughMoney")); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney")); + } } public Map save() { - Map root = new HashMap(); - Map rentables = new HashMap(); - for (Entry rent : rentableLand.entrySet()) + final Map root = new HashMap(); + final Map rentables = new HashMap(); + for (final Entry rent : rentableLand.entrySet()) { rentables.put(rent.getKey(), rent.getValue().save()); - Map rented = new HashMap(); - for (Entry rent : rentedLand.entrySet()) + } + final Map rented = new HashMap(); + for (final Entry rent : rentedLand.entrySet()) { rented.put(rent.getKey(), rent.getValue().save()); + } root.put("Rentables", rentables); root.put("Rented", rented); return root; } - public void setForRent(Player player, String landName, int amount, int days, boolean repeatable, boolean resadmin) { - if (!Residence.getConfigManager().enabledRentSystem()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("MarketDisabled")); + public void setForRent(final Player player, final String landName, final int amount, final int days, final boolean repeatable, final boolean resadmin) { + if (!plugin.getConfigManager().enabledRentSystem()) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("MarketDisabled")); return; } - if (Residence.getTransactionManager().isForSale(landName)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SellRentFail")); + if (plugin.getTransactionManager().isForSale(landName)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SellRentFail")); return; } - ClaimedResidence res = Residence.getResidenceManager().getByName(landName); + final ClaimedResidence res = plugin.getResidenceManager().getByName(landName); if (res == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); return; } if (!resadmin) { if (!res.getPermissions().hasResidencePermission(player, true)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); if (this.getRentableCount(player.getName()) >= group.getMaxRentables()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMaxRent")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMaxRent")); return; } } if (!rentableLand.containsKey(landName)) { - ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.RENTABLE); - Residence.getServ().getPluginManager().callEvent(revent); - if (revent.isCancelled()) + final ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.RENTABLE); + plugin.getServ().getPluginManager().callEvent(revent); + if (revent.isCancelled()) { return; - RentableLand newrent = new RentableLand(); + } + final RentableLand newrent = new RentableLand(); newrent.days = days; newrent.cost = amount; newrent.repeatable = repeatable; rentableLand.put(landName, newrent); - String[] split = landName.split("\\."); - if (split.length != 0) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceForRentSuccess", + final String[] split = landName.split("\\."); + if (split.length != 0) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceForRentSuccess", ChatColor.YELLOW + split[split.length - 1] + ChatColor.GREEN + "." + ChatColor.YELLOW + amount + ChatColor.GREEN + "." + ChatColor.YELLOW + days + ChatColor.GREEN)); - } else - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyRent")); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceAlreadyRent")); + } } - public void setRentedRepeatable(Player player, String landName, boolean value, boolean resadmin) { - String[] split = landName.split("\\."); - RentedLand land = rentedLand.get(landName); + public void setRentedRepeatable(final Player player, final String landName, final boolean value, final boolean resadmin) { + final String[] split = landName.split("\\."); + final RentedLand land = rentedLand.get(landName); if (land != null && (land.player.equals(player.getName()) || resadmin)) { land.autoRefresh = value; - if (value && split.length != 0) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentEnableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); - else if (split.length != 0) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentDisableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + if (value && split.length != 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentEnableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + } else if (split.length != 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentDisableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + } } } - public void setRentRepeatable(Player player, String landName, boolean value, boolean resadmin) { - String[] split = landName.split("\\."); - RentableLand land = rentableLand.get(landName); - ClaimedResidence res = Residence.getResidenceManager().getByName(landName); + public void setRentRepeatable(final Player player, final String landName, final boolean value, final boolean resadmin) { + final String[] split = landName.split("\\."); + final RentableLand land = rentableLand.get(landName); + final ClaimedResidence res = plugin.getResidenceManager().getByName(landName); if (land != null && res != null && (res.getPermissions().getOwner().equalsIgnoreCase(player.getName()) || resadmin)) { land.repeatable = value; - if (!value && this.isRented(landName)) + if (!value && this.isRented(landName)) { rentedLand.get(landName).autoRefresh = false; - if (value && split.length != 0) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentableEnableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); - else if (split.length != 0) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentableDisableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + } + if (value && split.length != 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentableEnableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + } else if (split.length != 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentableDisableRenew", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + } } } - public void unrent(Player player, String landName, boolean resadmin) { - String[] split = landName.split("\\."); - ClaimedResidence res = Residence.getResidenceManager().getByName(landName); + public void unrent(final Player player, final String landName, final boolean resadmin) { + final String[] split = landName.split("\\."); + final ClaimedResidence res = plugin.getResidenceManager().getByName(landName); if (res == null) { - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("InvalidResidence")); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("InvalidResidence")); return; } if (!res.getPermissions().hasResidencePermission(player, true) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } if (rentedLand.containsKey(landName) && !resadmin) { - if (split.length != 0) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyRented", + if (split.length != 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceAlreadyRented", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED + "." + ChatColor.YELLOW + rentedLand.get(landName).player) + ChatColor.YELLOW); + } return; } if (rentableLand.containsKey(landName)) { - ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.UNRENT); - Residence.getServ().getPluginManager().callEvent(revent); - if (revent.isCancelled()) + final ResidenceRentEvent revent = new ResidenceRentEvent(res, player, RentEventType.UNRENT); + plugin.getServ().getPluginManager().callEvent(revent); + if (revent.isCancelled()) { return; + } rentableLand.remove(landName); if (rentedLand.containsKey(landName)) { rentedLand.remove(landName); res.getPermissions().applyDefaultFlags(); } - if (split.length != 0) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceRemoveRentable", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + if (split.length != 0) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceRemoveRentable", ChatColor.YELLOW + split[split.length - 1] + ChatColor.RED)); + } - } else - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceNotForRent")); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceNotForRent")); + } } - public void updateRentableName(String oldName, String newName) { + public void updateRentableName(final String oldName, final String newName) { if (rentableLand.containsKey(oldName)) { rentableLand.put(newName, rentableLand.get(oldName)); rentableLand.remove(oldName); @@ -389,12 +424,12 @@ public class RentManager { } } - private long daysToMs(int days) { + private long daysToMs(final int days) { return ((days) * 24L * 60L * 60L * 1000L); } @SuppressWarnings("unused") - private int msToDays(long ms) { + private int msToDays(final long ms) { return (int) Math.ceil((((ms / 1000D) / 60D) / 60D) / 24D); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java b/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java index 8e6a02c..b8db4c5 100644 --- a/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java +++ b/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerEvent.java @@ -7,7 +7,6 @@ package com.bekvon.bukkit.residence.event; import org.bukkit.entity.Player; -import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; /** @@ -18,29 +17,27 @@ public class ResidencePlayerEvent extends ResidenceEvent implements ResidencePla Player p; - public ResidencePlayerEvent(String eventName, ClaimedResidence resref, Player player) - { + public ResidencePlayerEvent(final String eventName, final ClaimedResidence resref, final Player player) { super(eventName, resref); res = resref; p = player; } @Override - public Player getPlayer() - { + public Player getPlayer() { return p; } @Override - public boolean isAdmin() - { - if(isPlayer()) - return Residence.getPermissionManager().isResidenceAdmin(p); + public boolean isAdmin() { + if (isPlayer()) { + return p.hasPermission("residence.admin") || p.isOp(); + } return true; } + @Override - public boolean isPlayer() - { - return p!=null; + public boolean isPlayer() { + return p != null; } } diff --git a/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java b/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java index ca108f9..4b22112 100644 --- a/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java +++ b/src/main/java/com/bekvon/bukkit/residence/event/ResidencePlayerFlagEvent.java @@ -7,7 +7,6 @@ package com.bekvon.bukkit.residence.event; import org.bukkit.entity.Player; -import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; /** @@ -17,8 +16,7 @@ import com.bekvon.bukkit.residence.protection.ClaimedResidence; public class ResidencePlayerFlagEvent extends ResidenceFlagEvent implements ResidencePlayerEventInterface { Player p; - public ResidencePlayerFlagEvent(String eventName,ClaimedResidence resref, Player player, String flag, FlagType type, String target) - { + public ResidencePlayerFlagEvent(final String eventName, final ClaimedResidence resref, final Player player, final String flag, final FlagType type, final String target) { super(eventName, resref, flag, type, target); p = player; } @@ -29,16 +27,15 @@ public class ResidencePlayerFlagEvent extends ResidenceFlagEvent implements Resi } @Override - public boolean isAdmin() - { - if(isPlayer()) - return Residence.getPermissionManager().isResidenceAdmin(p); + public boolean isAdmin() { + if (isPlayer()) { + return p.hasPermission("residence.admin") || p.isOp(); + } return true; } @Override - public boolean isPlayer() - { - return p!=null; + public boolean isPlayer() { + return p != null; } } diff --git a/src/main/java/com/bekvon/bukkit/residence/itemlist/ResidenceItemList.java b/src/main/java/com/bekvon/bukkit/residence/itemlist/ResidenceItemList.java index eae10e8..196a5e0 100644 --- a/src/main/java/com/bekvon/bukkit/residence/itemlist/ResidenceItemList.java +++ b/src/main/java/com/bekvon/bukkit/residence/itemlist/ResidenceItemList.java @@ -4,52 +4,53 @@ */ package com.bekvon.bukkit.residence.itemlist; + +import java.util.Map; + import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.permissions.PermissionGroup; import com.bekvon.bukkit.residence.protection.ClaimedResidence; -import java.util.Map; -import org.bukkit.Material; -import org.bukkit.entity.Player; /** * * @author Administrator */ public class ResidenceItemList extends ItemList { - ClaimedResidence res; + Residence plugin; + ClaimedResidence res; - public ResidenceItemList(ClaimedResidence parent, ListType type) - { - super(type); - res = parent; - } + public ResidenceItemList(final Residence plugin, final ClaimedResidence parent, final ListType type) { + super(type); + this.plugin = plugin; + res = parent; + } - private ResidenceItemList() - { - - } + private ResidenceItemList(final Residence plugin) { + this.plugin = plugin; + } - public void playerListChange(Player player, Material mat, boolean resadmin) { - PermissionGroup group = Residence.getPermissionManager().getGroup(player); - if(resadmin || (res.getPermissions().hasResidencePermission(player, true) && group.itemListAccess())) - { - if(super.toggle(mat)) - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ListMaterialAdd",ChatColor.GREEN + mat.toString() + ChatColor.YELLOW+"."+ChatColor.GREEN + type.toString().toLowerCase() + ChatColor.YELLOW)); - else - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("ListMaterialRemove",ChatColor.GREEN + mat.toString() + ChatColor.YELLOW+"."+ChatColor.GREEN + type.toString().toLowerCase() + ChatColor.YELLOW)); - } - else - { - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPermission")); - } - } + public static ResidenceItemList load(final Residence plugin, final ClaimedResidence parent, final Map map) { + final ResidenceItemList newlist = new ResidenceItemList(plugin); + newlist.res = parent; + return (ResidenceItemList) ItemList.load(map, newlist); + } - public static ResidenceItemList load(ClaimedResidence parent, Map map) - { - ResidenceItemList newlist = new ResidenceItemList(); - newlist.res = parent; - return (ResidenceItemList) ItemList.load(map, newlist); - } + public void playerListChange(final Player player, final Material mat, final boolean resadmin) { + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); + if (resadmin || (res.getPermissions().hasResidencePermission(player, true) && group.itemListAccess())) { + if (super.toggle(mat)) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ListMaterialAdd", + ChatColor.GREEN + mat.toString() + ChatColor.YELLOW + "." + ChatColor.GREEN + type.toString().toLowerCase() + ChatColor.YELLOW)); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ListMaterialRemove", + ChatColor.GREEN + mat.toString() + ChatColor.YELLOW + "." + ChatColor.GREEN + type.toString().toLowerCase() + ChatColor.YELLOW)); + } + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceBlockListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceBlockListener.java index c6709e3..ad99307 100644 --- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceBlockListener.java +++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceBlockListener.java @@ -6,11 +6,13 @@ package com.bekvon.bukkit.residence.listeners; import org.bukkit.ChatColor; - -import com.bekvon.bukkit.residence.protection.FlagPermissions; - -import org.bukkit.entity.Player; +import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockFromToEvent; @@ -19,197 +21,197 @@ import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonRetractEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.block.BlockSpreadEvent; import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; - -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockSpreadEvent; +import com.bekvon.bukkit.residence.protection.FlagPermissions; /** * * @author Administrator */ public class ResidenceBlockListener implements Listener { + Residence plugin; - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockBreak(BlockBreakEvent event) { - Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) { - return; - } - Material mat = event.getBlock().getType(); - String world = event.getBlock().getWorld().getName(); - String group = Residence.getPermissionManager().getGroupNameByPlayer(player); - if (Residence.getItemManager().isIgnored(mat, group, world)) { - return; - } - ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlock().getLocation()); - if (Residence.getConfigManager().enabledRentSystem()) { - if (res != null) { - String resname = res.getName(); - if (Residence.getConfigManager().preventRentModify() && Residence.getRentManager().isRented(resname)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny")); - event.setCancelled(true); - return; - } - } - } - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlock().getLocation(), player); - String pname = player.getName(); - if (res != null) { - if (res.getItemIgnoreList().isListed(mat)) { - return; - } - } - boolean hasdestroy = perms.playerHas(pname, player.getWorld().getName(), "destroy", perms.playerHas(pname, player.getWorld().getName(), "build", true)); - boolean hasContainer = perms.playerHas(pname, player.getWorld().getName(), "container", true); - if (!hasdestroy || (!hasContainer && mat == Material.CHEST)) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); - return; - } - } + public ResidenceBlockListener(final Residence plugin) { + this.plugin = plugin; + } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockPlace(BlockPlaceEvent event) { - Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) { - return; - } - Material mat = event.getBlock().getType(); - String world = event.getBlock().getWorld().getName(); - String group = Residence.getPermissionManager().getGroupNameByPlayer(player); - if (Residence.getItemManager().isIgnored(mat, group, world)) { - return; - } - ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlock().getLocation()); - if (Residence.getConfigManager().enabledRentSystem()) { - if (res != null) { - String resname = res.getName(); - if (Residence.getConfigManager().preventRentModify() && Residence.getRentManager().isRented(resname)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny")); - event.setCancelled(true); - return; - } - } - } - String pname = player.getName(); - if (res != null) { - if (!res.getItemBlacklist().isAllowed(mat)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ItemBlacklisted")); - event.setCancelled(true); - return; - } - } - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlock().getLocation(), player); - boolean hasplace = perms.playerHas(pname, player.getWorld().getName(), "place", perms.playerHas(pname, player.getWorld().getName(), "build", true)); - if (!hasplace) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); - return; - } - } - - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockSpread(BlockSpreadEvent event) { - Location loc = event.getBlock().getLocation(); - FlagPermissions perms = Residence.getPermsByLoc(loc); - if (!perms.has("spread", true)) { - event.setCancelled(true); - } - } - - @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockPistonRetract(BlockPistonRetractEvent event) { - FlagPermissions perms = Residence.getPermsByLoc(event.getBlock().getLocation()); - if (!perms.has("piston", true)){ - event.setCancelled(true); - return; - } - if (event.isSticky()){ - Location location = event.getRetractLocation(); - FlagPermissions blockperms = Residence.getPermsByLoc(location); - if (!blockperms.has("piston", true)) { - event.setCancelled(true); - } - } - } + public void onBlockBreak(final BlockBreakEvent event) { + final Player player = event.getPlayer(); + if (plugin.isResAdminOn(player)) { + return; + } + final Material mat = event.getBlock().getType(); + final String world = event.getBlock().getWorld().getName(); + final String group = plugin.getPermissionManager().getGroupNameByPlayer(player); + if (plugin.getItemManager().isIgnored(mat, group, world)) { + return; + } + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlock().getLocation()); + if (plugin.getConfigManager().enabledRentSystem()) { + if (res != null) { + final String resname = res.getName(); + if (plugin.getConfigManager().preventRentModify() && plugin.getRentManager().isRented(resname)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny")); + event.setCancelled(true); + return; + } + } + } + final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlock().getLocation(), player); + final String pname = player.getName(); + if (res != null) { + if (res.getItemIgnoreList().isListed(mat)) { + return; + } + } + final boolean hasdestroy = perms.playerHas(pname, player.getWorld().getName(), "destroy", perms.playerHas(pname, player.getWorld().getName(), "build", true)); + final boolean hasContainer = perms.playerHas(pname, player.getWorld().getName(), "container", true); + if (!hasdestroy || (!hasContainer && mat == Material.CHEST)) { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + return; + } + } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockPistonExtend(BlockPistonExtendEvent event) { - FlagPermissions perms = Residence.getPermsByLoc(event.getBlock().getLocation()); - if (!perms.has("piston", true)) { - event.setCancelled(true); - } - for (Block block : event.getBlocks()) { - FlagPermissions blockpermsfrom = Residence.getPermsByLoc(block.getLocation()); - Location blockto = block.getLocation(); - blockto.setX(blockto.getX()+event.getDirection().getModX()); - blockto.setY(blockto.getY()+event.getDirection().getModY()); - blockto.setZ(blockto.getZ()+event.getDirection().getModZ()); - FlagPermissions blockpermsto = Residence.getPermsByLoc(blockto); - if (!blockpermsfrom.has("piston", true) || !blockpermsto.has("piston", true)) { - event.setCancelled(true); - return; - } - } - } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockBurn(final BlockBurnEvent event) { + final FlagPermissions perms = plugin.getPermsByLoc(event.getBlock().getLocation()); + if (!perms.has("firespread", true)) { + event.setCancelled(true); + } + } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockFromTo(BlockFromToEvent event) { - FlagPermissions perms = Residence.getPermsByLoc(event.getToBlock().getLocation()); - boolean hasflow = perms.has("flow", true); - Material mat = event.getBlock().getType(); - if (!hasflow) { - event.setCancelled(true); - return; - } - if (mat == Material.LAVA || mat == Material.STATIONARY_LAVA) { - if (!perms.has("lavaflow", hasflow)) { - event.setCancelled(true); - } - return; - } - if (mat == Material.WATER || mat == Material.STATIONARY_WATER) { - if (!perms.has("waterflow", hasflow)) { - event.setCancelled(true); - } - return; - } - } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockFromTo(final BlockFromToEvent event) { + final FlagPermissions perms = plugin.getPermsByLoc(event.getToBlock().getLocation()); + final boolean hasflow = perms.has("flow", true); + final Material mat = event.getBlock().getType(); + if (!hasflow) { + event.setCancelled(true); + return; + } + if (mat == Material.LAVA || mat == Material.STATIONARY_LAVA) { + if (!perms.has("lavaflow", hasflow)) { + event.setCancelled(true); + } + return; + } + if (mat == Material.WATER || mat == Material.STATIONARY_WATER) { + if (!perms.has("waterflow", hasflow)) { + event.setCancelled(true); + } + return; + } + } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockBurn(BlockBurnEvent event) { - FlagPermissions perms = Residence.getPermsByLoc(event.getBlock().getLocation()); - if (!perms.has("firespread", true)) { - event.setCancelled(true); - } - } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockIgnite(final BlockIgniteEvent event) { + final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlock().getLocation(), event.getPlayer()); + final IgniteCause cause = event.getCause(); + if (cause == IgniteCause.SPREAD) { + if (!perms.has("firespread", true)) { + event.setCancelled(true); + } + } else if (cause == IgniteCause.FLINT_AND_STEEL) { + final Player player = event.getPlayer(); + if (player != null && !perms.playerHas(player.getName(), player.getWorld().getName(), "ignite", true) && !plugin.isResAdminOn(player)) { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } + } else { + if (!perms.has("ignite", true)) { + event.setCancelled(true); + } + } + } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onBlockIgnite(BlockIgniteEvent event) { - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlock().getLocation(), event.getPlayer()); - IgniteCause cause = event.getCause(); - if (cause == IgniteCause.SPREAD) { - if (!perms.has("firespread", true)) { - event.setCancelled(true); - } - } else if (cause == IgniteCause.FLINT_AND_STEEL) { - Player player = event.getPlayer(); - if (player != null && !perms.playerHas(player.getName(), player.getWorld().getName(), "ignite", true) && !Residence.isResAdminOn(player)) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("NoPermission")); - } - } else { - if(!perms.has("ignite", true)){ - event.setCancelled(true); - } - } - } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockPistonExtend(final BlockPistonExtendEvent event) { + final FlagPermissions perms = plugin.getPermsByLoc(event.getBlock().getLocation()); + if (!perms.has("piston", true)) { + event.setCancelled(true); + } + for (final Block block : event.getBlocks()) { + final FlagPermissions blockpermsfrom = plugin.getPermsByLoc(block.getLocation()); + final Location blockto = block.getLocation(); + blockto.setX(blockto.getX() + event.getDirection().getModX()); + blockto.setY(blockto.getY() + event.getDirection().getModY()); + blockto.setZ(blockto.getZ() + event.getDirection().getModZ()); + final FlagPermissions blockpermsto = plugin.getPermsByLoc(blockto); + if (!blockpermsfrom.has("piston", true) || !blockpermsto.has("piston", true)) { + event.setCancelled(true); + return; + } + } + } + + @SuppressWarnings("deprecation") + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockPistonRetract(final BlockPistonRetractEvent event) { + final FlagPermissions perms = plugin.getPermsByLoc(event.getBlock().getLocation()); + if (!perms.has("piston", true)) { + event.setCancelled(true); + return; + } + if (event.isSticky()) { + final Location location = event.getRetractLocation(); + final FlagPermissions blockperms = plugin.getPermsByLoc(location); + if (!blockperms.has("piston", true)) { + event.setCancelled(true); + } + } + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockPlace(final BlockPlaceEvent event) { + final Player player = event.getPlayer(); + if (plugin.isResAdminOn(player)) { + return; + } + final Material mat = event.getBlock().getType(); + final String world = event.getBlock().getWorld().getName(); + final String group = plugin.getPermissionManager().getGroupNameByPlayer(player); + if (plugin.getItemManager().isIgnored(mat, group, world)) { + return; + } + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlock().getLocation()); + if (plugin.getConfigManager().enabledRentSystem()) { + if (res != null) { + final String resname = res.getName(); + if (plugin.getConfigManager().preventRentModify() && plugin.getRentManager().isRented(resname)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny")); + event.setCancelled(true); + return; + } + } + } + final String pname = player.getName(); + if (res != null) { + if (!res.getItemBlacklist().isAllowed(mat)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted")); + event.setCancelled(true); + return; + } + } + final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlock().getLocation(), player); + final boolean hasplace = perms.playerHas(pname, player.getWorld().getName(), "place", perms.playerHas(pname, player.getWorld().getName(), "build", true)); + if (!hasplace) { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + return; + } + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onBlockSpread(final BlockSpreadEvent event) { + final Location loc = event.getBlock().getLocation(); + final FlagPermissions perms = plugin.getPermsByLoc(loc); + if (!perms.has("spread", true)) { + event.setCancelled(true); + } + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java index 945459a..dde1a14 100644 --- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java +++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidenceEntityListener.java @@ -61,303 +61,359 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions; * @author Administrator */ public class ResidenceEntityListener implements Listener { + Residence plugin; + + public ResidenceEntityListener(final Residence plugin) { + this.plugin = plugin; + } @EventHandler(priority = EventPriority.LOWEST) - public void AnimalKilling(EntityDamageByEntityEvent event) { - Entity damager = event.getDamager(); + public void AnimalKilling(final EntityDamageByEntityEvent event) { + final Entity damager = event.getDamager(); - if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) + if ((!(damager instanceof Arrow)) && (!(damager instanceof Player))) { return; + } Player cause; - if ((damager instanceof Arrow) && (!(((Arrow) damager).getShooter() instanceof Player))) + if ((damager instanceof Arrow) && (!(((Arrow) damager).getShooter() instanceof Player))) { return; - else if (damager instanceof Player) + } else if (damager instanceof Player) { cause = (Player) damager; - else + } else { cause = (Player) ((Arrow) damager).getShooter(); + } - if (Residence.isResAdminOn(cause)) + if (plugin.isResAdminOn(cause)) { return; + } - Entity entity = event.getEntity(); - ClaimedResidence res = Residence.getResidenceManager().getByLoc(entity.getLocation()); + final Entity entity = event.getEntity(); + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(entity.getLocation()); - if (res != null && !res.getPermissions().playerHas(cause.getName(), "animalkilling", true)) + if (res != null && !res.getPermissions().playerHas(cause.getName(), "animalkilling", true)) { if (isAnimal(entity)) { - cause.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + cause.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); event.setCancelled(true); } + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onCreatureSpawn(CreatureSpawnEvent event) { - FlagPermissions perms = Residence.getPermsByLoc(event.getLocation()); - Entity ent = event.getEntity(); + public void onCreatureSpawn(final CreatureSpawnEvent event) { + final FlagPermissions perms = plugin.getPermsByLoc(event.getLocation()); + final Entity ent = event.getEntity(); if (isAnimal(ent)) { - if (!perms.has("animals", true)) + if (!perms.has("animals", true)) { event.setCancelled(true); - } else if (!perms.has("monsters", true) && isMonster(ent)) + } + } else if (!perms.has("monsters", true) && isMonster(ent)) { event.setCancelled(true); + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onEndermanChangeBlock(EntityChangeBlockEvent event) { - if (event.getEntityType() != EntityType.ENDERMAN && event.getEntityType() != EntityType.WITHER) + public void onEndermanChangeBlock(final EntityChangeBlockEvent event) { + if (event.getEntityType() != EntityType.ENDERMAN && event.getEntityType() != EntityType.WITHER) { return; - FlagPermissions perms = Residence.getPermsByLoc(event.getBlock().getLocation()); - FlagPermissions world = Residence.getWorldFlags().getPerms(event.getBlock().getWorld().getName()); + } + final FlagPermissions perms = plugin.getPermsByLoc(event.getBlock().getLocation()); + final FlagPermissions world = plugin.getWorldFlags().getPerms(event.getBlock().getWorld().getName()); if (event.getEntityType() == EntityType.WITHER) { - if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true))))) + if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true))))) { event.setCancelled(true); - } else if (!perms.has("build", true)) + } + } else if (!perms.has("build", true)) { event.setCancelled(true); + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onEntityCombust(EntityCombustEvent event) { - FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation()); - if (!perms.has("burn", true)) + public void onEntityCombust(final EntityCombustEvent event) { + final FlagPermissions perms = plugin.getPermsByLoc(event.getEntity().getLocation()); + if (!perms.has("burn", true)) { event.setCancelled(true); + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onEntityDamage(EntityDamageEvent event) { + public void onEntityDamage(final EntityDamageEvent event) { Entity ent = event.getEntity(); - if (ent.hasMetadata("NPC")) + if (ent.hasMetadata("NPC")) { return; - boolean tamedWolf = ent instanceof Wolf ? ((Wolf) ent).isTamed() : false; - ClaimedResidence area = Residence.getResidenceManager().getByLoc(ent.getLocation()); + } + final boolean tamedWolf = ent instanceof Wolf ? ((Wolf) ent).isTamed() : false; + final ClaimedResidence area = plugin.getResidenceManager().getByLoc(ent.getLocation()); /* Living Entities */ if (event instanceof EntityDamageByEntityEvent) { - EntityDamageByEntityEvent attackevent = (EntityDamageByEntityEvent) event; - Entity damager = attackevent.getDamager(); + final EntityDamageByEntityEvent attackevent = (EntityDamageByEntityEvent) event; + final Entity damager = attackevent.getDamager(); ClaimedResidence srcarea = null; - if (damager != null) - srcarea = Residence.getResidenceManager().getByLoc(damager.getLocation()); + if (damager != null) { + srcarea = plugin.getResidenceManager().getByLoc(damager.getLocation()); + } boolean srcpvp = true; - if (srcarea != null) + if (srcarea != null) { srcpvp = srcarea.getPermissions().has("pvp", true); + } ent = attackevent.getEntity(); if ((ent instanceof Player || tamedWolf) && (damager instanceof Player || (damager instanceof Arrow && (((Arrow) damager).getShooter() instanceof Player)))) { Player attacker = null; - if (damager instanceof Player) + if (damager instanceof Player) { attacker = (Player) damager; - else if (damager instanceof Arrow) + } else if (damager instanceof Arrow) { attacker = (Player) ((Arrow) damager).getShooter(); + } if (!srcpvp) { - if (attacker != null) - attacker.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPVPZone")); + if (attacker != null) { + attacker.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPVPZone")); + } event.setCancelled(true); return; } /* Check for Player vs Player */ if (area == null) { /* World PvP */ - if (damager != null) - if (!Residence.getWorldFlags().getPerms(damager.getWorld().getName()).has("pvp", true)) { - if (attacker != null) - attacker.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("WorldPVPDisabled")); + if (damager != null) { + if (!plugin.getWorldFlags().getPerms(damager.getWorld().getName()).has("pvp", true)) { + if (attacker != null) { + attacker.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("WorldPVPDisabled")); + } event.setCancelled(true); } + } } else /* Normal PvP */ if (!area.getPermissions().has("pvp", true)) { - if (attacker != null) - attacker.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPVPZone")); + if (attacker != null) { + attacker.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPVPZone")); + } event.setCancelled(true); } return; - } else if ((ent instanceof Player || tamedWolf) && (damager instanceof Creeper)) + } else if ((ent instanceof Player || tamedWolf) && (damager instanceof Creeper)) { if (area == null) { - if (!Residence.getWorldFlags().getPerms(damager.getWorld().getName()).has("creeper", true)) + if (!plugin.getWorldFlags().getPerms(damager.getWorld().getName()).has("creeper", true)) { event.setCancelled(true); - } else if (!area.getPermissions().has("creeper", true)) + } + } else if (!area.getPermissions().has("creeper", true)) { event.setCancelled(true); + } + } } if (area == null) { - if (!Residence.getWorldFlags().getPerms(ent.getWorld().getName()).has("damage", true) && (ent instanceof Player || tamedWolf)) + if (!plugin.getWorldFlags().getPerms(ent.getWorld().getName()).has("damage", true) && (ent instanceof Player || tamedWolf)) { event.setCancelled(true); - } else if (!area.getPermissions().has("damage", true) && (ent instanceof Player || tamedWolf)) + } + } else if (!area.getPermissions().has("damage", true) && (ent instanceof Player || tamedWolf)) { event.setCancelled(true); - if (event.isCancelled()) + } + if (event.isCancelled()) { /* Put out a fire on a player */ - if ((ent instanceof Player || tamedWolf) && (event.getCause() == EntityDamageEvent.DamageCause.FIRE || event.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK)) + if ((ent instanceof Player || tamedWolf) && (event.getCause() == EntityDamageEvent.DamageCause.FIRE || event.getCause() == EntityDamageEvent.DamageCause.FIRE_TICK)) { ent.setFireTicks(0); + } + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { - if (event.getEntityType() == EntityType.ITEM_FRAME || (Residence.is1_8() && event.getEntityType() == EntityType.ARMOR_STAND)) { - Entity dmgr = event.getDamager(); + public void onEntityDamageByEntityEvent(final EntityDamageByEntityEvent event) { + if (event.getEntityType() == EntityType.ITEM_FRAME || (plugin.is1_8() && event.getEntityType() == EntityType.ARMOR_STAND)) { + final Entity dmgr = event.getDamager(); Player player; - if (dmgr instanceof Player) + if (dmgr instanceof Player) { player = (Player) event.getDamager(); - else if (dmgr instanceof Projectile && ((Projectile) dmgr).getShooter() instanceof Player) + } else if (dmgr instanceof Projectile && ((Projectile) dmgr).getShooter() instanceof Player) { player = (Player) ((Projectile) dmgr).getShooter(); - else + } else { return; + } - if (Residence.isResAdminOn(player)) + if (plugin.isResAdminOn(player)) { return; + } // Note: Location of entity, not player; otherwise player could // stand outside of res and still damage - Location loc = event.getEntity().getLocation(); - ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc); + final Location loc = event.getEntity().getLocation(); + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); if (res != null) { - if (!res.getPermissions().has("container", false)) + if (!res.getPermissions().has("container", false)) { if (isMonster(dmgr)) { event.setCancelled(true); return; } + } if (!res.getPermissions().playerHas(player.getName(), "container", false)) { event.setCancelled(true); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "container")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "container")); } } } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onEntityExplode(EntityExplodeEvent event) { - if (event.isCancelled() || event.getEntity() == null) + public void onEntityExplode(final EntityExplodeEvent event) { + if (event.isCancelled() || event.getEntity() == null) { return; + } Boolean cancel = false; - EntityType entity = event.getEntityType(); - FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation()); - FlagPermissions world = Residence.getWorldFlags().getPerms(event.getEntity().getWorld().getName()); - if (entity == EntityType.CREEPER) - if (!perms.has("creeper", perms.has("explode", true))) + final EntityType entity = event.getEntityType(); + final FlagPermissions perms = plugin.getPermsByLoc(event.getEntity().getLocation()); + final FlagPermissions world = plugin.getWorldFlags().getPerms(event.getEntity().getWorld().getName()); + if (entity == EntityType.CREEPER) { + if (!perms.has("creeper", perms.has("explode", true))) { cancel = true; - if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT) - if (!perms.has("tnt", perms.has("explode", true))) + } + } + if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT) { + if (!perms.has("tnt", perms.has("explode", true))) { cancel = true; - if (entity == EntityType.FIREBALL) - if (!perms.has("fireball", perms.has("explode", true))) + } + } + if (entity == EntityType.FIREBALL) { + if (!perms.has("fireball", perms.has("explode", true))) { cancel = true; - if (entity == EntityType.SMALL_FIREBALL) - if (!perms.has("fireball", perms.has("explode", true))) + } + } + if (entity == EntityType.SMALL_FIREBALL) { + if (!perms.has("fireball", perms.has("explode", true))) { cancel = true; - if (entity == EntityType.WITHER_SKULL || entity == EntityType.WITHER) - if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true))))) + } + } + if (entity == EntityType.WITHER_SKULL || entity == EntityType.WITHER) { + if (!perms.has("wither", perms.has("explode", world.has("wither", world.has("explode", true))))) { cancel = true; + } + } if (cancel) { event.setCancelled(true); event.getEntity().remove(); } else { - List preserve = new ArrayList(); - for (Block block : event.blockList()) { - FlagPermissions blockperms = Residence.getPermsByLoc(block.getLocation()); + final List preserve = new ArrayList(); + for (final Block block : event.blockList()) { + final FlagPermissions blockperms = plugin.getPermsByLoc(block.getLocation()); if ((!blockperms.has("wither", blockperms.has("explode", world.has("wither", world.has("explode", true)))) && (entity == EntityType.WITHER || entity == EntityType.WITHER_SKULL) || (!blockperms.has("fireball", blockperms.has("explode", true)) && (entity == EntityType.FIREBALL || entity == EntityType.SMALL_FIREBALL)) || (!blockperms.has("tnt", blockperms.has("explode", true)) && (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT)) - || (!blockperms.has("creeper", blockperms.has("explode", true)) && entity == EntityType.CREEPER))) + || (!blockperms.has("creeper", blockperms.has("explode", true)) && entity == EntityType.CREEPER))) { preserve.add(block); + } } - for (Block block : preserve) + for (final Block block : preserve) { event.blockList().remove(block); + } } } @EventHandler(priority = EventPriority.LOWEST) - public void onEntityInteract(EntityInteractEvent event) { - Block block = event.getBlock(); - Material mat = block.getType(); - Entity entity = event.getEntity(); - FlagPermissions perms = Residence.getPermsByLoc(block.getLocation()); - boolean hastrample = perms.has("trample", perms.has("hasbuild", true)); - if (!hastrample && !(entity.getType() == EntityType.FALLING_BLOCK) && (mat == Material.SOIL || mat == Material.SOUL_SAND)) + public void onEntityInteract(final EntityInteractEvent event) { + final Block block = event.getBlock(); + final Material mat = block.getType(); + final Entity entity = event.getEntity(); + final FlagPermissions perms = plugin.getPermsByLoc(block.getLocation()); + final boolean hastrample = perms.has("trample", perms.has("hasbuild", true)); + if (!hastrample && !(entity.getType() == EntityType.FALLING_BLOCK) && (mat == Material.SOIL || mat == Material.SOUL_SAND)) { event.setCancelled(true); + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onExplosionPrime(ExplosionPrimeEvent event) { - EntityType entity = event.getEntityType(); - FlagPermissions perms = Residence.getPermsByLoc(event.getEntity().getLocation()); - if (entity == EntityType.CREEPER) + public void onExplosionPrime(final ExplosionPrimeEvent event) { + final EntityType entity = event.getEntityType(); + final FlagPermissions perms = plugin.getPermsByLoc(event.getEntity().getLocation()); + if (entity == EntityType.CREEPER) { if (!perms.has("creeper", perms.has("explode", true))) { event.setCancelled(true); event.getEntity().remove(); } - if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT) + } + if (entity == EntityType.PRIMED_TNT || entity == EntityType.MINECART_TNT) { if (!perms.has("tnt", perms.has("explode", true))) { event.setCancelled(true); event.getEntity().remove(); } - if (entity == EntityType.FIREBALL) + } + if (entity == EntityType.FIREBALL) { if (!perms.has("fireball", perms.has("explode", true))) { event.setCancelled(true); event.getEntity().remove(); } - if (entity == EntityType.SMALL_FIREBALL) + } + if (entity == EntityType.SMALL_FIREBALL) { if (!perms.has("fireball", perms.has("explode", true))) { event.setCancelled(true); event.getEntity().remove(); } - if (entity == EntityType.WITHER_SKULL) + } + if (entity == EntityType.WITHER_SKULL) { if (!perms.has("witherdamage", perms.has("damage", true))) { event.setCancelled(true); event.getEntity().remove(); } + } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onHangingBreak(HangingBreakEvent event) { + public void onHangingBreak(final HangingBreakEvent event) { if (event instanceof HangingBreakByEntityEvent) { - HangingBreakByEntityEvent evt = (HangingBreakByEntityEvent) event; + final HangingBreakByEntityEvent evt = (HangingBreakByEntityEvent) event; if (evt.getRemover() instanceof Player) { - Player player = (Player) evt.getRemover(); - if (Residence.isResAdminOn(player)) + final Player player = (Player) evt.getRemover(); + if (plugin.isResAdminOn(player)) { return; - String pname = player.getName(); - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getEntity().getLocation(), player); - String world = event.getEntity().getWorld().getName(); + } + final String pname = player.getName(); + final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getEntity().getLocation(), player); + final String world = event.getEntity().getWorld().getName(); if (!perms.playerHas(pname, world, "destroy", perms.playerHas(pname, world, "build", true))) { event.setCancelled(true); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); } } } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onHangingPlace(HangingPlaceEvent event) { - Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) + public void onHangingPlace(final HangingPlaceEvent event) { + final Player player = event.getPlayer(); + if (plugin.isResAdminOn(player)) { return; - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getEntity().getLocation(), player); - String pname = player.getName(); - String world = player.getWorld().getName(); + } + final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getEntity().getLocation(), player); + final String pname = player.getName(); + final String world = player.getWorld().getName(); if (!perms.playerHas(pname, world, "place", perms.playerHas(pname, world, "build", true))) { event.setCancelled(true); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onSplashPotion(PotionSplashEvent event) { - if (event.isCancelled()) + public void onSplashPotion(final PotionSplashEvent event) { + if (event.isCancelled()) { return; - Entity ent = event.getEntity(); - boolean srcpvp = Residence.getPermsByLoc(ent.getLocation()).has("pvp", true); - Iterator it = event.getAffectedEntities().iterator(); + } + final Entity ent = event.getEntity(); + final boolean srcpvp = plugin.getPermsByLoc(ent.getLocation()).has("pvp", true); + final Iterator it = event.getAffectedEntities().iterator(); while (it.hasNext()) { - LivingEntity target = it.next(); + final LivingEntity target = it.next(); if (target.getType() == EntityType.PLAYER) { - Boolean tgtpvp = Residence.getPermsByLoc(target.getLocation()).has("pvp", true); - if (!srcpvp || !tgtpvp) + final Boolean tgtpvp = plugin.getPermsByLoc(target.getLocation()).has("pvp", true); + if (!srcpvp || !tgtpvp) { event.setIntensity(target, 0); + } } } } - private boolean isAnimal(Entity ent) { + private boolean isAnimal(final Entity ent) { return (ent instanceof Horse || ent instanceof Bat || ent instanceof Snowman || ent instanceof IronGolem || ent instanceof Ocelot || ent instanceof Pig || ent instanceof Sheep - || ent instanceof Chicken || ent instanceof Wolf || ent instanceof Cow || ent instanceof Squid || ent instanceof Villager || (Residence.is1_8() && ent instanceof Rabbit)); + || ent instanceof Chicken || ent instanceof Wolf || ent instanceof Cow || ent instanceof Squid || ent instanceof Villager || (plugin.is1_8() && ent instanceof Rabbit)); } - private boolean isMonster(Entity ent) { + private boolean isMonster(final Entity ent) { return (ent instanceof Monster || ent instanceof Slime || ent instanceof Ghast); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java index 9e12fa6..ce72531 100644 --- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java +++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener.java @@ -54,37 +54,40 @@ import cn.citycraft.PluginHelper.utils.ActionBar; @SuppressWarnings("deprecation") public class ResidencePlayerListener implements Listener { - protected Map currentRes; - protected Map lastUpdate; - protected Map lastOutsideLoc; - protected int minUpdateTime; protected boolean chatenabled; + protected Map currentRes; + protected Map lastOutsideLoc; + protected Map lastUpdate; + protected int minUpdateTime; protected List playerToggleChat; + Residence plugin; - public ResidencePlayerListener() { + public ResidencePlayerListener(final Residence plugin) { + this.plugin = plugin; currentRes = new HashMap(); lastUpdate = new HashMap(); lastOutsideLoc = new HashMap(); playerToggleChat = new ArrayList(); - minUpdateTime = Residence.getConfigManager().getMinMoveUpdateInterval(); - chatenabled = Residence.getConfigManager().chatEnabled(); - for (Player player : Bukkit.getServer().getOnlinePlayers()) + minUpdateTime = plugin.getConfigManager().getMinMoveUpdateInterval(); + chatenabled = plugin.getConfigManager().chatEnabled(); + for (final Player player : Bukkit.getServer().getOnlinePlayers()) { lastUpdate.put(player.getName(), System.currentTimeMillis()); + } } - public String getCurrentResidenceName(String player) { + public String getCurrentResidenceName(final String player) { return currentRes.get(player); } - public void handleNewLocation(Player player, Location loc, boolean move) { - String pname = player.getName(); + public void handleNewLocation(final Player player, final Location loc, final boolean move) { + final String pname = player.getName(); - ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc); + ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); String areaname = null; boolean chatchange = false; String subzone = null; if (res != null) { - areaname = Residence.getResidenceManager().getNameByLoc(loc); + areaname = plugin.getResidenceManager().getNameByLoc(loc); while (res.getSubzoneByLoc(player.getLocation()) != null) { subzone = res.getSubzoneNameByLoc(player.getLocation()); res = res.getSubzoneByLoc(player.getLocation()); @@ -93,163 +96,183 @@ public class ResidencePlayerListener implements Listener { } ClaimedResidence ResOld = null; if (currentRes.containsKey(pname)) { - ResOld = Residence.getResidenceManager().getByName(currentRes.get(pname)); - if (ResOld == null) + ResOld = plugin.getResidenceManager().getByName(currentRes.get(pname)); + if (ResOld == null) { currentRes.remove(pname); + } } if (res == null) { lastOutsideLoc.put(pname, loc); if (ResOld != null) { - String leave = ResOld.getLeaveMessage(); + final String leave = ResOld.getLeaveMessage(); // New ResidenceChangeEvent - ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(ResOld, null, player); - Residence.getServ().getPluginManager().callEvent(chgEvent); + final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(ResOld, null, player); + plugin.getServ().getPluginManager().callEvent(chgEvent); - if (leave != null && !leave.equals("")) - if (Residence.getConfigManager().useActionBar()) + if (leave != null && !leave.equals("")) { + if (plugin.getConfigManager().useActionBar()) { ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, ResOld.getName(), ResOld, leave)).toString()); - else + } else { player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave)); + } + } currentRes.remove(pname); - Residence.getChatManager().removeFromChannel(pname); + plugin.getChatManager().removeFromChannel(pname); } return; } - if (move) - if (!res.getPermissions().playerHas(pname, "move", true) && !Residence.isResAdminOn(player) && !player.hasPermission("residence.admin.move")) { - Location lastLoc = lastOutsideLoc.get(pname); - if (lastLoc != null) + if (move) { + if (!res.getPermissions().playerHas(pname, "move", true) && !plugin.isResAdminOn(player) && !player.hasPermission("residence.admin.move")) { + final Location lastLoc = lastOutsideLoc.get(pname); + if (lastLoc != null) { player.teleport(lastLoc); - else + } else { player.teleport(res.getOutsideFreeLoc(loc)); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1])); + } + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceMoveDeny", res.getName().split("\\.")[res.getName().split("\\.").length - 1])); return; } + } lastOutsideLoc.put(pname, loc); if (!currentRes.containsKey(pname) || ResOld != res) { currentRes.put(pname, areaname); - if (subzone == null) + if (subzone == null) { chatchange = true; + } // "from" residence for ResidenceChangedEvent ClaimedResidence chgFrom = null; if (ResOld != res && ResOld != null) { - String leave = ResOld.getLeaveMessage(); + final String leave = ResOld.getLeaveMessage(); chgFrom = ResOld; - if (leave != null && !leave.equals("") && ResOld != res.getParent()) - if (Residence.getConfigManager().useActionBar()) + if (leave != null && !leave.equals("") && ResOld != res.getParent()) { + if (plugin.getConfigManager().useActionBar()) { ActionBar.send(player, ChatColor.YELLOW + insertMessages(player, ResOld.getName(), ResOld, leave)); - else + } else { player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, ResOld.getName(), ResOld, leave)); + } + } } - String enterMessage = res.getEnterMessage(); + final String enterMessage = res.getEnterMessage(); // New ResidenceChangedEvent - ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player); - Residence.getServ().getPluginManager().callEvent(chgEvent); + final ResidenceChangedEvent chgEvent = new ResidenceChangedEvent(chgFrom, res, player); + plugin.getServ().getPluginManager().callEvent(chgEvent); - if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) - if (Residence.getConfigManager().useActionBar()) + if (enterMessage != null && !enterMessage.equals("") && !(ResOld != null && res == ResOld.getParent())) { + if (plugin.getConfigManager().useActionBar()) { ActionBar.send(player, (new StringBuilder()).append(ChatColor.YELLOW).append(insertMessages(player, areaname, res, enterMessage)).toString()); - else + } else { player.sendMessage(ChatColor.YELLOW + this.insertMessages(player, areaname, res, enterMessage)); + } + } + } + if (chatchange && chatenabled) { + plugin.getChatManager().setChannel(pname, areaname); } - if (chatchange && chatenabled) - Residence.getChatManager().setChannel(pname, areaname); } - public String insertMessages(Player player, String areaname, ClaimedResidence res, String message) { + public String insertMessages(final Player player, final String areaname, final ClaimedResidence res, String message) { try { message = message.replaceAll("%player", player.getName()); message = message.replaceAll("%owner", res.getPermissions().getOwner()); message = message.replaceAll("%residence", areaname); - } catch (Exception ex) { + } catch (final Exception ex) { return ""; } return message; } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { - Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) + public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent event) { + final Player player = event.getPlayer(); + if (plugin.isResAdminOn(player)) { return; - String pname = player.getName(); - ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation()); - if (res != null) - if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) - if (Residence.getRentManager().isRented(res.getName())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny")); + } + final String pname = player.getName(); + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlockClicked().getLocation()); + if (res != null) { + if (plugin.getConfigManager().preventRentModify() && plugin.getConfigManager().enabledRentSystem()) { + if (plugin.getRentManager().isRented(res.getName())) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny")); event.setCancelled(true); return; } - FlagPermissions perms = Residence.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player); + } + } + final FlagPermissions perms = plugin.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")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "bucket")); event.setCancelled(true); } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerBucketFill(PlayerBucketFillEvent event) { - Player player = event.getPlayer(); - String pname = player.getName(); - if (Residence.isResAdminOn(player)) + public void onPlayerBucketFill(final PlayerBucketFillEvent event) { + final Player player = event.getPlayer(); + final String pname = player.getName(); + if (plugin.isResAdminOn(player)) { return; - ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getBlockClicked().getLocation()); - if (res != null) - if (Residence.getConfigManager().preventRentModify() && Residence.getConfigManager().enabledRentSystem()) - if (Residence.getRentManager().isRented(res.getName())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("RentedModifyDeny")); + } + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(event.getBlockClicked().getLocation()); + if (res != null) { + if (plugin.getConfigManager().preventRentModify() && plugin.getConfigManager().enabledRentSystem()) { + if (plugin.getRentManager().isRented(res.getName())) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("RentedModifyDeny")); event.setCancelled(true); return; } - 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)); + } + } + final FlagPermissions perms = plugin.getPermsByLocForPlayer(event.getBlockClicked().getLocation(), player); + final 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 + plugin.getLanguage().getPhrase("FlagDeny", "bucket")); event.setCancelled(true); } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerChat(AsyncPlayerChatEvent event) { - String pname = event.getPlayer().getName(); + public void onPlayerChat(final AsyncPlayerChatEvent event) { + final String pname = event.getPlayer().getName(); if (chatenabled && playerToggleChat.contains(pname)) { - String area = currentRes.get(pname); + final String area = currentRes.get(pname); if (area != null) { - ChatChannel channel = Residence.getChatManager().getChannel(area); - if (channel != null) + final ChatChannel channel = plugin.getChatManager().getChannel(area); + if (channel != null) { channel.chat(pname, event.getMessage()); + } event.setCancelled(true); } } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerInteract(PlayerInteractEvent event) { - Player player = event.getPlayer(); - Material heldItem = player.getItemInHand().getType(); - Block block = event.getClickedBlock(); - if (block == null) + public void onPlayerInteract(final PlayerInteractEvent event) { + final Player player = event.getPlayer(); + final Material heldItem = player.getItemInHand().getType(); + final Block block = event.getClickedBlock(); + if (block == null) { return; - Material mat = block.getType(); + } + final Material mat = block.getType(); 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) + final int typeId = player.getItemInHand().getTypeId(); + if (typeId != plugin.getConfigManager().getSelectionTooldID() && typeId != plugin.getConfigManager().getInfoToolID() && typeId != 351 && typeId != 416) { return; + } } - FlagPermissions perms = Residence.getPermsByLocForPlayer(block.getLocation(), player); - String world = player.getWorld().getName(); - String permgroup = Residence.getPermissionManager().getGroupNameByPlayer(player); - boolean resadmin = Residence.isResAdminOn(player); + FlagPermissions perms = plugin.getPermsByLocForPlayer(block.getLocation(), player); + final String world = player.getWorld().getName(); + final String permgroup = plugin.getPermissionManager().getGroupNameByPlayer(player); + final boolean resadmin = plugin.isResAdminOn(player); if (event.getAction() == Action.PHYSICAL) { if (!resadmin) { - boolean hasuse = perms.playerHas(player.getName(), world, "use", true); - boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse); + final boolean hasuse = perms.playerHas(player.getName(), world, "use", true); + final boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse); if ((!hasuse && !haspressure || !haspressure) && (mat == Material.STONE_PLATE || mat == Material.WOOD_PLATE)) { event.setCancelled(true); return; @@ -261,229 +284,258 @@ public class ResidencePlayerListener implements Listener { } return; } - if (!resadmin && !Residence.getItemManager().isAllowed(heldItem, permgroup, world)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ItemBlacklisted")); + if (!resadmin && !plugin.getItemManager().isAllowed(heldItem, permgroup, world)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted")); event.setCancelled(true); return; } 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 (player.getItemInHand().getTypeId() == plugin.getConfigManager().getSelectionTooldID()) { + final Plugin wep = Bukkit.getPluginManager().getPlugin("WorldEdit"); + if (wep != null) { + if (((WorldEditPlugin) wep).getConfig().getInt("wand-item") == plugin.getConfigManager().getSelectionTooldID()) { return; - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + } + } + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); if (player.hasPermission("residence.select") || player.hasPermission("residence.create") && !player.isPermissionSet("residence.select") - || group.canCreateResidences() && !player.isPermissionSet("residence.create") && !player.isPermissionSet("residence.select") || resadmin) + || 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 + "!"); + final Location loc = block.getLocation(); + plugin.getSelectionManager().placeLoc1(player, loc); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Primary")) + ChatColor.RED + "(" + loc.getBlockX() + "," + + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!"); event.setCancelled(true); } 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 + "!"); + final Location loc = block.getLocation(); + plugin.getSelectionManager().placeLoc2(player, loc); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectPoint", plugin.getLanguage().getPhrase("Secondary")) + ChatColor.RED + "(" + loc.getBlockX() + "," + + loc.getBlockY() + "," + loc.getBlockZ() + ")" + ChatColor.GREEN + "!"); } + } } - if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getInfoToolID()) + if (player.getItemInHand().getTypeId() == plugin.getConfigManager().getInfoToolID()) { if (event.getAction() == Action.LEFT_CLICK_BLOCK) { - Location loc = block.getLocation(); - String res = Residence.getResidenceManager().getNameByLoc(loc); + final Location loc = block.getLocation(); + final String res = plugin.getResidenceManager().getNameByLoc(loc); if (res != null) { - Residence.getResidenceManager().printAreaInfo(res, player); + plugin.getResidenceManager().printAreaInfo(res, player); event.setCancelled(true); } else { event.setCancelled(true); - player.sendMessage(Residence.getLanguage().getPhrase("NoResHere")); + player.sendMessage(plugin.getLanguage().getPhrase("NoResHere")); } } + } if (!resadmin) { - if (heldItem != null) + if (heldItem != null) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (player.getItemInHand().getTypeId() == 351) + 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); + perms = plugin.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player); if (!perms.playerHas(player.getName(), world, "build", true)) { event.setCancelled(true); return; } } - if (Residence.is1_8()) + } + if (plugin.is1_8()) { if (heldItem == Material.ARMOR_STAND) { - perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player); + perms = plugin.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 + plugin.getLanguage().getPhrase("NoPermission")); event.setCancelled(true); return; } } + } } + } if (isContainer(mat, block) || isCanUseEntity(mat, block)) { - boolean hasuse = perms.playerHas(player.getName(), world, "use", true); - for (Entry checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) - if (mat == checkMat.getKey()) - if (!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) + final boolean hasuse = perms.playerHas(player.getName(), world, "use", true); + for (final Entry checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) { + if (mat == checkMat.getKey()) { + 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 + plugin.getLanguage().getPhrase("FlagDeny", checkMat.getValue())); return; } else { event.setCancelled(true); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "use")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "use")); return; } - if (Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId()))) + } + } + } + if (plugin.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 + plugin.getLanguage().getPhrase("FlagDeny", "container")); return; } - if (Residence.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId()))) + } + if (plugin.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 + plugin.getLanguage().getPhrase("FlagDeny", "use")); return; } - if (event.getAction() == Action.RIGHT_CLICK_BLOCK) - if (Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId()))) + } + if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (plugin.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 + plugin.getLanguage().getPhrase("FlagDeny", "use")); return; } + } + } } } } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { - Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) + public void onPlayerInteractEntity(final PlayerInteractEntityEvent event) { + final Player player = event.getPlayer(); + if (plugin.isResAdminOn(player)) { return; - Entity ent = event.getRightClicked(); + } + final Entity ent = event.getRightClicked(); /* Trade */ if (ent.getType() == EntityType.VILLAGER) { - ClaimedResidence res = Residence.getResidenceManager().getByLoc(event.getPlayer().getLocation()); + final ClaimedResidence res = plugin.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 + plugin.getLanguage().getPhrase("NoPermission")); event.setCancelled(true); } } /* Container - ItemFrame protection */ - Material heldItem = player.getItemInHand().getType(); - if (!(ent instanceof Hanging)) + final Material heldItem = player.getItemInHand().getType(); + if (!(ent instanceof Hanging)) { return; - Hanging hanging = (Hanging) ent; - if (hanging.getType() != EntityType.ITEM_FRAME) + } + final Hanging hanging = (Hanging) ent; + if (hanging.getType() != EntityType.ITEM_FRAME) { return; - FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player); - String world = player.getWorld().getName(); - String permgroup = Residence.getPermissionManager().getGroupNameByPlayer(player); - if (!Residence.getItemManager().isAllowed(heldItem, permgroup, world)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ItemBlacklisted")); + } + final FlagPermissions perms = plugin.getPermsByLocForPlayer(ent.getLocation(), player); + final String world = player.getWorld().getName(); + final String permgroup = plugin.getPermissionManager().getGroupNameByPlayer(player); + if (!plugin.getItemManager().isAllowed(heldItem, permgroup, world)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ItemBlacklisted")); event.setCancelled(true); return; } 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 + plugin.getLanguage().getPhrase("FlagDeny", "container")); } } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onPlayerJoin(PlayerJoinEvent event) { - Player player = event.getPlayer(); + public void onPlayerJoin(final PlayerJoinEvent event) { + final Player player = event.getPlayer(); lastUpdate.put(player.getName(), 0L); - if (Residence.getPermissionManager().isResidenceAdmin(player)) - Residence.turnResAdminOn(player); + if (plugin.getPermissionManager().isResidenceAdmin(player)) { + plugin.turnResAdminOn(player); + } handleNewLocation(player, player.getLocation(), false); } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerMove(PlayerMoveEvent event) { - Player player = event.getPlayer(); - if (player == null) + public void onPlayerMove(final PlayerMoveEvent event) { + final Player player = event.getPlayer(); + if (player == null) { return; - long now = System.currentTimeMillis(); + } + final long now = System.currentTimeMillis(); if (!lastUpdate.containsKey(player.getName())) { lastUpdate.put(player.getName(), now); return; } - long last = lastUpdate.get(player.getName()); - if (now - last < Residence.getConfigManager().getMinMoveUpdateInterval()) + final long last = lastUpdate.get(player.getName()); + if (now - last < plugin.getConfigManager().getMinMoveUpdateInterval()) { return; + } lastUpdate.put(player.getName(), now); - if (event.getFrom().getWorld() == event.getTo().getWorld()) - if (event.getFrom().distance(event.getTo()) == 0) + if (event.getFrom().getWorld() == event.getTo().getWorld()) { + if (event.getFrom().distance(event.getTo()) == 0) { return; + } + } handleNewLocation(player, event.getTo(), true); } @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerQuit(PlayerQuitEvent event) { - String pname = event.getPlayer().getName(); + public void onPlayerQuit(final PlayerQuitEvent event) { + final String pname = event.getPlayer().getName(); currentRes.remove(pname); lastUpdate.remove(pname); lastOutsideLoc.remove(pname); - Residence.getChatManager().removeFromChannel(pname); + plugin.getChatManager().removeFromChannel(pname); } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerSpawn(PlayerRespawnEvent event) { + public void onPlayerSpawn(final PlayerRespawnEvent event) { Location loc = event.getRespawnLocation(); - Boolean bed = event.isBedSpawn(); - Player player = event.getPlayer(); - ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc); - if (res == null) + final Boolean bed = event.isBedSpawn(); + final Player player = event.getPlayer(); + ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); + if (res == null) { return; - if (res.getPermissions().playerHas(player.getName(), "move", true)) + } + if (res.getPermissions().playerHas(player.getName(), "move", true)) { return; - if (bed) + } + if (bed) { loc = player.getWorld().getSpawnLocation(); - res = Residence.getResidenceManager().getByLoc(loc); - if (res != null) - if (!res.getPermissions().playerHas(player.getName(), "move", true)) + } + res = plugin.getResidenceManager().getByLoc(loc); + if (res != null) { + if (!res.getPermissions().playerHas(player.getName(), "move", true)) { loc = res.getOutsideFreeLoc(loc); - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoSpawn")); + } + } + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoSpawn")); event.setRespawnLocation(loc); } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerTeleport(PlayerTeleportEvent event) { - Location loc = event.getTo(); - Player player = event.getPlayer(); + public void onPlayerTeleport(final PlayerTeleportEvent event) { + final Location loc = event.getTo(); + final Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) { + if (plugin.isResAdminOn(player)) { handleNewLocation(player, loc, false); return; } - ClaimedResidence res = Residence.getResidenceManager().getByLoc(loc); - if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND || event.getCause() == TeleportCause.NETHER_PORTAL) + final ClaimedResidence res = plugin.getResidenceManager().getByLoc(loc); + if (event.getCause() == TeleportCause.ENDER_PEARL || event.getCause() == TeleportCause.COMMAND || event.getCause() == TeleportCause.NETHER_PORTAL) { if (res != null) { - String areaname = Residence.getResidenceManager().getNameByLoc(loc); + final String areaname = plugin.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 + plugin.getLanguage().getPhrase("ResidenceMoveDeny", areaname)); return; } } - if (event.getCause() == TeleportCause.PLUGIN) + } + if (event.getCause() == TeleportCause.PLUGIN) { if (res != null) { - String areaname = Residence.getResidenceManager().getNameByLoc(loc); + final String areaname = plugin.getResidenceManager().getNameByLoc(loc); 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 + plugin.getLanguage().getPhrase("TeleportDeny", areaname)); return; } } + } handleNewLocation(player, loc, false); } @@ -492,44 +544,45 @@ public class ResidencePlayerListener implements Listener { lastUpdate = new HashMap(); lastOutsideLoc = new HashMap(); playerToggleChat = new ArrayList(); - minUpdateTime = Residence.getConfigManager().getMinMoveUpdateInterval(); - chatenabled = Residence.getConfigManager().chatEnabled(); - for (Player player : Bukkit.getServer().getOnlinePlayers()) + minUpdateTime = plugin.getConfigManager().getMinMoveUpdateInterval(); + chatenabled = plugin.getConfigManager().chatEnabled(); + for (final Player player : Bukkit.getServer().getOnlinePlayers()) { lastUpdate.put(player.getName(), System.currentTimeMillis()); - } - - public void tooglePlayerResidenceChat(Player player) { - String pname = player.getName(); - if (playerToggleChat.contains(pname)) { - playerToggleChat.remove(pname); - 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 + "!")); } } - private boolean isCanUseEntity(Material mat, Block block) { + public void tooglePlayerResidenceChat(final Player player) { + final String pname = player.getName(); + if (playerToggleChat.contains(pname)) { + playerToggleChat.remove(pname); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "OFF" + ChatColor.YELLOW + "!")); + } else { + playerToggleChat.add(pname); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("ResidenceChat", ChatColor.RED + "ON" + ChatColor.YELLOW + "!")); + } + } + + private boolean isCanUseEntity(final Material mat, final Block block) { return isCanUseEntity_BothClick(mat, block) || isCanUseEntity_RClickOnly(mat, block); } - private boolean isCanUseEntity_BothClick(Material mat, Block block) { + private boolean isCanUseEntity_BothClick(final Material mat, final Block block) { return mat == Material.LEVER || mat == Material.STONE_BUTTON || mat == Material.WOOD_BUTTON || mat == Material.WOODEN_DOOR || 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())) - || (Residence.is1_8() && (mat == Material.SPRUCE_DOOR || mat == Material.BIRCH_DOOR || mat == Material.JUNGLE_DOOR || mat == Material.ACACIA_DOOR || mat == Material.DARK_OAK_DOOR + || plugin.getConfigManager().getCustomBothClick().contains(Integer.valueOf(block.getTypeId())) + || (plugin.is1_8() && (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)); } - private boolean isCanUseEntity_RClickOnly(Material mat, Block block) { + private boolean isCanUseEntity_RClickOnly(final Material mat, final 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 || mat == Material.ENCHANTMENT_TABLE || Residence.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId())); + || mat == Material.BREWING_STAND || mat == Material.ENCHANTMENT_TABLE || plugin.getConfigManager().getCustomRightClick().contains(Integer.valueOf(block.getTypeId())); } - private boolean isContainer(Material mat, Block block) { + private boolean isContainer(final Material mat, final Block block) { return FlagPermissions.getMaterialUseFlagList().containsKey(mat) && FlagPermissions.getMaterialUseFlagList().get(mat).equals("container") - || Residence.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId())); + || plugin.getConfigManager().getCustomContainers().contains(Integer.valueOf(block.getTypeId())); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java index 19ec1a5..c18afc0 100644 --- a/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java +++ b/src/main/java/com/bekvon/bukkit/residence/listeners/ResidencePlayerListener_1_8.java @@ -22,23 +22,30 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions; * @author Administrator */ public class ResidencePlayerListener_1_8 implements Listener { + Residence plugin; + + public ResidencePlayerListener_1_8(final Residence plugin) { + this.plugin = plugin; + } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event) { - Player player = event.getPlayer(); - if (Residence.isResAdminOn(player)) + public void onPlayerInteractAtEntity(final PlayerInteractAtEntityEvent event) { + final Player player = event.getPlayer(); + if (plugin.isResAdminOn(player)) { return; + } - Entity ent = event.getRightClicked(); - if (ent.getType() != EntityType.ARMOR_STAND) + final Entity ent = event.getRightClicked(); + if (ent.getType() != EntityType.ARMOR_STAND) { return; + } - FlagPermissions perms = Residence.getPermsByLocForPlayer(ent.getLocation(), player); - String world = player.getWorld().getName(); + final FlagPermissions perms = plugin.getPermsByLocForPlayer(ent.getLocation(), player); + final String world = player.getWorld().getName(); 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 + plugin.getLanguage().getPhrase("FlagDeny", "container")); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/listeners/flag/ResidenceFlyListener.java b/src/main/java/com/bekvon/bukkit/residence/listeners/flag/ResidenceFlyListener.java index 7e297ca..9f2da36 100644 --- a/src/main/java/com/bekvon/bukkit/residence/listeners/flag/ResidenceFlyListener.java +++ b/src/main/java/com/bekvon/bukkit/residence/listeners/flag/ResidenceFlyListener.java @@ -21,78 +21,91 @@ import com.bekvon.bukkit.residence.protection.ResidencePermissions; public class ResidenceFlyListener implements Listener { HashMap fall = new HashMap(); + Residence plugin; - public ResidenceFlyListener() { + public ResidenceFlyListener(final Residence plugin) { + this.plugin = plugin; FlagPermissions.addFlag("fly"); FlagPermissions.addResidenceOnlyFlag("fly"); } @EventHandler(ignoreCancelled = true) - public void FlagChange(ResidenceFlagChangeEvent e) { - ClaimedResidence res = e.getResidence(); - for (Player p : res.getPlayersInResidence()) - if (!permCheck(p)) - if (!resPermCheck(res, p)) + public void FlagChange(final ResidenceFlagChangeEvent e) { + final ClaimedResidence res = e.getResidence(); + for (final Player p : res.getPlayersInResidence()) { + if (!permCheck(p)) { + if (!resPermCheck(res, p)) { ChangePlayerFly(p, false); - else + } else { ChangePlayerFly(p, true); + } + } + } } // ResidenceDeleteEvent.class // ResidenceFlagChangeEvent.class - public void onFallDamage(EntityDamageEvent e) { + public void onFallDamage(final EntityDamageEvent e) { if (e.getEntity() instanceof Player) { - Player p = (Player) e.getEntity(); - if (e.getCause() == DamageCause.FALL) + final Player p = (Player) e.getEntity(); + if (e.getCause() == DamageCause.FALL) { if (p == fall.get(p)) { fall.remove(p); e.setCancelled(true); } + } } } @EventHandler(ignoreCancelled = true) - public void resChange(ResidenceChangedEvent event) { - Player player = event.getPlayer(); - ClaimedResidence resto = event.getTo(); - if (!permCheck(player)) - if (!resPermCheck(resto, player)) + public void resChange(final ResidenceChangedEvent event) { + final Player player = event.getPlayer(); + final ClaimedResidence resto = event.getTo(); + if (!permCheck(player)) { + if (!resPermCheck(resto, player)) { ChangePlayerFly(player, false); - else + } else { ChangePlayerFly(player, true); + } + } } @EventHandler(ignoreCancelled = true) - public void ResDelete(ResidenceDeleteEvent e) { - ClaimedResidence res = e.getResidence(); - for (Player p : res.getPlayersInResidence()) - if (!permCheck(p)) + public void ResDelete(final ResidenceDeleteEvent e) { + final ClaimedResidence res = e.getResidence(); + for (final Player p : res.getPlayersInResidence()) { + if (!permCheck(p)) { ChangePlayerFly(p, false); + } + } } - void ChangePlayerFly(Player p, boolean fly) { + void ChangePlayerFly(final Player p, final boolean fly) { if (p.getAllowFlight() && !fly) { - if (p.isFlying()) + if (p.isFlying()) { fall.put(p, p); + } p.setAllowFlight(false); - p.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagDeny", "fly")); + p.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagDeny", "fly")); } if (!p.getAllowFlight() && fly) { - if (p == fall.get(p)) + if (p == fall.get(p)) { fall.remove(p); + } p.setAllowFlight(true); } } - boolean permCheck(Player p) { + boolean permCheck(final Player p) { return p.hasPermission("resfly.ignore") || p.isOp() || p.getGameMode() == GameMode.CREATIVE; } - boolean resPermCheck(ClaimedResidence res, Player p) { - if (res == null) + boolean resPermCheck(final ClaimedResidence res, final Player p) { + if (res == null) { return false; - ResidencePermissions perms = res.getPermissions(); + } + final ResidencePermissions perms = res.getPermissions(); return perms.playerHas(p.getName(), "fly", false); } } \ No newline at end of file diff --git a/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionGroup.java b/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionGroup.java index f635e69..796d9b0 100644 --- a/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionGroup.java +++ b/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionGroup.java @@ -27,53 +27,55 @@ import com.bekvon.bukkit.residence.protection.FlagPermissions.FlagState; * changed by inori 03/17/2012 line 91:limits MaxHeight changed to 255 */ public class PermissionGroup { + protected boolean buyIgnoreLimits; + protected boolean canBuy; + protected boolean cancreate; + protected boolean canSell; + protected double costperarea; + protected Map creatorDefaultFlags; + protected String defaultEnterMessage; + protected String defaultLeaveMessage; + protected FlagPermissions flagPerms; + protected Map> groupDefaultFlags; + protected String groupname; + protected boolean itemListAccess; + protected boolean kick; + protected int leaseGiveTime; + protected int maxHeight; + protected int maxLeaseTime; + protected int maxPhysical; + protected int maxRentables; + protected int maxRents; + protected boolean messageperms; + protected int minHeight; + protected double renewcostperarea; + protected Map residenceDefaultFlags; + protected int resmax; + protected boolean selectCommandAccess; + protected int subzonedepth; + protected boolean tpaccess; + protected boolean unstuck; protected int xmax; protected int ymax; protected int zmax; - protected int resmax; - protected double costperarea; - protected boolean tpaccess; - protected int subzonedepth; - protected FlagPermissions flagPerms; - protected Map creatorDefaultFlags; - protected Map> groupDefaultFlags; - protected Map residenceDefaultFlags; - protected boolean messageperms; - protected String defaultEnterMessage; - protected String defaultLeaveMessage; - protected int maxLeaseTime; - protected int leaseGiveTime; - protected double renewcostperarea; - protected boolean canBuy; - protected boolean canSell; - protected boolean buyIgnoreLimits; - protected boolean cancreate; - protected String groupname; - protected int maxPhysical; - protected boolean unstuck; - protected boolean kick; - protected int minHeight; - protected int maxHeight; - protected int maxRents; - protected int maxRentables; - protected boolean selectCommandAccess; - protected boolean itemListAccess; + Residence plugin; - public PermissionGroup(String name) { - flagPerms = new FlagPermissions(); + public PermissionGroup(final Residence plugin, final String name) { + this.plugin = plugin; + flagPerms = new FlagPermissions(plugin); creatorDefaultFlags = new HashMap(); residenceDefaultFlags = new HashMap(); groupDefaultFlags = new HashMap>(); groupname = name; } - public PermissionGroup(String name, ConfigurationSection node) { - this(name); + public PermissionGroup(final Residence plugin, final String name, final ConfigurationSection node) { + this(plugin, name); this.parseGroup(node); } - public PermissionGroup(String name, ConfigurationSection node, FlagPermissions parentFlagPerms) { - this(name, node); + public PermissionGroup(final Residence plugin, final String name, final ConfigurationSection node, final FlagPermissions parentFlagPerms) { + this(plugin, name, node); flagPerms.setParent(parentFlagPerms); } @@ -173,7 +175,7 @@ public class PermissionGroup { return minHeight; } - public boolean hasFlagAccess(String flag) { + public boolean hasFlagAccess(final String flag) { return flagPerms.has(flag, false); } @@ -189,9 +191,10 @@ public class PermissionGroup { return unstuck; } - public boolean inLimits(CuboidArea area) { - if (area.getXSize() > xmax || area.getYSize() > ymax || area.getZSize() > zmax) + public boolean inLimits(final CuboidArea area) { + if (area.getXSize() > xmax || area.getYSize() > ymax || area.getZSize() > zmax) { return false; + } return true; } @@ -199,11 +202,11 @@ public class PermissionGroup { return itemListAccess; } - public void printLimits(Player player) { + public void printLimits(final Player player) { player.sendMessage(ChatColor.GRAY + "---------------------------"); - player.sendMessage(ChatColor.YELLOW + "权限 组:" + ChatColor.DARK_AQUA + " " + Residence.getPermissionManager().getPermissionsGroup(player)); + player.sendMessage(ChatColor.YELLOW + "权限 组:" + ChatColor.DARK_AQUA + " " + plugin.getPermissionManager().getPermissionsGroup(player)); player.sendMessage(ChatColor.YELLOW + "领地 组:" + ChatColor.DARK_AQUA + " " + groupname); - player.sendMessage(ChatColor.YELLOW + "领地 管理:" + ChatColor.DARK_AQUA + " " + Residence.getPermissionManager().isResidenceAdmin(player)); + player.sendMessage(ChatColor.YELLOW + "领地 管理:" + ChatColor.DARK_AQUA + " " + plugin.getPermissionManager().isResidenceAdmin(player)); player.sendMessage(ChatColor.YELLOW + "允许创建领地:" + ChatColor.DARK_AQUA + " " + cancreate); player.sendMessage(ChatColor.YELLOW + "最大领地个数:" + ChatColor.DARK_AQUA + " " + resmax); player.sendMessage(ChatColor.YELLOW + "X轴最大长度:" + ChatColor.DARK_AQUA + " " + xmax); @@ -212,11 +215,12 @@ public class PermissionGroup { player.sendMessage(ChatColor.YELLOW + "高度限制:" + ChatColor.DARK_AQUA + " " + minHeight + " - " + maxHeight); player.sendMessage(ChatColor.YELLOW + "最大子领地深度:" + ChatColor.DARK_AQUA + " " + subzonedepth); player.sendMessage(ChatColor.YELLOW + "是否允许设置进出消息:" + ChatColor.DARK_AQUA + " " + messageperms); - player.sendMessage(ChatColor.YELLOW + "你所拥有的领地:" + ChatColor.DARK_AQUA + " " + Residence.getResidenceManager().getOwnedZoneCount(player.getName())); - if (Residence.getEconomyManager() != null) + player.sendMessage(ChatColor.YELLOW + "你所拥有的领地:" + ChatColor.DARK_AQUA + " " + plugin.getResidenceManager().getOwnedZoneCount(player.getName())); + if (plugin.getEconomyManager() != null) { player.sendMessage(ChatColor.YELLOW + "每个方块需要金钱:" + ChatColor.DARK_AQUA + " " + costperarea); + } player.sendMessage(ChatColor.YELLOW + "Flag 权限:" + ChatColor.DARK_AQUA + " " + flagPerms.listFlags()); - if (Residence.getConfigManager().useLeases()) { + if (plugin.getConfigManager().useLeases()) { player.sendMessage(ChatColor.YELLOW + "最大租赁日:" + ChatColor.DARK_AQUA + " " + maxLeaseTime); player.sendMessage(ChatColor.YELLOW + "续租日期:" + ChatColor.DARK_AQUA + " " + leaseGiveTime); player.sendMessage(ChatColor.YELLOW + "续租方块需要金钱:" + ChatColor.DARK_AQUA + " " + renewcostperarea); @@ -228,19 +232,20 @@ public class PermissionGroup { return selectCommandAccess; } - private void parseGroup(ConfigurationSection limits) { - if (limits == null) + private void parseGroup(final ConfigurationSection limits) { + if (limits == null) { return; - cancreate = limits.getBoolean("Residence.CanCreate", false); - resmax = limits.getInt("Residence.MaxResidences", 0); - maxPhysical = limits.getInt("Residence.MaxAreasPerResidence", 2); - xmax = limits.getInt("Residence.MaxEastWest", 0); - ymax = limits.getInt("Residence.MaxUpDown", 0); - zmax = limits.getInt("Residence.MaxNorthSouth", 0); - minHeight = limits.getInt("Residence.MinHeight", 0); - maxHeight = limits.getInt("Residence.MaxHeight", 255); - tpaccess = limits.getBoolean("Residence.CanTeleport", false); - subzonedepth = limits.getInt("Residence.SubzoneDepth", 0); + } + cancreate = limits.getBoolean("plugin.CanCreate", false); + resmax = limits.getInt("plugin.MaxResidences", 0); + maxPhysical = limits.getInt("plugin.MaxAreasPerResidence", 2); + xmax = limits.getInt("plugin.MaxEastWest", 0); + ymax = limits.getInt("plugin.MaxUpDown", 0); + zmax = limits.getInt("plugin.MaxNorthSouth", 0); + minHeight = limits.getInt("plugin.MinHeight", 0); + maxHeight = limits.getInt("plugin.MaxHeight", 255); + tpaccess = limits.getBoolean("plugin.CanTeleport", false); + subzonedepth = limits.getInt("plugin.SubzoneDepth", 0); messageperms = limits.getBoolean("Messaging.CanChange", false); defaultEnterMessage = limits.getString("Messaging.DefaultEnter", null); defaultLeaveMessage = limits.getString("Messaging.DefaultLeave", null); @@ -253,59 +258,63 @@ public class PermissionGroup { canSell = limits.getBoolean("Economy.CanSell", false); buyIgnoreLimits = limits.getBoolean("Economy.IgnoreLimits", false); costperarea = limits.getDouble("Economy.BuyCost", 0); - unstuck = limits.getBoolean("Residence.Unstuck", false); - kick = limits.getBoolean("Residence.Kick", false); - selectCommandAccess = limits.getBoolean("Residence.SelectCommandAccess", true); - itemListAccess = limits.getBoolean("Residence.ItemListAccess", true); + unstuck = limits.getBoolean("plugin.Unstuck", false); + kick = limits.getBoolean("plugin.Kick", false); + selectCommandAccess = limits.getBoolean("plugin.SelectCommandAccess", true); + itemListAccess = limits.getBoolean("plugin.ItemListAccess", true); ConfigurationSection node = limits.getConfigurationSection("Flags.Permission"); Set flags = null; - if (node != null) + if (node != null) { flags = node.getKeys(false); + } if (flags != null) { - Iterator flagit = flags.iterator(); + final Iterator flagit = flags.iterator(); while (flagit.hasNext()) { - String flagname = flagit.next(); - boolean access = limits.getBoolean("Flags.Permission." + flagname, false); + final String flagname = flagit.next(); + final boolean access = limits.getBoolean("Flags.Permission." + flagname, false); flagPerms.setFlag(flagname, access ? FlagState.TRUE : FlagState.FALSE); } } node = limits.getConfigurationSection("Flags.CreatorDefault"); - if (node != null) + if (node != null) { flags = node.getKeys(false); + } if (flags != null) { - Iterator flagit = flags.iterator(); + final Iterator flagit = flags.iterator(); while (flagit.hasNext()) { - String flagname = flagit.next(); - boolean access = limits.getBoolean("Flags.CreatorDefault." + flagname, false); + final String flagname = flagit.next(); + final boolean access = limits.getBoolean("Flags.CreatorDefault." + flagname, false); creatorDefaultFlags.put(flagname, access); } } node = limits.getConfigurationSection("Flags.Default"); - if (node != null) + if (node != null) { flags = node.getKeys(false); + } if (flags != null) { - Iterator flagit = flags.iterator(); + final Iterator flagit = flags.iterator(); while (flagit.hasNext()) { - String flagname = flagit.next(); - boolean access = limits.getBoolean("Flags.Default." + flagname, false); + final String flagname = flagit.next(); + final boolean access = limits.getBoolean("Flags.Default." + flagname, false); residenceDefaultFlags.put(flagname, access); } } node = limits.getConfigurationSection("Flags.GroupDefault"); Set groupDef = null; - if (node != null) + if (node != null) { groupDef = node.getKeys(false); + } if (groupDef != null) { - Iterator groupit = groupDef.iterator(); + final Iterator groupit = groupDef.iterator(); while (groupit.hasNext()) { - String name = groupit.next(); - Map gflags = new HashMap(); + final String name = groupit.next(); + final Map gflags = new HashMap(); flags = limits.getConfigurationSection("Flags.GroupDefault." + name).getKeys(false); - Iterator flagit = flags.iterator(); + final Iterator flagit = flags.iterator(); while (flagit.hasNext()) { - String flagname = flagit.next(); - boolean access = limits.getBoolean("Flags.GroupDefault." + name + "." + flagname, false); + final String flagname = flagit.next(); + final boolean access = limits.getBoolean("Flags.GroupDefault." + name + "." + flagname, false); gflags.put(flagname, access); } groupDefaultFlags.put(name, gflags); diff --git a/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionManager.java b/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionManager.java index 121661c..68ba79a 100644 --- a/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/permissions/PermissionManager.java @@ -26,85 +26,75 @@ import com.bekvon.bukkit.residence.vaultinterface.ResidenceVaultAdapter; */ public class PermissionManager { protected static PermissionsInterface perms; + protected FlagPermissions globalFlagPerms; protected Map groups; protected Map playersGroup; - protected FlagPermissions globalFlagPerms; + Residence plugin; - public PermissionManager(FileConfiguration config) { + public PermissionManager(final Residence plugin) { try { + this.plugin = plugin; groups = Collections.synchronizedMap(new HashMap()); playersGroup = Collections.synchronizedMap(new HashMap()); - globalFlagPerms = new FlagPermissions(); - this.readConfig(config); - boolean enable = config.getBoolean("Global.EnablePermissions", true); + globalFlagPerms = new FlagPermissions(plugin); + this.readConfig(plugin.getConfig()); + final boolean enable = plugin.getConfig().getBoolean("Global.EnablePermissions", true); if (enable) { this.checkPermissions(); } - } catch (Exception ex) { - Residence.getLog().warning("权限管理载入失败,请报告以下错误给作者,谢谢!"); - Residence.getLog().warning("错误: " + ex); + } catch (final Exception ex) { + plugin.getLog().warning("权限管理载入失败,请报告以下错误给作者,谢谢!"); + plugin.getLog().warning("错误: " + ex); } } - private void checkPermissions() { - Server server = Residence.getServ(); - Plugin p = server.getPluginManager().getPlugin("Vault"); - if (p != null) { - ResidenceVaultAdapter vault = new ResidenceVaultAdapter(server); - if (vault.permissionsOK()) { - perms = vault; - Residence.getLog().info("发现 Vault 使用权限系统:" + vault.getPermissionsName()); - return; - } else { - Residence.getLog().info("发现 Vault, 但是 Vault 未找到权限系统..."); - } - } - Residence.getLog().warning("权限系统未找到!"); - } - - public PermissionGroup getGroup(Player player) { + public PermissionGroup getGroup(final Player player) { return groups.get(this.getGroupNameByPlayer(player)); } - public PermissionGroup getGroup(String player, String world) { + public PermissionGroup getGroup(final String player, final String world) { return groups.get(this.getGroupNameByPlayer(player, world)); } public PermissionGroup getGroupByName(String group) { group = group.toLowerCase(); - if (!groups.containsKey(group)) - return groups.get(Residence.getConfigManager().getDefaultGroup()); + if (!groups.containsKey(group)) { + return groups.get(plugin.getConfigManager().getDefaultGroup()); + } return groups.get(group); } - public String getGroupNameByPlayer(Player player) { + public String getGroupNameByPlayer(final Player player) { return this.getGroupNameByPlayer(player.getName(), player.getWorld().getName()); } - public String getGroupNameByPlayer(String player, String world) { + public String getGroupNameByPlayer(String player, final String world) { player = player.toLowerCase(); if (playersGroup.containsKey(player)) { String group = playersGroup.get(player); if (group != null) { group = group.toLowerCase(); - if (group != null && groups.containsKey(group)) + if (group != null && groups.containsKey(group)) { return group; + } } } - String group = this.getPermissionsGroup(player, world); - if (group == null || !groups.containsKey(group)) - return Residence.getConfigManager().getDefaultGroup().toLowerCase(); - else + final String group = this.getPermissionsGroup(player, world); + if (group == null || !groups.containsKey(group)) { + return plugin.getConfigManager().getDefaultGroup().toLowerCase(); + } else { return group; + } } - public String getPermissionsGroup(Player player) { + public String getPermissionsGroup(final Player player) { return this.getPermissionsGroup(player.getName(), player.getWorld().getName()); } - public String getPermissionsGroup(String player, String world) { - if (perms == null) - return Residence.getConfigManager().getDefaultGroup(); + public String getPermissionsGroup(final String player, final String world) { + if (perms == null) { + return plugin.getConfigManager().getDefaultGroup(); + } return perms.getPlayerGroup(player, world); } @@ -117,43 +107,51 @@ public class PermissionManager { return groups.containsKey(group); } - public boolean isResidenceAdmin(Player player) { - return (player.hasPermission("residence.admin") || (player.isOp() && Residence - .getConfigManager().getOpsAreAdmins())); + public boolean isResidenceAdmin(final Player player) { + return (player.hasPermission("residence.admin") || (player.isOp() && plugin.getConfigManager().getOpsAreAdmins())); } - private void readConfig(FileConfiguration config) { - String defaultGroup = Residence.getConfigManager().getDefaultGroup(); - globalFlagPerms = FlagPermissions.parseFromConfigNode("FlagPermission", - config.getConfigurationSection("Global")); - ConfigurationSection nodes = config.getConfigurationSection("Groups"); + private void checkPermissions() { + final Server server = plugin.getServ(); + final Plugin p = server.getPluginManager().getPlugin("Vault"); + if (p != null) { + final ResidenceVaultAdapter vault = new ResidenceVaultAdapter(server); + if (vault.permissionsOK()) { + perms = vault; + plugin.getLog().info("发现 Vault 使用权限系统:" + vault.getPermissionsName()); + return; + } else { + plugin.getLog().info("发现 Vault, 但是 Vault 未找到权限系统..."); + } + } + plugin.getLog().warning("权限系统未找到!"); + } + + private void readConfig(final FileConfiguration config) { + final String defaultGroup = plugin.getConfigManager().getDefaultGroup(); + globalFlagPerms = FlagPermissions.parseFromConfigNode("FlagPermission", config.getConfigurationSection("Global")); + final ConfigurationSection nodes = config.getConfigurationSection("Groups"); if (nodes != null) { - Set entrys = nodes.getKeys(false); - for (String key : entrys) { + final Set entrys = nodes.getKeys(false); + for (final String key : entrys) { try { - groups.put( - key.toLowerCase(), - new PermissionGroup(key.toLowerCase(), nodes - .getConfigurationSection(key), globalFlagPerms)); - List mirrors = nodes.getConfigurationSection(key).getStringList( - "Mirror"); - for (String group : mirrors) { - groups.put(group.toLowerCase(), new PermissionGroup(key.toLowerCase(), - nodes.getConfigurationSection(key), globalFlagPerms)); + groups.put(key.toLowerCase(), new PermissionGroup(plugin, key.toLowerCase(), nodes.getConfigurationSection(key), globalFlagPerms)); + final List mirrors = nodes.getConfigurationSection(key).getStringList("Mirror"); + for (final String group : mirrors) { + groups.put(group.toLowerCase(), new PermissionGroup(plugin, key.toLowerCase(), nodes.getConfigurationSection(key), globalFlagPerms)); } - } catch (Exception ex) { - Residence.getLog().info("错误 从配置文件读取:" + key + " 抛出异常:" + ex); + } catch (final Exception ex) { + plugin.getLog().info("错误 从配置文件读取:" + key + " 抛出异常:" + ex); } } } if (!groups.containsKey(defaultGroup)) { - groups.put(defaultGroup, new PermissionGroup(defaultGroup)); + groups.put(defaultGroup, new PermissionGroup(plugin, defaultGroup)); } - Set keys = config.getConfigurationSection("GroupAssignments").getKeys(false); + final Set keys = config.getConfigurationSection("GroupAssignments").getKeys(false); if (keys != null) { - for (String key : keys) { - playersGroup.put(key.toLowerCase(), - config.getString("GroupAssignments." + key, defaultGroup).toLowerCase()); + for (final String key : keys) { + playersGroup.put(key.toLowerCase(), config.getString("GroupAssignments." + key, defaultGroup).toLowerCase()); } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java b/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java index f5eb4ac..74dd9cc 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/ClaimedResidence.java @@ -32,288 +32,324 @@ import com.bekvon.bukkit.residence.text.help.InformationPager; */ public class ClaimedResidence { - protected ClaimedResidence parent; - protected Map areas; - protected Map subzones; - protected ResidencePermissions perms; + protected ResidenceBank bank; - protected Location tpLoc; - protected String enterMessage; - protected String leaveMessage; - protected ResidenceItemList ignorelist; protected ResidenceItemList blacklist; + protected String enterMessage; + protected ResidenceItemList ignorelist; + protected String leaveMessage; + protected ClaimedResidence parent; + protected ResidencePermissions perms; + protected Residence plugin; + protected Map subzones; + protected Location tpLoc; - public ClaimedResidence(String creationWorld) { - this("Server Land", creationWorld); + public ClaimedResidence(final Residence plugin, final String creationWorld) { + this(plugin, "Server Land", creationWorld); } - public ClaimedResidence(String creator, String creationWorld) { - this(); - perms = new ResidencePermissions(this, creator, creationWorld); + public ClaimedResidence(final Residence plugin, final String creator, final String creationWorld) { + this(plugin); + perms = new ResidencePermissions(plugin, this, creator, creationWorld); } - public ClaimedResidence(String creator, String creationWorld, ClaimedResidence parentResidence) { - this(creator, creationWorld); + public ClaimedResidence(final Residence plugin, final String creator, final String creationWorld, final ClaimedResidence parentResidence) { + this(plugin, creator, creationWorld); parent = parentResidence; } - private ClaimedResidence() { + private ClaimedResidence(final Residence plugin) { + this.plugin = plugin; subzones = new HashMap(); areas = new HashMap(); - bank = new ResidenceBank(this); - blacklist = new ResidenceItemList(this, ListType.BLACKLIST); - ignorelist = new ResidenceItemList(this, ListType.IGNORELIST); + bank = new ResidenceBank(plugin, this); + blacklist = new ResidenceItemList(plugin, this, ListType.BLACKLIST); + ignorelist = new ResidenceItemList(plugin, this, ListType.IGNORELIST); } @SuppressWarnings({ "unchecked", "rawtypes" }) - public static ClaimedResidence load(Map root, ClaimedResidence parent) throws Exception { - ClaimedResidence res = new ClaimedResidence(); - if (root == null) + public static ClaimedResidence load(final Residence plugin, final Map root, final ClaimedResidence parent) throws Exception { + final ClaimedResidence res = new ClaimedResidence(plugin); + if (root == null) { throw new Exception("Null residence!"); + } res.enterMessage = (String) root.get("EnterMessage"); res.leaveMessage = (String) root.get("LeaveMessage"); - if (root.containsKey("StoredMoney")) + if (root.containsKey("StoredMoney")) { res.bank.setStoredMoney((Integer) root.get("StoredMoney")); - if (root.containsKey("BlackList")) - res.blacklist = ResidenceItemList.load(res, (Map) root.get("BlackList")); - if (root.containsKey("IgnoreList")) - res.ignorelist = ResidenceItemList.load(res, (Map) root.get("IgnoreList")); - Map areamap = (Map) root.get("Areas"); - res.perms = ResidencePermissions.load(res, (Map) root.get("Permissions")); - World world = Residence.getServ().getWorld(res.perms.getWorld()); - if (world == null) + } + if (root.containsKey("BlackList")) { + res.blacklist = ResidenceItemList.load(plugin, res, (Map) root.get("BlackList")); + } + if (root.containsKey("IgnoreList")) { + res.ignorelist = ResidenceItemList.load(plugin, res, (Map) root.get("IgnoreList")); + } + final Map areamap = (Map) root.get("Areas"); + res.perms = ResidencePermissions.load(plugin, res, (Map) root.get("Permissions")); + final World world = Bukkit.getServer().getWorld(res.perms.getWorld()); + if (world == null) { throw new Exception("Cant Find World: " + res.perms.getWorld()); - for (Entry map : areamap.entrySet()) + } + for (final Entry map : areamap.entrySet()) { res.areas.put(map.getKey(), CuboidArea.load((Map) map.getValue(), world)); - Map subzonemap = (Map) root.get("Subzones"); - for (Entry map : subzonemap.entrySet()) { - ClaimedResidence subres = ClaimedResidence.load((Map) map.getValue(), res); - if (Residence.getConfigManager().flagsInherit()) + } + final Map subzonemap = (Map) root.get("Subzones"); + for (final Entry map : subzonemap.entrySet()) { + final ClaimedResidence subres = ClaimedResidence.load(plugin, (Map) map.getValue(), res); + if (plugin.getConfigManager().flagsInherit()) { subres.getPermissions().setParent(res.getPermissions()); + } res.subzones.put(map.getKey(), subres); } res.parent = parent; - Map tploc = (Map) root.get("TPLoc"); - if (tploc != null) + final Map tploc = (Map) root.get("TPLoc"); + if (tploc != null) { res.tpLoc = new Location(world, (Integer) tploc.get("X"), (Integer) tploc.get("Y"), (Integer) tploc.get("Z")); + } return res; } - public boolean addArea(CuboidArea area, String name) { + public boolean addArea(final CuboidArea area, final String name) { return addArea(null, area, name, true); } - public boolean addArea(Player player, CuboidArea area, String name, boolean resadmin) { - if (!Residence.validName(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters")); + public boolean addArea(final Player player, final CuboidArea area, final String name, final boolean resadmin) { + if (!plugin.validName(name)) { + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidNameCharacters")); + } return false; } if (areas.containsKey(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaExists")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaExists")); + } return false; } - if (!resadmin && Residence.getConfigManager().getEnforceAreaInsideArea() && this.getParent() == null) { + if (!resadmin && plugin.getConfigManager().getEnforceAreaInsideArea() && this.getParent() == null) { boolean inside = false; - for (CuboidArea are : areas.values()) - if (are.isAreaWithinArea(area)) + for (final CuboidArea are : areas.values()) { + if (are.isAreaWithinArea(area)) { inside = true; - if (!inside) + } + } + if (!inside) { return false; + } } if (!area.getWorld().getName().equalsIgnoreCase(perms.getWorld())) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaDiffWorld")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaDiffWorld")); + } return false; } if (parent == null) { - String collideResidence = Residence.getResidenceManager().checkAreaCollision(area, this); + final String collideResidence = plugin.getResidenceManager().checkAreaCollision(area, this); if (collideResidence != null) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaCollision", ChatColor.YELLOW + collideResidence)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaCollision", ChatColor.YELLOW + collideResidence)); + } return false; } } else { - String[] szs = parent.listSubzones(); - for (String sz : szs) { - ClaimedResidence res = parent.getSubzone(sz); - if (res != null && res != this) + final String[] szs = parent.listSubzones(); + for (final String sz : szs) { + final ClaimedResidence res = parent.getSubzone(sz); + if (res != null && res != this) { if (res.checkCollision(area)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSubzoneCollision", ChatColor.YELLOW + sz)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaSubzoneCollision", ChatColor.YELLOW + sz)); + } return false; } + } } } if (!resadmin && player != null) { if (!this.perms.hasResidencePermission(player, true)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } if (parent != null) { if (!parent.containsLoc(area.getHighLoc()) || !parent.containsLoc(area.getLowLoc())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNotWithinParent")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNotWithinParent")); return false; } if (!parent.getPermissions().hasResidencePermission(player, true) && !parent.getPermissions().playerHas(player.getName(), "subzone", true)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ParentNoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ParentNoPermission")); return false; } } - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); if (!group.canCreateResidences() && !player.hasPermission("residence.create")) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } if (areas.size() >= group.getMaxPhysicalPerResidence()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaMaxPhysical")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaMaxPhysical")); return false; } if (!group.inLimits(area)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSizeLimit")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaSizeLimit")); return false; } if (group.getMinHeight() > area.getLowLoc().getBlockY()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaLowLimit", ChatColor.YELLOW + String.format("%d", group.getMinHeight()))); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaLowLimit", ChatColor.YELLOW + String.format("%d", group.getMinHeight()))); return false; } if (group.getMaxHeight() < area.getHighLoc().getBlockY()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaHighLimit", ChatColor.YELLOW + String.format("%d", group.getMaxHeight()))); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaHighLimit", ChatColor.YELLOW + String.format("%d", group.getMaxHeight()))); return false; } - if (parent == null && Residence.getConfigManager().enableEconomy()) { - int chargeamount = (int) Math.ceil(area.getSize() * group.getCostPerBlock()); - if (!TransactionManager.chargeEconomyMoney(player, chargeamount)) + if (parent == null && plugin.getConfigManager().enableEconomy()) { + final int chargeamount = (int) Math.ceil(area.getSize() * group.getCostPerBlock()); + if (!TransactionManager.chargeEconomyMoney(plugin, player, chargeamount)) { return false; + } } } - Residence.getResidenceManager().removeChunkList(getName()); + plugin.getResidenceManager().removeChunkList(getName()); areas.put(name, area); - Residence.getResidenceManager().calculateChunks(getName()); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaCreate", ChatColor.YELLOW + name)); + plugin.getResidenceManager().calculateChunks(getName()); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("AreaCreate", ChatColor.YELLOW + name)); + } return true; } - public boolean addSubzone(Player player, Location loc1, Location loc2, String name, boolean resadmin) { - if (player == null) + public boolean addSubzone(final Player player, final Location loc1, final Location loc2, final String name, final boolean resadmin) { + if (player == null) { return this.addSubzone(null, "Server Land", loc1, loc2, name, resadmin); - else + } else { return this.addSubzone(player, player.getName(), loc1, loc2, name, resadmin); + } } - public boolean addSubzone(Player player, String owner, Location loc1, Location loc2, String name, boolean resadmin) { - if (!Residence.validName(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters")); + public boolean addSubzone(final Player player, final String owner, final Location loc1, final Location loc2, final String name, final boolean resadmin) { + if (!plugin.validName(name)) { + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidNameCharacters")); + } return false; } if (!(this.containsLoc(loc1) && this.containsLoc(loc2))) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneSelectInside")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneSelectInside")); + } return false; } if (subzones.containsKey(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneExists", ChatColor.YELLOW + name)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneExists", ChatColor.YELLOW + name)); + } return false; } if (!resadmin && player != null) { - if (!this.perms.hasResidencePermission(player, true)) + if (!this.perms.hasResidencePermission(player, true)) { if (!this.perms.playerHas(player.getName(), "subzone", this.perms.playerHas(player.getName(), "admin", false))) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + } + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); if (this.getZoneDepth() >= group.getMaxSubzoneDepth()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneMaxDepth")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneMaxDepth")); return false; } } - CuboidArea newArea = new CuboidArea(loc1, loc2); - Set> set = subzones.entrySet(); - for (Entry resEntry : set) { - ClaimedResidence res = resEntry.getValue(); + final CuboidArea newArea = new CuboidArea(loc1, loc2); + final Set> set = subzones.entrySet(); + for (final Entry resEntry : set) { + final ClaimedResidence res = resEntry.getValue(); if (res.checkCollision(newArea)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneCollide", ChatColor.YELLOW + resEntry.getKey())); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneCollide", ChatColor.YELLOW + resEntry.getKey())); + } return false; } } ClaimedResidence newres; if (player != null) { - newres = new ClaimedResidence(owner, perms.getWorld(), this); + newres = new ClaimedResidence(plugin, owner, perms.getWorld(), this); newres.addArea(player, newArea, name, resadmin); } else { - newres = new ClaimedResidence(owner, perms.getWorld(), this); + newres = new ClaimedResidence(plugin, owner, perms.getWorld(), this); newres.addArea(newArea, name); } if (newres.getAreaCount() != 0) { newres.getPermissions().applyDefaultFlags(); if (player != null) { - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); newres.setEnterMessage(group.getDefaultEnterMessage()); newres.setLeaveMessage(group.getDefaultLeaveMessage()); } - if (Residence.getConfigManager().flagsInherit()) + if (plugin.getConfigManager().flagsInherit()) { newres.getPermissions().setParent(perms); + } subzones.put(name, newres); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SubzoneCreate", ChatColor.YELLOW + name)); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SubzoneCreate", ChatColor.YELLOW + name)); + } return true; } else { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneCreateFail", ChatColor.YELLOW + name)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneCreateFail", ChatColor.YELLOW + name)); + } return false; } } - public boolean addSubzone(String name, Location loc1, Location loc2) { + public boolean addSubzone(final String name, final Location loc1, final Location loc2) { return this.addSubzone(null, loc1, loc2, name, true); } - public boolean checkCollision(CuboidArea area) { - Set set = areas.keySet(); - for (String key : set) { - CuboidArea checkarea = areas.get(key); - if (checkarea != null) - if (checkarea.checkCollision(area)) + public boolean checkCollision(final CuboidArea area) { + final Set set = areas.keySet(); + for (final String key : set) { + final CuboidArea checkarea = areas.get(key); + if (checkarea != null) { + if (checkarea.checkCollision(area)) { return true; + } + } } return false; } - public boolean containsLoc(Location loc) { - Collection keys = areas.values(); - for (CuboidArea key : keys) + public boolean containsLoc(final Location loc) { + final Collection keys = areas.values(); + for (final CuboidArea key : keys) { if (key.containsLoc(loc)) { - if (parent != null) + if (parent != null) { return parent.containsLoc(loc); + } return true; } + } return false; } - public CuboidArea getArea(String name) { + public CuboidArea getArea(final String name) { return areas.get(name); } public CuboidArea[] getAreaArray() { - CuboidArea[] temp = new CuboidArea[areas.size()]; + final CuboidArea[] temp = new CuboidArea[areas.size()]; int i = 0; - for (CuboidArea area : areas.values()) { + for (final CuboidArea area : areas.values()) { temp[i] = area; i++; } return temp; } - public CuboidArea getAreaByLoc(Location loc) { - for (CuboidArea thisarea : areas.values()) - if (thisarea.containsLoc(loc)) + public CuboidArea getAreaByLoc(final Location loc) { + for (final CuboidArea thisarea : areas.values()) { + if (thisarea.containsLoc(loc)) { return thisarea; + } + } return null; } @@ -321,17 +357,19 @@ public class ClaimedResidence { return areas.size(); } - public String getAreaIDbyLoc(Location loc) { - for (Entry area : areas.entrySet()) - if (area.getValue().containsLoc(loc)) + public String getAreaIDbyLoc(final Location loc) { + for (final Entry area : areas.entrySet()) { + if (area.getValue().containsLoc(loc)) { return area.getKey(); + } + } return null; } public String[] getAreaList() { - String arealist[] = new String[areas.size()]; + final String arealist[] = new String[areas.size()]; int i = 0; - for (Entry entry : areas.entrySet()) { + for (final Entry entry : areas.entrySet()) { arealist[i] = entry.getKey(); i++; } @@ -359,17 +397,18 @@ public class ClaimedResidence { } public String getName() { - return Residence.getResidenceManager().getNameByRes(this); + return plugin.getResidenceManager().getNameByRes(this); } @SuppressWarnings("deprecation") - public Location getOutsideFreeLoc(Location insideLoc) { - int maxIt = 100; - CuboidArea area = this.getAreaByLoc(insideLoc); - if (area == null) + public Location getOutsideFreeLoc(final Location insideLoc) { + final int maxIt = 100; + final CuboidArea area = this.getAreaByLoc(insideLoc); + if (area == null) { return insideLoc; - Location highLoc = area.getHighLoc(); - Location newLoc = new Location(highLoc.getWorld(), highLoc.getBlockX(), highLoc.getBlockY(), highLoc.getBlockZ()); + } + final Location highLoc = area.getHighLoc(); + final Location newLoc = new Location(highLoc.getWorld(), highLoc.getBlockX(), highLoc.getBlockY(), highLoc.getBlockZ()); boolean found = false; int it = 0; while (!found && it < maxIt) { @@ -383,15 +422,17 @@ public class ClaimedResidence { newLoc.setY(newLoc.getY() - 1); lowLoc.setY(lowLoc.getY() - 1); } - if (newLoc.getBlock().getTypeId() == 0 && lowLoc.getBlock().getTypeId() != 0) + if (newLoc.getBlock().getTypeId() == 0 && lowLoc.getBlock().getTypeId() != 0) { found = true; + } } - if (found) + if (found) { return newLoc; - else { - World world = Residence.getServ().getWorld(perms.getWorld()); - if (world != null) + } else { + final World world = Bukkit.getServer().getWorld(perms.getWorld()); + if (world != null) { return world.getSpawnLocation(); + } return insideLoc; } } @@ -409,100 +450,116 @@ public class ClaimedResidence { } public ArrayList getPlayersInResidence() { - ArrayList within = new ArrayList(); - for (Player player : Bukkit.getServer().getOnlinePlayers()) - if (this.containsLoc(player.getLocation())) + final ArrayList within = new ArrayList(); + for (final Player player : Bukkit.getServer().getOnlinePlayers()) { + if (this.containsLoc(player.getLocation())) { within.add(player); + } + } return within; } - public ClaimedResidence getSubzone(String subzonename) { - if (!subzonename.contains(".")) + public ClaimedResidence getSubzone(final String subzonename) { + if (!subzonename.contains(".")) { return subzones.get(subzonename); - String split[] = subzonename.split("\\."); + } + final String split[] = subzonename.split("\\."); ClaimedResidence get = subzones.get(split[0]); for (int i = 1; i < split.length; i++) { - if (get == null) + if (get == null) { return null; + } get = get.getSubzone(split[i]); } return get; } - public ClaimedResidence getSubzoneByLoc(Location loc) { - Set> set = subzones.entrySet(); + public ClaimedResidence getSubzoneByLoc(final Location loc) { + final Set> set = subzones.entrySet(); boolean found = false; ClaimedResidence res = null; - for (Entry entry : set) { + for (final Entry entry : set) { res = entry.getValue(); if (res.containsLoc(loc)) { found = true; break; } } - if (!found) + if (!found) { return null; - if (res == null) + } + if (res == null) { return null; - ClaimedResidence subrez = res.getSubzoneByLoc(loc); - if (subrez == null) + } + final ClaimedResidence subrez = res.getSubzoneByLoc(loc); + if (subrez == null) { return res; + } return subrez; } public String[] getSubzoneList() { - ArrayList zones = new ArrayList(); - Set set = subzones.keySet(); - for (String key : set) - if (key != null) + final ArrayList zones = new ArrayList(); + final Set set = subzones.keySet(); + for (final String key : set) { + if (key != null) { zones.add(key); + } + } return zones.toArray(new String[zones.size()]); } - public String getSubzoneNameByLoc(Location loc) { - Set> set = subzones.entrySet(); + public String getSubzoneNameByLoc(final Location loc) { + final Set> set = subzones.entrySet(); ClaimedResidence res = null; String key = null; - for (Entry entry : set) { + for (final Entry entry : set) { res = entry.getValue(); if (res.containsLoc(loc)) { key = entry.getKey(); break; } } - if (key == null) + if (key == null) { return null; - if (res == null) + } + if (res == null) { return null; - String subname = res.getSubzoneNameByLoc(loc); - if (subname != null) + } + final String subname = res.getSubzoneNameByLoc(loc); + if (subname != null) { return key + "." + subname; + } return key; } - public String getSubzoneNameByRes(ClaimedResidence res) { - Set> set = subzones.entrySet(); - for (Entry entry : set) { - if (entry.getValue() == res) + public String getSubzoneNameByRes(final ClaimedResidence res) { + final Set> set = subzones.entrySet(); + for (final Entry entry : set) { + if (entry.getValue() == res) { return entry.getKey(); - String n = entry.getValue().getSubzoneNameByRes(res); - if (n != null) + } + final String n = entry.getValue().getSubzoneNameByRes(res); + if (n != null) { return entry.getKey() + "." + n; + } } return null; } public ClaimedResidence getTopParent() { - if (parent == null) + if (parent == null) { return this; + } return parent.getTopParent(); } public long getTotalSize() { - Collection set = areas.values(); + final Collection set = areas.values(); long size = 0; - for (CuboidArea entry : set) + for (final CuboidArea entry : set) { size = size + entry.getSize(); + } return size; } @@ -521,272 +578,296 @@ public class ClaimedResidence { } public String[] listSubzones() { - String list[] = new String[subzones.size()]; + final String list[] = new String[subzones.size()]; int i = 0; - for (String res : subzones.keySet()) { + for (final String res : subzones.keySet()) { list[i] = res; i++; } return list; } - public void printAdvancedAreaList(Player player, int page) { - ArrayList temp = new ArrayList(); - for (Entry entry : areas.entrySet()) { - CuboidArea a = entry.getValue(); - Location h = a.getHighLoc(); - Location l = a.getLowLoc(); + public void printAdvancedAreaList(final Player player, final int page) { + final ArrayList temp = new ArrayList(); + for (final Entry entry : areas.entrySet()) { + final CuboidArea a = entry.getValue(); + final Location h = a.getHighLoc(); + final Location l = a.getLowLoc(); temp.add(ChatColor.GREEN + "{" + ChatColor.YELLOW + "ID:" + ChatColor.RED + entry.getKey() + " " + ChatColor.YELLOW + "P1:" + ChatColor.RED + "(" + h.getBlockX() + "," + h.getBlockY() + "," + h.getBlockZ() + ") " + ChatColor.YELLOW + "P2:" + ChatColor.RED + "(" + l.getBlockX() + "," + l.getBlockY() + "," + l.getBlockZ() + ") " + ChatColor.YELLOW + "(Size:" + ChatColor.RED + a.getSize() + ChatColor.YELLOW + ")" + ChatColor.GREEN + "} "); } - InformationPager.printInfo(player, Residence.getLanguage().getPhrase("PhysicalAreas"), temp, page); + InformationPager.printInfo(plugin, player, plugin.getLanguage().getPhrase("PhysicalAreas"), temp, page); } - public void printAreaList(Player player, int page) { - ArrayList temp = new ArrayList(); - for (String area : areas.keySet()) + public void printAreaList(final Player player, final int page) { + final ArrayList temp = new ArrayList(); + for (final String area : areas.keySet()) { temp.add(area); - InformationPager.printInfo(player, Residence.getLanguage().getPhrase("PhysicalAreas"), temp, page); + } + InformationPager.printInfo(plugin, player, plugin.getLanguage().getPhrase("PhysicalAreas"), temp, page); } - public void printSubzoneList(Player player, int page) { - ArrayList temp = new ArrayList(); - for (Entry sz : subzones.entrySet()) - temp.add(ChatColor.GREEN + sz.getKey() + ChatColor.YELLOW + " - " + Residence.getLanguage().getPhrase("Owner") + ": " + sz.getValue().getOwner()); - InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Subzones"), temp, page); + public void printSubzoneList(final Player player, final int page) { + final ArrayList temp = new ArrayList(); + for (final Entry sz : subzones.entrySet()) { + temp.add(ChatColor.GREEN + sz.getKey() + ChatColor.YELLOW + " - " + plugin.getLanguage().getPhrase("Owner") + ": " + sz.getValue().getOwner()); + } + InformationPager.printInfo(plugin, player, plugin.getLanguage().getPhrase("Subzones"), temp, page); } public void remove() { - String name = getName(); + final String name = getName(); if (name != null) { - Residence.getResidenceManager().removeResidence(name); - Residence.getResidenceManager().removeChunkList(name); + plugin.getResidenceManager().removeResidence(name); + plugin.getResidenceManager().removeChunkList(name); } } - public void removeArea(Player player, String id, boolean resadmin) { + public void removeArea(final Player player, final String id, final boolean resadmin) { if (this.getPermissions().hasResidencePermission(player, true) || resadmin) { if (!areas.containsKey(id)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNonExist")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNonExist")); return; } - if (areas.size() == 1 && !Residence.getConfigManager().allowEmptyResidences()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaRemoveLast")); + if (areas.size() == 1 && !plugin.getConfigManager().allowEmptyResidences()) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaRemoveLast")); return; } removeArea(id); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaRemove")); - } else - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("AreaRemove")); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } } - public void removeArea(String id) { - Residence.getResidenceManager().removeChunkList(getName()); + public void removeArea(final String id) { + plugin.getResidenceManager().removeChunkList(getName()); areas.remove(id); - Residence.getResidenceManager().calculateChunks(getName()); + plugin.getResidenceManager().calculateChunks(getName()); } - public boolean removeSubzone(Player player, String name, boolean resadmin) { - ClaimedResidence res = subzones.get(name); + public boolean removeSubzone(final Player player, final String name, final boolean resadmin) { + final ClaimedResidence res = subzones.get(name); if (player != null && !res.perms.hasResidencePermission(player, true) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } subzones.remove(name); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SubzoneRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SubzoneRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); + } return true; } - public boolean removeSubzone(String name) { + public boolean removeSubzone(final String name) { return this.removeSubzone(null, name, true); } - public boolean renameArea(Player player, String oldName, String newName, boolean resadmin) { - if (!Residence.validName(newName)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters")); + public boolean renameArea(final Player player, final String oldName, final String newName, final boolean resadmin) { + if (!plugin.validName(newName)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidNameCharacters")); return false; } if (player == null || perms.hasResidencePermission(player, true) || resadmin) { if (areas.containsKey(newName)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaExists")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaExists")); + } return false; } - CuboidArea area = areas.get(oldName); + final CuboidArea area = areas.get(oldName); if (area == null) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaInvalidName")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaInvalidName")); + } return false; } areas.put(newName, area); areas.remove(oldName); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaRename", oldName + "." + newName)); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("AreaRename", oldName + "." + newName)); + } return true; } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } } - public boolean renameArea(String oldName, String newName) { + public boolean renameArea(final String oldName, final String newName) { return this.renameArea(null, oldName, newName, true); } - public boolean renameSubzone(Player player, String oldName, String newName, boolean resadmin) { - if (!Residence.validName(newName)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters")); + public boolean renameSubzone(final Player player, final String oldName, final String newName, final boolean resadmin) { + if (!plugin.validName(newName)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidNameCharacters")); return false; } - ClaimedResidence res = subzones.get(oldName); + final ClaimedResidence res = subzones.get(oldName); if (res == null) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidSubzone")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidSubzone")); + } return false; } if (player != null && !res.getPermissions().hasResidencePermission(player, true) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } if (subzones.containsKey(newName)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SubzoneExists", ChatColor.YELLOW + newName)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SubzoneExists", ChatColor.YELLOW + newName)); + } return false; } subzones.put(newName, res); subzones.remove(oldName); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SubzoneRename", oldName + "." + newName)); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SubzoneRename", oldName + "." + newName)); + } return true; } - public boolean renameSubzone(String oldName, String newName) { + public boolean renameSubzone(final String oldName, final String newName) { return this.renameSubzone(null, oldName, newName, true); } - public boolean replaceArea(CuboidArea neware, String name) { + public boolean replaceArea(final CuboidArea neware, final String name) { return this.replaceArea(null, neware, name, true); } - public boolean replaceArea(Player player, CuboidArea newarea, String name, boolean resadmin) { + public boolean replaceArea(final Player player, final CuboidArea newarea, final String name, final boolean resadmin) { if (!areas.containsKey(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNonExist")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNonExist")); + } return false; } - CuboidArea oldarea = areas.get(name); + final CuboidArea oldarea = areas.get(name); if (!newarea.getWorld().getName().equalsIgnoreCase(perms.getWorld())) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaDiffWorld")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaDiffWorld")); + } return false; } if (parent == null) { - String collideResidence = Residence.getResidenceManager().checkAreaCollision(newarea, this); + final String collideResidence = plugin.getResidenceManager().checkAreaCollision(newarea, this); if (collideResidence != null) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaCollision", ChatColor.YELLOW + collideResidence)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaCollision", ChatColor.YELLOW + collideResidence)); + } return false; } } else { - String[] szs = parent.listSubzones(); - for (String sz : szs) { - ClaimedResidence res = parent.getSubzone(sz); - if (res != null && res != this) + final String[] szs = parent.listSubzones(); + for (final String sz : szs) { + final ClaimedResidence res = parent.getSubzone(sz); + if (res != null && res != this) { if (res.checkCollision(newarea)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSubzoneCollision", ChatColor.YELLOW + sz)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaSubzoneCollision", ChatColor.YELLOW + sz)); + } return false; } + } } } // Remove subzones that are not in the area anymore - String[] szs = listSubzones(); - for (String sz : szs) { - ClaimedResidence res = getSubzone(sz); + final String[] szs = listSubzones(); + for (final String sz : szs) { + final ClaimedResidence res = getSubzone(sz); if (res != null && res != this) { - String[] areas = res.getAreaList(); - for (String area : areas) + final String[] areas = res.getAreaList(); + for (final String area : areas) { if (!newarea.isAreaWithinArea(res.getArea(area))) { boolean good = false; - for (CuboidArea arae : getAreaArray()) - if (arae != oldarea && arae.isAreaWithinArea(res.getArea(area))) + for (final CuboidArea arae : getAreaArray()) { + if (arae != oldarea && arae.isAreaWithinArea(res.getArea(area))) { good = true; - if (!good) + } + } + if (!good) { res.removeArea(area); + } } - if (res.getAreaArray().length == 0) + } + if (res.getAreaArray().length == 0) { removeSubzone(sz); + } } } if (!resadmin && player != null) { if (!this.perms.hasResidencePermission(player, true)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } if (parent != null) { if (!parent.containsLoc(newarea.getHighLoc()) || !parent.containsLoc(newarea.getLowLoc())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaNotWithinParent")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaNotWithinParent")); return false; } if (!parent.getPermissions().hasResidencePermission(player, true) && !parent.getPermissions().playerHas(player.getName(), "subzone", true)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ParentNoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ParentNoPermission")); return false; } } - PermissionGroup group = Residence.getPermissionManager().getGroup(player); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); if (!group.canCreateResidences() && !player.hasPermission("residence.create")) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } if (!group.inLimits(newarea)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaSizeLimit")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaSizeLimit")); return false; } if (group.getMinHeight() > newarea.getLowLoc().getBlockY()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaLowLimit", ChatColor.YELLOW + String.format("%d", group.getMinHeight()))); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaLowLimit", ChatColor.YELLOW + String.format("%d", group.getMinHeight()))); return false; } if (group.getMaxHeight() < newarea.getHighLoc().getBlockY()) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("AreaHighLimit", ChatColor.YELLOW + String.format("%d", group.getMaxHeight()))); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("AreaHighLimit", ChatColor.YELLOW + String.format("%d", group.getMaxHeight()))); return false; } - if (parent == null && Residence.getConfigManager().enableEconomy()) { - int chargeamount = (int) Math.ceil((newarea.getSize() - oldarea.getSize()) * group.getCostPerBlock()); - if (chargeamount > 0) - if (!TransactionManager.chargeEconomyMoney(player, chargeamount)) + if (parent == null && plugin.getConfigManager().enableEconomy()) { + final int chargeamount = (int) Math.ceil((newarea.getSize() - oldarea.getSize()) * group.getCostPerBlock()); + if (chargeamount > 0) { + if (!TransactionManager.chargeEconomyMoney(plugin, player, chargeamount)) { return false; + } + } } } - Residence.getResidenceManager().removeChunkList(getName()); + plugin.getResidenceManager().removeChunkList(getName()); areas.remove(name); areas.put(name, newarea); - Residence.getResidenceManager().calculateChunks(getName()); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("AreaUpdate")); + plugin.getResidenceManager().calculateChunks(getName()); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("AreaUpdate")); return true; } public Map save() { - Map root = new HashMap(); - Map areamap = new HashMap(); + final Map root = new HashMap(); + final Map areamap = new HashMap(); root.put("EnterMessage", enterMessage); root.put("LeaveMessage", leaveMessage); root.put("StoredMoney", bank.getStoredMoney()); root.put("BlackList", blacklist.save()); root.put("IgnoreList", ignorelist.save()); - for (Entry entry : areas.entrySet()) + for (final Entry entry : areas.entrySet()) { areamap.put(entry.getKey(), entry.getValue().save()); + } root.put("Areas", areamap); - Map subzonemap = new HashMap(); - for (Entry sz : subzones.entrySet()) + final Map subzonemap = new HashMap(); + for (final Entry sz : subzones.entrySet()) { subzonemap.put(sz.getKey(), sz.getValue().save()); + } root.put("Subzones", subzonemap); root.put("Permissions", perms.save()); if (tpLoc != null) { - Map tpmap = new HashMap(); + final Map tpmap = new HashMap(); tpmap.put("X", tpLoc.getBlockX()); tpmap.put("Y", tpLoc.getBlockY()); tpmap.put("Z", tpLoc.getBlockZ()); @@ -795,82 +876,85 @@ public class ClaimedResidence { return root; } - public void setEnterLeaveMessage(Player player, String message, boolean enter, boolean resadmin) { - if (message != null) - if (message.equals("")) + public void setEnterLeaveMessage(final Player player, String message, final boolean enter, final boolean resadmin) { + if (message != null) { + if (message.equals("")) { message = null; - PermissionGroup group = Residence.getPermissionManager().getGroup(perms.getOwner(), perms.getWorld()); + } + } + final PermissionGroup group = plugin.getPermissionManager().getGroup(perms.getOwner(), perms.getWorld()); if (!group.canSetEnterLeaveMessages() && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("OwnerNoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("OwnerNoPermission")); return; } if (!perms.hasResidencePermission(player, false) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } - if (enter) + if (enter) { this.setEnterMessage(message); - else + } else { this.setLeaveMessage(message); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("MessageChange")); + } + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MessageChange")); } - public void setEnterMessage(String message) { + public void setEnterMessage(final String message) { enterMessage = message; } - public void setLeaveMessage(String message) { + public void setLeaveMessage(final String message) { leaveMessage = message; } - public void setTpLoc(Player player, boolean resadmin) { + public void setTpLoc(final Player player, final boolean resadmin) { if (!this.perms.hasResidencePermission(player, false) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } if (!this.containsLoc(player.getLocation())) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotInResidence")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotInResidence")); return; } tpLoc = player.getLocation(); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("SetTeleportLocation")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SetTeleportLocation")); } - public void tpToResidence(Player reqPlayer, Player targetPlayer, boolean resadmin) { + public void tpToResidence(final Player reqPlayer, final Player targetPlayer, final boolean resadmin) { if (!resadmin) { - PermissionGroup group = Residence.getPermissionManager().getGroup(reqPlayer); + final PermissionGroup group = plugin.getPermissionManager().getGroup(reqPlayer); if (!group.hasTpAccess()) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("TeleportDeny")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportDeny")); return; } if (!reqPlayer.equals(targetPlayer)) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } if (!this.perms.playerHas(reqPlayer.getName(), "tp", true)) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("TeleportNoFlag")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("TeleportNoFlag")); return; } } if (tpLoc != null) { - ResidenceTPEvent tpevent = new ResidenceTPEvent(this, tpLoc, targetPlayer, reqPlayer); - Residence.getServ().getPluginManager().callEvent(tpevent); + final ResidenceTPEvent tpevent = new ResidenceTPEvent(this, tpLoc, targetPlayer, reqPlayer); + Bukkit.getServer().getPluginManager().callEvent(tpevent); if (!tpevent.isCancelled()) { targetPlayer.teleport(tpLoc); - targetPlayer.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("TeleportSuccess")); + targetPlayer.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("TeleportSuccess")); } } else { - CuboidArea area = areas.values().iterator().next(); + final CuboidArea area = areas.values().iterator().next(); if (area == null) { reqPlayer.sendMessage(ChatColor.RED + "Could not find area to teleport to..."); return; } - Location targloc = this.getOutsideFreeLoc(area.getHighLoc()); - ResidenceTPEvent tpevent = new ResidenceTPEvent(this, targloc, targetPlayer, reqPlayer); - Residence.getServ().getPluginManager().callEvent(tpevent); + final Location targloc = this.getOutsideFreeLoc(area.getHighLoc()); + final ResidenceTPEvent tpevent = new ResidenceTPEvent(this, targloc, targetPlayer, reqPlayer); + Bukkit.getServer().getPluginManager().callEvent(tpevent); if (!tpevent.isCancelled()) { targetPlayer.teleport(targloc); - targetPlayer.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("TeleportNear")); + targetPlayer.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("TeleportNear")); } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/CuboidArea.java b/src/main/java/com/bekvon/bukkit/residence/protection/CuboidArea.java index 06e7585..1090b68 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/CuboidArea.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/CuboidArea.java @@ -5,9 +5,6 @@ package com.bekvon.bukkit.residence.protection; -import com.bekvon.bukkit.residence.Residence; -import com.bekvon.bukkit.residence.protection.ResidenceManager.ChunkRef; - import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; @@ -16,199 +13,202 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.World; +import com.bekvon.bukkit.residence.protection.ResidenceManager.ChunkRef; + /** - * + * * @author Administrator */ public class CuboidArea { - protected Location highPoints; - protected Location lowPoints; + protected Location highPoints; + protected Location lowPoints; - protected CuboidArea() { - } + public CuboidArea(final Location startLoc, final Location endLoc) { + int highx, highy, highz, lowx, lowy, lowz; + if (startLoc.getBlockX() > endLoc.getBlockX()) { + highx = startLoc.getBlockX(); + lowx = endLoc.getBlockX(); + } else { + highx = endLoc.getBlockX(); + lowx = startLoc.getBlockX(); + } + if (startLoc.getBlockY() > endLoc.getBlockY()) { + highy = startLoc.getBlockY(); + lowy = endLoc.getBlockY(); + } else { + highy = endLoc.getBlockY(); + lowy = startLoc.getBlockY(); + } + if (startLoc.getBlockZ() > endLoc.getBlockZ()) { + highz = startLoc.getBlockZ(); + lowz = endLoc.getBlockZ(); + } else { + highz = endLoc.getBlockZ(); + lowz = startLoc.getBlockZ(); + } + highPoints = new Location(startLoc.getWorld(), highx, highy, highz); + lowPoints = new Location(startLoc.getWorld(), lowx, lowy, lowz); + } - public CuboidArea(Location startLoc, Location endLoc) { - int highx, highy, highz, lowx, lowy, lowz; - if (startLoc.getBlockX() > endLoc.getBlockX()) { - highx = startLoc.getBlockX(); - lowx = endLoc.getBlockX(); - } else { - highx = endLoc.getBlockX(); - lowx = startLoc.getBlockX(); - } - if (startLoc.getBlockY() > endLoc.getBlockY()) { - highy = startLoc.getBlockY(); - lowy = endLoc.getBlockY(); - } else { - highy = endLoc.getBlockY(); - lowy = startLoc.getBlockY(); - } - if (startLoc.getBlockZ() > endLoc.getBlockZ()) { - highz = startLoc.getBlockZ(); - lowz = endLoc.getBlockZ(); - } else { - highz = endLoc.getBlockZ(); - lowz = startLoc.getBlockZ(); - } - highPoints = new Location(startLoc.getWorld(), highx, highy, highz); - lowPoints = new Location(startLoc.getWorld(), lowx, lowy, lowz); - } + protected CuboidArea() { + } - public boolean isAreaWithinArea(CuboidArea area) { - return (this.containsLoc(area.highPoints) && this.containsLoc(area.lowPoints)); - } + public static CuboidArea load(final DataInputStream in, final int version) throws IOException { + final CuboidArea newArea = new CuboidArea(); + final Server server = Bukkit.getServer(); + final World world = server.getWorld(in.readUTF()); + final int highx = in.readInt(); + final int highy = in.readInt(); + final int highz = in.readInt(); + final int lowx = in.readInt(); + final int lowy = in.readInt(); + final int lowz = in.readInt(); + newArea.highPoints = new Location(world, highx, highy, highz); + newArea.lowPoints = new Location(world, lowx, lowy, lowz); + return newArea; + } - public boolean containsLoc(Location loc) { - if (loc == null) { - return false; - } - if (!loc.getWorld().equals(highPoints.getWorld())) { - return false; - } - if (lowPoints.getBlockX() <= loc.getBlockX() && highPoints.getBlockX() >= loc.getBlockX()) { - if (lowPoints.getBlockZ() <= loc.getBlockZ() && highPoints.getBlockZ() >= loc.getBlockZ()) { - if (lowPoints.getBlockY() <= loc.getBlockY() && highPoints.getBlockY() >= loc.getBlockY()) { - return true; - } - } - } - return false; - } + public static CuboidArea load(final Map root, final World world) throws Exception { + if (root == null) { + throw new Exception("Invalid residence physical location..."); + } + final CuboidArea newArea = new CuboidArea(); + final int x1 = (Integer) root.get("X1"); + final int y1 = (Integer) root.get("Y1"); + final int z1 = (Integer) root.get("Z1"); + final int x2 = (Integer) root.get("X2"); + final int y2 = (Integer) root.get("Y2"); + final int z2 = (Integer) root.get("Z2"); + newArea.highPoints = new Location(world, x1, y1, z1); + newArea.lowPoints = new Location(world, x2, y2, z2); + return newArea; + } - public boolean checkCollision(CuboidArea area) { - if (!area.getWorld().equals(this.getWorld())) { - return false; - } - if (area.containsLoc(lowPoints) || area.containsLoc(highPoints) || this.containsLoc(area.highPoints) || this.containsLoc(area.lowPoints)) { - return true; - } - return advCuboidCheckCollision(highPoints, lowPoints, area.highPoints, area.lowPoints); - } + public boolean checkCollision(final CuboidArea area) { + if (!area.getWorld().equals(this.getWorld())) { + return false; + } + if (area.containsLoc(lowPoints) || area.containsLoc(highPoints) || this.containsLoc(area.highPoints) || this.containsLoc(area.lowPoints)) { + return true; + } + return advCuboidCheckCollision(highPoints, lowPoints, area.highPoints, area.lowPoints); + } - private boolean advCuboidCheckCollision(Location A1High, Location A1Low, Location A2High, Location A2Low) { - int A1HX = A1High.getBlockX(); - int A1LX = A1Low.getBlockX(); - int A1HY = A1High.getBlockY(); - int A1LY = A1Low.getBlockY(); - int A1HZ = A1High.getBlockZ(); - int A1LZ = A1Low.getBlockZ(); - int A2HX = A2High.getBlockX(); - int A2LX = A2Low.getBlockX(); - int A2HY = A2High.getBlockY(); - int A2LY = A2Low.getBlockY(); - int A2HZ = A2High.getBlockZ(); - int A2LZ = A2Low.getBlockZ(); - if ((A1HX >= A2LX && A1HX <= A2HX) || (A1LX >= A2LX && A1LX <= A2HX) || (A2HX >= A1LX && A2HX <= A1HX) || (A2LX >= A1LX && A2LX <= A1HX)) { - if ((A1HY >= A2LY && A1HY <= A2HY) || (A1LY >= A2LY && A1LY <= A2HY) || (A2HY >= A1LY && A2HY <= A1HY) || (A2LY >= A1LY && A2LY <= A1HY)) { - if ((A1HZ >= A2LZ && A1HZ <= A2HZ) || (A1LZ >= A2LZ && A1LZ <= A2HZ) || (A2HZ >= A1LZ && A2HZ <= A1HZ) || (A2LZ >= A1LZ && A2LZ <= A1HZ)) { - return true; - } - } - } - return false; - } + public boolean containsLoc(final Location loc) { + if (loc == null) { + return false; + } + if (!loc.getWorld().equals(highPoints.getWorld())) { + return false; + } + if (lowPoints.getBlockX() <= loc.getBlockX() && highPoints.getBlockX() >= loc.getBlockX()) { + if (lowPoints.getBlockZ() <= loc.getBlockZ() && highPoints.getBlockZ() >= loc.getBlockZ()) { + if (lowPoints.getBlockY() <= loc.getBlockY() && highPoints.getBlockY() >= loc.getBlockY()) { + return true; + } + } + } + return false; + } - public long getSize() { - int xsize = (highPoints.getBlockX() - lowPoints.getBlockX()) + 1; - int ysize = (highPoints.getBlockY() - lowPoints.getBlockY()) + 1; - int zsize = (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1; - return xsize * ysize * zsize; - } + public List getChunks() { + final List chunks = new ArrayList(); + final Location high = this.highPoints; + final Location low = this.lowPoints; + final int lowX = ChunkRef.getChunkCoord(low.getBlockX()); + final int lowZ = ChunkRef.getChunkCoord(low.getBlockZ()); + final int highX = ChunkRef.getChunkCoord(high.getBlockX()); + final int highZ = ChunkRef.getChunkCoord(high.getBlockZ()); - public int getXSize() { - return (highPoints.getBlockX() - lowPoints.getBlockX()) + 1; - } + for (int x = lowX; x <= highX; x++) { + for (int z = lowZ; z <= highZ; z++) { + chunks.add(new ChunkRef(x, z)); + } + } + return chunks; + } - public int getYSize() { - return (highPoints.getBlockY() - lowPoints.getBlockY()) + 1; - } + public Location getHighLoc() { + return highPoints; + } - public int getZSize() { - return (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1; - } + public Location getLowLoc() { + return lowPoints; + } - public Location getHighLoc() { - return highPoints; - } + public long getSize() { + final int xsize = (highPoints.getBlockX() - lowPoints.getBlockX()) + 1; + final int ysize = (highPoints.getBlockY() - lowPoints.getBlockY()) + 1; + final int zsize = (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1; + return xsize * ysize * zsize; + } - public Location getLowLoc() { - return lowPoints; - } + public World getWorld() { + return highPoints.getWorld(); + } - public World getWorld() { - return highPoints.getWorld(); - } + public int getXSize() { + return (highPoints.getBlockX() - lowPoints.getBlockX()) + 1; + } - public void save(DataOutputStream out, int version) throws IOException { - out.writeUTF(highPoints.getWorld().getName()); - out.writeInt(highPoints.getBlockX()); - out.writeInt(highPoints.getBlockY()); - out.writeInt(highPoints.getBlockZ()); - out.writeInt(lowPoints.getBlockX()); - out.writeInt(lowPoints.getBlockY()); - out.writeInt(lowPoints.getBlockZ()); - } + public int getYSize() { + return (highPoints.getBlockY() - lowPoints.getBlockY()) + 1; + } - public static CuboidArea load(DataInputStream in, int version) throws IOException { - CuboidArea newArea = new CuboidArea(); - Server server = Residence.getServ(); - World world = server.getWorld(in.readUTF()); - int highx = in.readInt(); - int highy = in.readInt(); - int highz = in.readInt(); - int lowx = in.readInt(); - int lowy = in.readInt(); - int lowz = in.readInt(); - newArea.highPoints = new Location(world, highx, highy, highz); - newArea.lowPoints = new Location(world, lowx, lowy, lowz); - return newArea; - } + public int getZSize() { + return (highPoints.getBlockZ() - lowPoints.getBlockZ()) + 1; + } - public Map save() { - Map root = new LinkedHashMap(); - root.put("X1", this.highPoints.getBlockX()); - root.put("Y1", this.highPoints.getBlockY()); - root.put("Z1", this.highPoints.getBlockZ()); - root.put("X2", this.lowPoints.getBlockX()); - root.put("Y2", this.lowPoints.getBlockY()); - root.put("Z2", this.lowPoints.getBlockZ()); - return root; - } + public boolean isAreaWithinArea(final CuboidArea area) { + return (this.containsLoc(area.highPoints) && this.containsLoc(area.lowPoints)); + } - public static CuboidArea load(Map root, World world) throws Exception { - if (root == null) { - throw new Exception("Invalid residence physical location..."); - } - CuboidArea newArea = new CuboidArea(); - int x1 = (Integer) root.get("X1"); - int y1 = (Integer) root.get("Y1"); - int z1 = (Integer) root.get("Z1"); - int x2 = (Integer) root.get("X2"); - int y2 = (Integer) root.get("Y2"); - int z2 = (Integer) root.get("Z2"); - newArea.highPoints = new Location(world, x1, y1, z1); - newArea.lowPoints = new Location(world, x2, y2, z2); - return newArea; - } + public Map save() { + final Map root = new LinkedHashMap(); + root.put("X1", this.highPoints.getBlockX()); + root.put("Y1", this.highPoints.getBlockY()); + root.put("Z1", this.highPoints.getBlockZ()); + root.put("X2", this.lowPoints.getBlockX()); + root.put("Y2", this.lowPoints.getBlockY()); + root.put("Z2", this.lowPoints.getBlockZ()); + return root; + } - public List getChunks() { - List chunks = new ArrayList(); - Location high = this.highPoints; - Location low = this.lowPoints; - int lowX = ChunkRef.getChunkCoord(low.getBlockX()); - int lowZ = ChunkRef.getChunkCoord(low.getBlockZ()); - int highX = ChunkRef.getChunkCoord(high.getBlockX()); - int highZ = ChunkRef.getChunkCoord(high.getBlockZ()); + public void save(final DataOutputStream out, final int version) throws IOException { + out.writeUTF(highPoints.getWorld().getName()); + out.writeInt(highPoints.getBlockX()); + out.writeInt(highPoints.getBlockY()); + out.writeInt(highPoints.getBlockZ()); + out.writeInt(lowPoints.getBlockX()); + out.writeInt(lowPoints.getBlockY()); + out.writeInt(lowPoints.getBlockZ()); + } - for (int x = lowX; x <= highX; x++) { - for (int z = lowZ; z <= highZ; z++) { - chunks.add(new ChunkRef(x, z)); - } - } - return chunks; - } + private boolean advCuboidCheckCollision(final Location A1High, final Location A1Low, final Location A2High, final Location A2Low) { + final int A1HX = A1High.getBlockX(); + final int A1LX = A1Low.getBlockX(); + final int A1HY = A1High.getBlockY(); + final int A1LY = A1Low.getBlockY(); + final int A1HZ = A1High.getBlockZ(); + final int A1LZ = A1Low.getBlockZ(); + final int A2HX = A2High.getBlockX(); + final int A2LX = A2Low.getBlockX(); + final int A2HY = A2High.getBlockY(); + final int A2LY = A2Low.getBlockY(); + final int A2HZ = A2High.getBlockZ(); + final int A2LZ = A2Low.getBlockZ(); + if ((A1HX >= A2LX && A1HX <= A2HX) || (A1LX >= A2LX && A1LX <= A2HX) || (A2HX >= A1LX && A2HX <= A1HX) || (A2LX >= A1LX && A2LX <= A1HX)) { + if ((A1HY >= A2LY && A1HY <= A2HY) || (A1LY >= A2LY && A1LY <= A2HY) || (A2HY >= A1LY && A2HY <= A1HY) || (A2LY >= A1LY && A2LY <= A1HY)) { + if ((A1HZ >= A2LZ && A1HZ <= A2HZ) || (A1LZ >= A2LZ && A1LZ <= A2HZ) || (A2HZ >= A1LZ && A2HZ <= A1HZ) || (A2LZ >= A1LZ && A2LZ <= A1HZ)) { + return true; + } + } + } + return false; + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java index 8a71cfa..5948cad 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/FlagPermissions.java @@ -27,18 +27,19 @@ import com.bekvon.bukkit.residence.Residence; */ public class FlagPermissions { + protected static ArrayList validAreaFlags = new ArrayList(); + protected static HashMap> validFlagGroups = new HashMap>(); protected static ArrayList validFlags = new ArrayList(); protected static ArrayList validPlayerFlags = new ArrayList(); - protected static ArrayList validAreaFlags = new ArrayList(); final static Map matUseFlagList = new EnumMap(Material.class); - protected static HashMap> validFlagGroups = new HashMap>(); - protected Map> playerFlags; - protected Map> groupFlags; + static Residence plugin; protected Map cuboidFlags; - + protected Map> groupFlags; protected FlagPermissions parent; + protected Map> playerFlags; - public FlagPermissions() { + public FlagPermissions(final Residence plugin) { + FlagPermissions.plugin = plugin; cuboidFlags = Collections.synchronizedMap(new HashMap()); playerFlags = Collections.synchronizedMap(new HashMap>()); groupFlags = Collections.synchronizedMap(new HashMap>()); @@ -46,42 +47,49 @@ public class FlagPermissions { public static void addFlag(String flag) { flag = flag.toLowerCase(); - if (!validFlags.contains(flag)) + if (!validFlags.contains(flag)) { validFlags.add(flag); - if (validFlagGroups.containsKey(flag)) + } + if (validFlagGroups.containsKey(flag)) { validFlagGroups.remove(flag); + } } - public static void addFlagToFlagGroup(String group, String flag) { + public static void addFlagToFlagGroup(final String group, final String flag) { if (!FlagPermissions.validFlags.contains(group) && !FlagPermissions.validAreaFlags.contains(group) && !FlagPermissions.validPlayerFlags.contains(group)) { - if (!validFlagGroups.containsKey(group)) + if (!validFlagGroups.containsKey(group)) { validFlagGroups.put(group, new ArrayList()); - ArrayList flags = validFlagGroups.get(group); + } + final ArrayList flags = validFlagGroups.get(group); flags.add(flag); } } - public static void addMaterialToUseFlag(Material mat, String flag) { + public static void addMaterialToUseFlag(final Material mat, final String flag) { matUseFlagList.put(mat, flag); } public static void addPlayerOrGroupOnlyFlag(String flag) { flag = flag.toLowerCase(); - if (!validPlayerFlags.contains(flag)) + if (!validPlayerFlags.contains(flag)) { validPlayerFlags.add(flag); - if (validFlagGroups.containsKey(flag)) + } + if (validFlagGroups.containsKey(flag)) { validFlagGroups.remove(flag); + } } public static void addResidenceOnlyFlag(String flag) { flag = flag.toLowerCase(); - if (!validAreaFlags.contains(flag)) + if (!validAreaFlags.contains(flag)) { validAreaFlags.add(flag); - if (validFlagGroups.containsKey(flag)) + } + if (validFlagGroups.containsKey(flag)) { validFlagGroups.remove(flag); + } } - public static boolean flagGroupExists(String group) { + public static boolean flagGroupExists(final String group) { return validFlagGroups.containsKey(group); } @@ -173,7 +181,7 @@ public class FlagPermissions { addMaterialToUseFlag(Material.WORKBENCH, "table"); addMaterialToUseFlag(Material.WOODEN_DOOR, "door"); - if (Residence.is1_8()) { + if (plugin.is1_8()) { /* 1.8 Doors */ addMaterialToUseFlag(Material.SPRUCE_DOOR, "door"); addMaterialToUseFlag(Material.BIRCH_DOOR, "door"); @@ -216,66 +224,73 @@ public class FlagPermissions { addMaterialToUseFlag(Material.CAKE_BLOCK, "cake"); } - public static FlagPermissions load(Map root) throws Exception { - FlagPermissions newperms = new FlagPermissions(); + public static FlagPermissions load(final Map root) throws Exception { + final FlagPermissions newperms = new FlagPermissions(plugin); return FlagPermissions.load(root, newperms); } - public static FlagPermissions parseFromConfigNode(String name, ConfigurationSection node) { - FlagPermissions list = new FlagPermissions(); - Set keys = node.getConfigurationSection(name).getKeys(false); - if (keys != null) + public static FlagPermissions parseFromConfigNode(final String name, final ConfigurationSection node) { + final FlagPermissions list = new FlagPermissions(plugin); + final Set keys = node.getConfigurationSection(name).getKeys(false); + if (keys != null) { for (String key : keys) { - boolean state = node.getBoolean(name + "." + key, false); + final boolean state = node.getBoolean(name + "." + key, false); key = key.toLowerCase(); - if (state) + if (state) { list.setFlag(key, FlagState.TRUE); - else + } else { list.setFlag(key, FlagState.FALSE); + } } + } return list; } - public static void removeFlagFromFlagGroup(String group, String flag) { + public static void removeFlagFromFlagGroup(final String group, final String flag) { if (validFlagGroups.containsKey(group)) { - ArrayList flags = validFlagGroups.get(group); + final ArrayList flags = validFlagGroups.get(group); flags.remove(flag); - if (flags.isEmpty()) + if (flags.isEmpty()) { validFlagGroups.remove(group); + } } } - public static void removeMaterialFromUseFlag(Material mat) { + public static void removeMaterialFromUseFlag(final Material mat) { matUseFlagList.remove(mat); } - public static FlagState stringToFlagState(String flagstate) { - if (flagstate.equalsIgnoreCase("true") || flagstate.equalsIgnoreCase("t")) + public static FlagState stringToFlagState(final String flagstate) { + if (flagstate.equalsIgnoreCase("true") || flagstate.equalsIgnoreCase("t")) { return FlagState.TRUE; - else if (flagstate.equalsIgnoreCase("false") || flagstate.equalsIgnoreCase("f")) + } else if (flagstate.equalsIgnoreCase("false") || flagstate.equalsIgnoreCase("f")) { return FlagState.FALSE; - else if (flagstate.equalsIgnoreCase("remove") || flagstate.equalsIgnoreCase("r")) + } else if (flagstate.equalsIgnoreCase("remove") || flagstate.equalsIgnoreCase("r")) { return FlagState.NEITHER; - else + } else { return FlagState.INVALID; + } } @SuppressWarnings("unchecked") - protected static FlagPermissions load(Map root, FlagPermissions newperms) throws Exception { + protected static FlagPermissions load(final Map root, final FlagPermissions newperms) throws Exception { newperms.playerFlags = (Map>) root.get("PlayerFlags"); newperms.groupFlags = (Map>) root.get("GroupFlags"); newperms.cuboidFlags = (Map) root.get("AreaFlags"); return newperms; } - public boolean checkValidFlag(String flag, boolean globalflag) { - if (validFlags.contains(flag)) + public boolean checkValidFlag(final String flag, final boolean globalflag) { + if (validFlags.contains(flag)) { return true; + } if (globalflag) { - if (validAreaFlags.contains(flag)) + if (validAreaFlags.contains(flag)) { return true; - } else if (validPlayerFlags.contains(flag)) + } + } else if (validPlayerFlags.contains(flag)) { return true; + } return false; } @@ -285,23 +300,25 @@ public class FlagPermissions { cuboidFlags.clear(); } - public void clearPlayersFlags(String user) { - if (playerFlags.containsKey(user)) + public void clearPlayersFlags(final String user) { + if (playerFlags.containsKey(user)) { playerFlags.remove(user); + } } public void copyUserPermissions(String fromUser, String toUser) { fromUser = fromUser.toLowerCase(); toUser = toUser.toLowerCase(); - Map get = playerFlags.get(fromUser); + final Map get = playerFlags.get(fromUser); if (get != null) { Map targ = playerFlags.get(toUser); if (targ == null) { targ = new HashMap(); playerFlags.put(toUser, targ); } - for (Entry entry : get.entrySet()) + for (final Entry entry : get.entrySet()) { targ.put(entry.getKey(), entry.getValue()); + } } } @@ -309,91 +326,101 @@ public class FlagPermissions { return parent; } - public boolean groupHas(String group, String flag, boolean def) { + public boolean groupHas(final String group, final String flag, final boolean def) { return this.groupCheck(group, flag, this.has(flag, def)); } - public boolean has(String flag, boolean def) { - if (cuboidFlags.containsKey(flag)) + public boolean has(final String flag, final boolean def) { + if (cuboidFlags.containsKey(flag)) { return cuboidFlags.get(flag); - if (parent != null) + } + if (parent != null) { return parent.has(flag, def); + } return def; } - public boolean inheritanceIsGroupSet(String group, String flag) { + public boolean inheritanceIsGroupSet(String group, final String flag) { group = group.toLowerCase(); - Map flags = groupFlags.get(group); - if (flags == null) + final Map flags = groupFlags.get(group); + if (flags == null) { return parent == null ? false : parent.inheritanceIsGroupSet(group, flag); + } return flags.containsKey(flag) ? true : parent == null ? false : parent.inheritanceIsGroupSet(group, flag); } - public boolean inheritanceIsPlayerSet(String player, String flag) { + public boolean inheritanceIsPlayerSet(String player, final String flag) { player = player.toLowerCase(); - Map flags = playerFlags.get(player); - if (flags == null) + final Map flags = playerFlags.get(player); + if (flags == null) { return parent == null ? false : parent.inheritanceIsPlayerSet(player, flag); + } return flags.containsKey(flag) ? true : parent == null ? false : parent.inheritanceIsPlayerSet(player, flag); } - public boolean inheritanceIsSet(String flag) { + public boolean inheritanceIsSet(final String flag) { return cuboidFlags.containsKey(flag) ? true : parent == null ? false : parent.inheritanceIsSet(flag); } - public boolean isGroupSet(String group, String flag) { + public boolean isGroupSet(String group, final String flag) { group = group.toLowerCase(); - Map flags = groupFlags.get(group); - if (flags == null) + final Map flags = groupFlags.get(group); + if (flags == null) { return false; + } return flags.containsKey(flag); } - public boolean isPlayerSet(String player, String flag) { + public boolean isPlayerSet(String player, final String flag) { player = player.toLowerCase(); - Map flags = playerFlags.get(player); - if (flags == null) + final Map flags = playerFlags.get(player); + if (flags == null) { return false; + } return flags.containsKey(flag); } - public boolean isSet(String flag) { + public boolean isSet(final String flag) { return cuboidFlags.containsKey(flag); } public String listFlags() { - StringBuilder sbuild = new StringBuilder(); - Set> set = cuboidFlags.entrySet(); + final StringBuilder sbuild = new StringBuilder(); + final Set> set = cuboidFlags.entrySet(); synchronized (cuboidFlags) { - Iterator> it = set.iterator(); + final Iterator> it = set.iterator(); while (it.hasNext()) { - Entry next = it.next(); + final Entry next = it.next(); if (next.getValue()) { sbuild.append("+").append(next.getKey()); - if (it.hasNext()) + if (it.hasNext()) { sbuild.append(" "); + } } else { sbuild.append("-").append(next.getKey()); - if (it.hasNext()) + if (it.hasNext()) { sbuild.append(" "); + } } } } - if (sbuild.length() == 0) + if (sbuild.length() == 0) { sbuild.append("none"); + } return sbuild.toString(); } public String listGroupFlags() { - StringBuilder sbuild = new StringBuilder(); - Set set = groupFlags.keySet(); + final StringBuilder sbuild = new StringBuilder(); + final Set set = groupFlags.keySet(); synchronized (groupFlags) { - Iterator it = set.iterator(); + final Iterator it = set.iterator(); while (it.hasNext()) { - String next = it.next(); - String perms = listGroupFlags(next); - if (!perms.equals("none")) + final String next = it.next(); + final String perms = listGroupFlags(next); + if (!perms.equals("none")) { sbuild.append(next).append("[" + ChatColor.DARK_AQUA).append(perms).append(ChatColor.RED + "] "); + } } } return sbuild.toString(); @@ -402,21 +429,23 @@ public class FlagPermissions { public String listGroupFlags(String group) { group = group.toLowerCase(); if (groupFlags.containsKey(group)) { - StringBuilder sbuild = new StringBuilder(); - Map get = groupFlags.get(group); - Set> set = get.entrySet(); + final StringBuilder sbuild = new StringBuilder(); + final Map get = groupFlags.get(group); + final Set> set = get.entrySet(); synchronized (get) { - Iterator> it = set.iterator(); + final Iterator> it = set.iterator(); while (it.hasNext()) { - Entry next = it.next(); + final Entry next = it.next(); if (next.getValue()) { sbuild.append("+").append(next.getKey()); - if (it.hasNext()) + if (it.hasNext()) { sbuild.append(" "); + } } else { sbuild.append("-").append(next.getKey()); - if (it.hasNext()) + if (it.hasNext()) { sbuild.append(" "); + } } } } @@ -425,22 +454,24 @@ public class FlagPermissions { sbuild.append("none"); } return sbuild.toString(); - } else + } else { return "none"; + } } public String listOtherPlayersFlags(String player) { player = player.toLowerCase(); - StringBuilder sbuild = new StringBuilder(); - Set set = playerFlags.keySet(); + final StringBuilder sbuild = new StringBuilder(); + final Set set = playerFlags.keySet(); synchronized (playerFlags) { - Iterator it = set.iterator(); + final Iterator it = set.iterator(); while (it.hasNext()) { - String next = it.next(); + final String next = it.next(); if (!next.equals(player)) { - String perms = listPlayerFlags(next); - if (!perms.equals("none")) + final String perms = listPlayerFlags(next); + if (!perms.equals("none")) { sbuild.append(next).append("[" + ChatColor.DARK_AQUA).append(perms).append(ChatColor.RED + "] "); + } } } } @@ -450,21 +481,23 @@ public class FlagPermissions { public String listPlayerFlags(String player) { player = player.toLowerCase(); if (playerFlags.containsKey(player)) { - StringBuilder sbuild = new StringBuilder(); - Map get = playerFlags.get(player); - Set> set = get.entrySet(); + final StringBuilder sbuild = new StringBuilder(); + final Map get = playerFlags.get(player); + final Set> set = get.entrySet(); synchronized (get) { - Iterator> it = set.iterator(); + final Iterator> it = set.iterator(); while (it.hasNext()) { - Entry next = it.next(); + final Entry next = it.next(); if (next.getValue()) { sbuild.append("+").append(next.getKey()); - if (it.hasNext()) + if (it.hasNext()) { sbuild.append(" "); + } } else { sbuild.append("-").append(next.getKey()); - if (it.hasNext()) + if (it.hasNext()) { sbuild.append(" "); + } } } } @@ -473,115 +506,130 @@ public class FlagPermissions { sbuild.append("none"); } return sbuild.toString(); - } else + } else { return "none"; + } } - public boolean playerHas(String player, String world, String flag, boolean def) { - String group = Residence.getPermissionManager().getGroupNameByPlayer(player, world); + public boolean playerHas(final String player, final String world, final String flag, final boolean def) { + final String group = plugin.getPermissionManager().getGroupNameByPlayer(player, world); return this.playerCheck(player, flag, this.groupCheck(group, flag, this.has(flag, def))); } - public void printFlags(Player player) { - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Flags") + ":" + ChatColor.BLUE + " " + listFlags()); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Your.Flags") + ":" + ChatColor.GREEN + " " + listPlayerFlags(player.getName())); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Group.Flags") + ":" + ChatColor.RED + " " + listGroupFlags()); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Others.Flags") + ":" + ChatColor.RED + " " + listOtherPlayersFlags(player.getName())); + public void printFlags(final Player player) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Flags") + ":" + ChatColor.BLUE + " " + listFlags()); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Your.Flags") + ":" + ChatColor.GREEN + " " + listPlayerFlags(player.getName())); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Group.Flags") + ":" + ChatColor.RED + " " + listGroupFlags()); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Others.Flags") + ":" + ChatColor.RED + " " + listOtherPlayersFlags(player.getName())); } - public void removeAllGroupFlags(String group) { + public void removeAllGroupFlags(final String group) { groupFlags.remove(group); } - public void removeAllPlayerFlags(String player) { + public void removeAllPlayerFlags(final String player) { playerFlags.remove(player); } public Map save() { - Map root = new LinkedHashMap(); + final Map root = new LinkedHashMap(); root.put("PlayerFlags", playerFlags); root.put("GroupFlags", groupFlags); root.put("AreaFlags", cuboidFlags); return root; } - public boolean setFlag(String flag, FlagState state) { - if (state == FlagState.FALSE) + public boolean setFlag(final String flag, final FlagState state) { + if (state == FlagState.FALSE) { cuboidFlags.put(flag, false); - else if (state == FlagState.TRUE) + } else if (state == FlagState.TRUE) { cuboidFlags.put(flag, true); - else if (state == FlagState.NEITHER) - if (cuboidFlags.containsKey(flag)) + } else if (state == FlagState.NEITHER) { + if (cuboidFlags.containsKey(flag)) { cuboidFlags.remove(flag); + } + } return true; } - public boolean setGroupFlag(String group, String flag, FlagState state) { + public boolean setGroupFlag(String group, final String flag, final FlagState state) { group = group.toLowerCase(); - if (!groupFlags.containsKey(group)) + if (!groupFlags.containsKey(group)) { groupFlags.put(group, Collections.synchronizedMap(new HashMap())); - Map map = groupFlags.get(group); - if (state == FlagState.FALSE) + } + final Map map = groupFlags.get(group); + if (state == FlagState.FALSE) { map.put(flag, false); - else if (state == FlagState.TRUE) + } else if (state == FlagState.TRUE) { map.put(flag, true); - else if (state == FlagState.NEITHER) - if (map.containsKey(flag)) + } else if (state == FlagState.NEITHER) { + if (map.containsKey(flag)) { map.remove(flag); - if (map.isEmpty()) + } + } + if (map.isEmpty()) { groupFlags.remove(group); + } return true; } - public void setParent(FlagPermissions p) { + public void setParent(final FlagPermissions p) { parent = p; } - public boolean setPlayerFlag(String player, String flag, FlagState state) { + public boolean setPlayerFlag(String player, final String flag, final FlagState state) { player = player.toLowerCase(); - if (!playerFlags.containsKey(player)) + if (!playerFlags.containsKey(player)) { playerFlags.put(player, Collections.synchronizedMap(new HashMap())); - Map map = playerFlags.get(player); - if (state == FlagState.FALSE) + } + final Map map = playerFlags.get(player); + if (state == FlagState.FALSE) { map.put(flag, false); - else if (state == FlagState.TRUE) + } else if (state == FlagState.TRUE) { map.put(flag, true); - else if (state == FlagState.NEITHER) - if (map.containsKey(flag)) + } else if (state == FlagState.NEITHER) { + if (map.containsKey(flag)) { map.remove(flag); - if (map.isEmpty()) + } + } + if (map.isEmpty()) { playerFlags.remove(player); + } return true; } - private boolean groupCheck(String group, String flag, boolean def) { + private boolean groupCheck(final String group, final String flag, final boolean def) { if (groupFlags.containsKey(group)) { - Map gmap = groupFlags.get(group); - if (gmap.containsKey(flag)) + final Map gmap = groupFlags.get(group); + if (gmap.containsKey(flag)) { return gmap.get(flag); + } } - if (parent != null) + if (parent != null) { return parent.groupCheck(group, flag, def); + } return def; } - private boolean playerCheck(String player, String flag, boolean def) { + private boolean playerCheck(String player, final String flag, final boolean def) { player = player.toLowerCase(); if (playerFlags.containsKey(player)) { - Map pmap = playerFlags.get(player); - if (pmap.containsKey(flag)) + final Map pmap = playerFlags.get(player); + if (pmap.containsKey(flag)) { return pmap.get(flag); + } } - if (parent != null) + if (parent != null) { return parent.playerCheck(player, flag, def); + } return def; } public static enum FlagState { - TRUE, FALSE, + INVALID, NEITHER, - INVALID + TRUE } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/LeaseManager.java b/src/main/java/com/bekvon/bukkit/residence/protection/LeaseManager.java index 84b539b..7ac1024 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/LeaseManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/LeaseManager.java @@ -5,14 +5,6 @@ package com.bekvon.bukkit.residence.protection; -import org.bukkit.ChatColor; - -import com.bekvon.bukkit.residence.Residence; -import com.bekvon.bukkit.residence.economy.EconomyInterface; -import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent; -import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent.DeleteCause; -import com.bekvon.bukkit.residence.permissions.PermissionGroup; - import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -21,8 +13,15 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.economy.EconomyInterface; +import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent; +import com.bekvon.bukkit.residence.event.ResidenceDeleteEvent.DeleteCause; +import com.bekvon.bukkit.residence.permissions.PermissionGroup; + /** * * @author Administrator @@ -32,64 +31,125 @@ public class LeaseManager { private Map leaseExpireTime; ResidenceManager manager; + Residence plugin; - public LeaseManager(ResidenceManager m) { + public LeaseManager(final Residence plugin, final ResidenceManager m) { + this.plugin = plugin; manager = m; - leaseExpireTime = Collections - .synchronizedMap(new HashMap()); + leaseExpireTime = Collections.synchronizedMap(new HashMap()); } - public boolean leaseExpires(String area) { - return leaseExpireTime.containsKey(area); + public static LeaseManager load(final Residence plugin, final Map root, final ResidenceManager m) { + final LeaseManager l = new LeaseManager(plugin, m); + if (root != null) { + for (final Object val : root.values()) { + if (!(val instanceof Long)) { + root.remove(val); + } + } + l.leaseExpireTime = Collections.synchronizedMap(root); + } + return l; } - public Date getExpireTime(String area) { + public void doExpirations() { + final Set> set = leaseExpireTime.entrySet(); + final Iterator> it = set.iterator(); + while (it.hasNext()) { + final Entry next = it.next(); + if (next.getValue() <= System.currentTimeMillis()) { + final String resname = next.getKey(); + final ClaimedResidence res = plugin.getResidenceManager().getByName(resname); + if (res == null) { + it.remove(); + } else { + boolean renewed = false; + final String owner = res.getPermissions().getOwner(); + final PermissionGroup limits = plugin.getPermissionManager().getGroup(owner, res.getPermissions().getWorld()); + final int cost = this.getRenewCost(res); + if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().autoRenewLeases()) { + if (cost == 0) { + renewed = true; + } else if (res.getBank().hasEnough(cost)) { + res.getBank().subtract(cost); + renewed = true; + if (plugin.getConfigManager().debugEnabled()) { + System.out.println("Lease Renewed From Residence Bank: " + resname); + } + } else if (plugin.getEconomyManager().canAfford(owner, cost)) { + if (plugin.getEconomyManager().subtract(owner, cost)) { + renewed = true; + if (plugin.getConfigManager().debugEnabled()) { + System.out.println("Lease Renewed From Economy: " + resname); + } + } + } + } + if (!renewed) { + if (!plugin.getConfigManager().enabledRentSystem() || !plugin.getRentManager().isRented(resname)) { + final ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(null, res, DeleteCause.LEASE_EXPIRE); + plugin.getServ().getPluginManager().callEvent(resevent); + if (!resevent.isCancelled()) { + manager.removeResidence(next.getKey()); + it.remove(); + if (plugin.getConfigManager().debugEnabled()) { + System.out.println("Lease NOT removed, Removing: " + resname); + } + } + } + } else { + if (plugin.getConfigManager().enableEconomy() && plugin.getConfigManager().enableLeaseMoneyAccount()) { + plugin.getEconomyManager().add("Lease Money", cost); + } + if (plugin.getConfigManager().debugEnabled()) { + System.out.println("Lease Renew Old: " + next.getValue()); + } + next.setValue(System.currentTimeMillis() + daysToMs(limits.getLeaseGiveTime())); + if (plugin.getConfigManager().debugEnabled()) { + System.out.println("Lease Renew New: " + next.getValue()); + } + } + } + } + } + } + + public Date getExpireTime(final String area) { if (leaseExpireTime.containsKey(area)) { return new Date(leaseExpireTime.get(area)); } return null; } - public void removeExpireTime(String area) { + public int getRenewCost(final ClaimedResidence res) { + final PermissionGroup limits = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld()); + final double cost = limits.getLeaseRenewCost(); + final int amount = (int) Math.ceil(res.getTotalSize() * cost); + return amount; + } + + public boolean leaseExpires(final String area) { + return leaseExpireTime.containsKey(area); + } + + public void removeExpireTime(final String area) { leaseExpireTime.remove(area); } - public void setExpireTime(String area, int days) { - this.setExpireTime(null, area, days); - } - - public void setExpireTime(Player player, String area, int days) { - area = area.replace(".", "_"); - if (manager.getByName(area) != null) { - leaseExpireTime.put(area, - daysToMs(days) + System.currentTimeMillis()); - if (player != null) - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("LeaseRenew", - getExpireTime(area).toString())); - } else { - if (player != null) - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidArea")); - } - } - - public void renewArea(String area, Player player) { + public void renewArea(final String area, final Player player) { if (!leaseExpires(area)) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("LeaseNotExpire")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("LeaseNotExpire")); return; } - PermissionGroup limits = Residence.getPermissionManager().getGroup( - player); - int max = limits.getMaxLeaseTime(); - int add = limits.getLeaseGiveTime(); - int rem = daysRemaining(area); - EconomyInterface econ = Residence.getEconomyManager(); + final PermissionGroup limits = plugin.getPermissionManager().getGroup(player); + final int max = limits.getMaxLeaseTime(); + final int add = limits.getLeaseGiveTime(); + final int rem = daysRemaining(area); + final EconomyInterface econ = plugin.getEconomyManager(); if (econ != null) { - double cost = limits.getLeaseRenewCost(); - ClaimedResidence res = manager.getByName(area); - int amount = (int) Math.ceil((double) res.getTotalSize() * cost); + final double cost = limits.getLeaseRenewCost(); + final ClaimedResidence res = manager.getByName(area); + final int amount = (int) Math.ceil(res.getTotalSize() * cost); if (cost != 0D) { // Account account = // iConomy.getBank().getAccount(player.getName()); @@ -99,156 +159,38 @@ public class LeaseManager { */) { econ.subtract(player.getName(), amount); econ.add("Lease Money", amount); - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase( - "MoneyCharged", - ChatColor.YELLOW - + String.format("%d", amount) - + ChatColor.GREEN + "." - + ChatColor.YELLOW + econ.getName() - + ChatColor.GREEN)); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("MoneyCharged", + ChatColor.YELLOW + String.format("%d", amount) + ChatColor.GREEN + "." + ChatColor.YELLOW + econ.getName() + ChatColor.GREEN)); } else { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase( - "NotEnoughMoney")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotEnoughMoney")); return; } } } if (rem + add > max) { setExpireTime(player, area, max); - player.sendMessage(ChatColor.GOLD - + Residence.getLanguage().getPhrase("LeaseRenewMax")); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("LeaseRenew", - ChatColor.GREEN + "" + getExpireTime(area)) - + ChatColor.YELLOW); + player.sendMessage(ChatColor.GOLD + plugin.getLanguage().getPhrase("LeaseRenewMax")); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area)) + ChatColor.YELLOW); return; } Long get = leaseExpireTime.get(area); if (get != null) { get = get + daysToMs(add); leaseExpireTime.put(area, get); - } else + } else { leaseExpireTime.put(area, daysToMs(add)); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("LeaseRenew", - ChatColor.GREEN + "" + getExpireTime(area))); - } - - public int getRenewCost(ClaimedResidence res) { - PermissionGroup limits = Residence.getPermissionManager().getGroup( - res.getPermissions().getOwner(), - res.getPermissions().getWorld()); - double cost = limits.getLeaseRenewCost(); - int amount = (int) Math.ceil((double) res.getTotalSize() * cost); - return amount; - } - - private long daysToMs(int days) { - return (((long) days) * 24L * 60L * 60L * 1000L); - } - - private int msToDays(long ms) { - return (int) Math.ceil(((((double) ms / 1000D) / 60D) / 60D) / 24D); - } - - private int daysRemaining(String area) { - Long get = leaseExpireTime.get(area); - if (get <= System.currentTimeMillis()) - return 0; - return msToDays((int) (get - System.currentTimeMillis())); - } - - public void doExpirations() { - Set> set = leaseExpireTime.entrySet(); - Iterator> it = set.iterator(); - while (it.hasNext()) { - Entry next = it.next(); - if (next.getValue() <= System.currentTimeMillis()) { - String resname = next.getKey(); - ClaimedResidence res = Residence.getResidenceManager() - .getByName(resname); - if (res == null) { - it.remove(); - } else { - boolean renewed = false; - String owner = res.getPermissions().getOwner(); - PermissionGroup limits = Residence.getPermissionManager() - .getGroup(owner, res.getPermissions().getWorld()); - int cost = this.getRenewCost(res); - if (Residence.getConfigManager().enableEconomy() - && Residence.getConfigManager().autoRenewLeases()) { - if (cost == 0) { - renewed = true; - } else if (res.getBank().hasEnough(cost)) { - res.getBank().subtract(cost); - renewed = true; - if (Residence.getConfigManager().debugEnabled()) - System.out - .println("Lease Renewed From Residence Bank: " - + resname); - } else if (Residence.getEconomyManager().canAfford( - owner, cost)) { - if (Residence.getEconomyManager().subtract(owner, - cost)) { - renewed = true; - if (Residence.getConfigManager().debugEnabled()) - System.out - .println("Lease Renewed From Economy: " - + resname); - } - } - } - if (!renewed) { - if (!Residence.getConfigManager().enabledRentSystem() - || !Residence.getRentManager() - .isRented(resname)) { - ResidenceDeleteEvent resevent = new ResidenceDeleteEvent( - null, res, DeleteCause.LEASE_EXPIRE); - Residence.getServ().getPluginManager() - .callEvent(resevent); - if (!resevent.isCancelled()) { - manager.removeResidence(next.getKey()); - it.remove(); - if (Residence.getConfigManager().debugEnabled()) - System.out - .println("Lease NOT removed, Removing: " - + resname); - } - } - } else { - if (Residence.getConfigManager().enableEconomy() - && Residence.getConfigManager() - .enableLeaseMoneyAccount()) { - Residence.getEconomyManager().add("Lease Money", - cost); - } - if (Residence.getConfigManager().debugEnabled()) - System.out.println("Lease Renew Old: " - + next.getValue()); - next.setValue(System.currentTimeMillis() - + daysToMs(limits.getLeaseGiveTime())); - if (Residence.getConfigManager().debugEnabled()) - System.out.println("Lease Renew New: " - + next.getValue()); - } - } - } } + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseRenew", ChatColor.GREEN + "" + getExpireTime(area))); } public void resetLeases() { leaseExpireTime.clear(); - String[] list = manager.getResidenceList(); - for (int i = 0; i < list.length; i++) { - if (list[i] != null) { - ClaimedResidence res = Residence.getResidenceManager() - .getByName(list[i]); - PermissionGroup group = Residence.getPermissionManager() - .getGroup(res.getPermissions().getOwner(), - res.getPermissions().getWorld()); - this.setExpireTime(null, list[i], group.getLeaseGiveTime()); + final String[] list = manager.getResidenceList(); + for (final String element : list) { + if (element != null) { + final ClaimedResidence res = plugin.getResidenceManager().getByName(element); + final PermissionGroup group = plugin.getPermissionManager().getGroup(res.getPermissions().getOwner(), res.getPermissions().getWorld()); + this.setExpireTime(null, element, group.getLeaseGiveTime()); } } System.out.println("[Residence] - Set default leases."); @@ -258,23 +200,44 @@ public class LeaseManager { return leaseExpireTime; } - public void updateLeaseName(String oldName, String newName) { + public void setExpireTime(final Player player, String area, final int days) { + area = area.replace(".", "_"); + if (manager.getByName(area) != null) { + leaseExpireTime.put(area, daysToMs(days) + System.currentTimeMillis()); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("LeaseRenew", getExpireTime(area).toString())); + } + } else { + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidArea")); + } + } + } + + public void setExpireTime(final String area, final int days) { + this.setExpireTime(null, area, days); + } + + public void updateLeaseName(final String oldName, final String newName) { if (leaseExpireTime.containsKey(oldName)) { leaseExpireTime.put(newName, leaseExpireTime.get(oldName)); leaseExpireTime.remove(oldName); } } - public static LeaseManager load(Map root, ResidenceManager m) { - LeaseManager l = new LeaseManager(m); - if (root != null) { - for (Object val : root.values()) { - if (!(val instanceof Long)) { - root.remove(val); - } - } - l.leaseExpireTime = Collections.synchronizedMap(root); + private int daysRemaining(final String area) { + final Long get = leaseExpireTime.get(area); + if (get <= System.currentTimeMillis()) { + return 0; } - return l; + return msToDays((int) (get - System.currentTimeMillis())); + } + + private long daysToMs(final int days) { + return ((days) * 24L * 60L * 60L * 1000L); + } + + private int msToDays(final long ms) { + return (int) Math.ceil((((ms / 1000D) / 60D) / 60D) / 24D); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/PermissionListManager.java b/src/main/java/com/bekvon/bukkit/residence/protection/PermissionListManager.java index 0fd5bdd..b66cf49 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/PermissionListManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/PermissionListManager.java @@ -5,40 +5,74 @@ package com.bekvon.bukkit.residence.protection; -import org.bukkit.ChatColor; - -import com.bekvon.bukkit.residence.Residence; - import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import com.bekvon.bukkit.residence.Residence; + /** * * @author Administrator */ public class PermissionListManager { - private Map> lists; + private final Map> lists; + Residence plugin; - public PermissionListManager() { - lists = Collections - .synchronizedMap(new HashMap>()); + public PermissionListManager(final Residence plugin) { + this.plugin = plugin; + lists = Collections.synchronizedMap(new HashMap>()); } - public FlagPermissions getList(String player, String listname) { - Map get = lists.get(player); + @SuppressWarnings("unchecked") + public static PermissionListManager load(final Residence plugin, final Map root) { + final PermissionListManager p = new PermissionListManager(plugin); + if (root != null) { + for (final Entry players : root.entrySet()) { + try { + final Map value = (Map) players.getValue(); + final Map loadedMap = Collections.synchronizedMap(new HashMap()); + for (final Entry list : value.entrySet()) { + loadedMap.put(list.getKey(), FlagPermissions.load((Map) list.getValue())); + } + p.lists.put(players.getKey(), loadedMap); + } catch (final Exception ex) { + plugin.getLogger().warning(" - 玩家: " + players.getKey() + " 的权限列表载入失败..."); + } + } + } + return p; + } + + public void applyListToResidence(final Player player, final String listname, final String areaname, final boolean resadmin) { + final FlagPermissions list = this.getList(player.getName(), listname); + if (list == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList")); + return; + } + final ClaimedResidence res = plugin.getResidenceManager().getByName(areaname); + if (res == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); + return; + } + res.getPermissions().applyTemplate(player, list, resadmin); + } + + public FlagPermissions getList(final String player, final String listname) { + final Map get = lists.get(player); if (get == null) { return null; } return get.get(listname); } - public void makeList(Player player, String listname) { + public void makeList(final Player player, final String listname) { Map get = lists.get(player.getName()); if (get == null) { get = new HashMap(); @@ -46,117 +80,62 @@ public class PermissionListManager { } FlagPermissions perms = get.get(listname); if (perms == null) { - perms = new FlagPermissions(); + perms = new FlagPermissions(plugin); get.put(listname, perms); - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("ListCreate", listname)); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ListCreate", listname)); } else { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("ListExists")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ListExists")); } } - public void removeList(Player player, String listname) { - Map get = lists.get(player.getName()); - if (get == null) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidList")); - return; - } - FlagPermissions list = get.get(listname); + public void printList(final Player player, final String listname) { + final FlagPermissions list = this.getList(player.getName(), listname); if (list == null) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidList")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList")); return; } - get.remove(listname); - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("ListRemoved")); - } - - public void applyListToResidence(Player player, String listname, - String areaname, boolean resadmin) { - FlagPermissions list = this.getList(player.getName(), listname); - if (list == null) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidList")); - return; - } - ClaimedResidence res = Residence.getResidenceManager().getByName( - areaname); - if (res == null) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidResidence")); - return; - } - res.getPermissions().applyTemplate(player, list, resadmin); - } - - public void printList(Player player, String listname) { - FlagPermissions list = this.getList(player.getName(), listname); - if (list == null) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidList")); - return; - } - player.sendMessage(ChatColor.LIGHT_PURPLE - + "------Permission Template------"); - player.sendMessage(Residence.getLanguage().getPhrase("Name") + ": " - + ChatColor.GREEN + listname); + player.sendMessage(ChatColor.LIGHT_PURPLE + "------Permission Template------"); + player.sendMessage(plugin.getLanguage().getPhrase("Name") + ": " + ChatColor.GREEN + listname); list.printFlags(player); } + public void printLists(final Player player) { + final StringBuilder sbuild = new StringBuilder(); + final Map get = lists.get(player.getName()); + sbuild.append(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Lists") + ":" + ChatColor.DARK_AQUA + " "); + if (get != null) { + for (final Entry thislist : get.entrySet()) { + sbuild.append(thislist.getKey()).append(" "); + } + } + player.sendMessage(sbuild.toString()); + } + + public void removeList(final Player player, final String listname) { + final Map get = lists.get(player.getName()); + if (get == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList")); + return; + } + final FlagPermissions list = get.get(listname); + if (list == null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidList")); + return; + } + get.remove(listname); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ListRemoved")); + } + public Map save() { - Map root = new LinkedHashMap(); - for (Entry> players : lists - .entrySet()) { - Map saveMap = new LinkedHashMap(); - Map map = players.getValue(); - for (Entry list : map.entrySet()) { + final Map root = new LinkedHashMap(); + for (final Entry> players : lists.entrySet()) { + final Map saveMap = new LinkedHashMap(); + final Map map = players.getValue(); + for (final Entry list : map.entrySet()) { saveMap.put(list.getKey(), list.getValue().save()); } root.put(players.getKey(), saveMap); } return root; } - - @SuppressWarnings("unchecked") - public static PermissionListManager load(Map root) { - - PermissionListManager p = new PermissionListManager(); - if (root != null) { - for (Entry players : root.entrySet()) { - try { - Map value = (Map) players - .getValue(); - Map loadedMap = Collections - .synchronizedMap(new HashMap()); - for (Entry list : value.entrySet()) { - loadedMap.put(list.getKey(), FlagPermissions - .load((Map) list.getValue())); - } - p.lists.put(players.getKey(), loadedMap); - } catch (Exception ex) { - System.out - .println("[Residence] - Failed to load permission lists for player: " - + players.getKey()); - } - } - } - return p; - } - - public void printLists(Player player) { - StringBuilder sbuild = new StringBuilder(); - Map get = lists.get(player.getName()); - sbuild.append(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Lists") + ":" - + ChatColor.DARK_AQUA + " "); - if (get != null) { - for (Entry thislist : get.entrySet()) { - sbuild.append(thislist.getKey()).append(" "); - } - } - player.sendMessage(sbuild.toString()); - } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java b/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java index 04b9b40..0ea5d1a 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/ResidenceManager.java @@ -36,254 +36,299 @@ import com.bekvon.bukkit.residence.text.help.InformationPager; * @author Administrator */ public class ResidenceManager { - protected Map residences; - protected Map>> chunkResidences; - public ResidenceManager() { + protected Map residences; + + Residence plugin; + + public ResidenceManager(final Residence plugin) { + this.plugin = plugin; residences = new HashMap(); chunkResidences = new HashMap>>(); } @SuppressWarnings("unchecked") - public static ResidenceManager load(Map root) throws Exception { - ResidenceManager resm = new ResidenceManager(); - if (root == null) + public static ResidenceManager load(final Residence plugin, final Map root) throws Exception { + final ResidenceManager resm = new ResidenceManager(plugin); + if (root == null) { return resm; - for (World world : Residence.getServ().getWorlds()) { - Map reslist = (Map) root.get(world.getName()); - if (reslist != null) + } + for (final World world : plugin.getServ().getWorlds()) { + final Map reslist = (Map) root.get(world.getName()); + if (reslist != null) { try { - resm.chunkResidences.put(world.getName(), loadMap(reslist, resm)); - } catch (Exception ex) { - Residence.getLog().warning("载入世界: " + world.getName() + "的领地数据时发生错误!"); - if (Residence.getConfigManager().stopOnSaveError()) + resm.chunkResidences.put(world.getName(), loadMap(plugin, reslist, resm)); + } catch (final Exception ex) { + plugin.getLog().warning("载入世界: " + world.getName() + "的领地数据时发生错误!"); + if (plugin.getConfigManager().stopOnSaveError()) { throw (ex); + } } + } } return resm; } @SuppressWarnings("unchecked") - public static Map> loadMap(Map root, ResidenceManager resm) throws Exception { - Map> retRes = new HashMap>(); - if (root != null) - for (Entry res : root.entrySet()) + public static Map> loadMap(final Residence plugin, final Map root, final ResidenceManager resm) throws Exception { + final Map> retRes = new HashMap>(); + if (root != null) { + for (final Entry res : root.entrySet()) { try { - ClaimedResidence residence = ClaimedResidence.load((Map) res.getValue(), null); - for (ChunkRef chunk : getChunks(residence)) { - List ress = new ArrayList(); - if (retRes.containsKey(chunk)) + final ClaimedResidence residence = ClaimedResidence.load(plugin, (Map) res.getValue(), null); + for (final ChunkRef chunk : getChunks(residence)) { + final List ress = new ArrayList(); + if (retRes.containsKey(chunk)) { ress.addAll(retRes.get(chunk)); + } ress.add(res.getKey()); retRes.put(chunk, ress); } resm.residences.put(res.getKey(), residence); - } catch (Exception ex) { + } catch (final Exception ex) { System.out.print("[Residence] Failed to load residence (" + res.getKey() + ")! Reason:" + ex.getMessage() + " Error Log:"); Logger.getLogger(ResidenceManager.class.getName()).log(Level.SEVERE, null, ex); - if (Residence.getConfigManager().stopOnSaveError()) + if (plugin.getConfigManager().stopOnSaveError()) { throw (ex); + } } + } + } return retRes; } - private static List getChunks(ClaimedResidence res) { - List chunks = new ArrayList(); - for (CuboidArea area : res.getAreaArray()) + private static List getChunks(final ClaimedResidence res) { + final List chunks = new ArrayList(); + for (final CuboidArea area : res.getAreaArray()) { chunks.addAll(area.getChunks()); + } return chunks; } - public boolean addResidence(Player player, String name, Location loc1, Location loc2, boolean resadmin) { + public boolean addResidence(final Player player, final String name, final Location loc1, final Location loc2, final boolean resadmin) { return this.addResidence(player, player.getName(), name, loc1, loc2, resadmin); } - public boolean addResidence(Player player, String owner, String name, Location loc1, Location loc2, boolean resadmin) { - if (!Residence.validName(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters")); + public boolean addResidence(final Player player, final String owner, String name, final Location loc1, final Location loc2, final boolean resadmin) { + if (!plugin.validName(name)) { + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidNameCharacters")); + } return false; } if (loc1 == null || loc2 == null || !loc1.getWorld().getName().equals(loc2.getWorld().getName())) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("SelectPoints")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectPoints")); + } return false; } - PermissionGroup group = Residence.getPermissionManager().getGroup(owner, loc1.getWorld().getName()); - boolean createpermission = group.canCreateResidences() || (player == null ? true : player.hasPermission("residence.create")); + final PermissionGroup group = plugin.getPermissionManager().getGroup(owner, loc1.getWorld().getName()); + final boolean createpermission = group.canCreateResidences() || (player == null ? true : player.hasPermission("residence.create")); if (!createpermission && !resadmin) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } return false; } - if (player != null) + if (player != null) { if (getOwnedZoneCount(player.getName()) >= group.getMaxZones() && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceTooMany")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceTooMany")); return false; } + } CuboidArea newArea = new CuboidArea(loc1, loc2); - ClaimedResidence newRes = new ClaimedResidence(owner, loc1.getWorld().getName()); + final ClaimedResidence newRes = new ClaimedResidence(plugin, owner, loc1.getWorld().getName()); newRes.getPermissions().applyDefaultFlags(); newRes.setEnterMessage(group.getDefaultEnterMessage()); newRes.setLeaveMessage(group.getDefaultLeaveMessage()); - ResidenceCreationEvent resevent = new ResidenceCreationEvent(player, name, newRes, newArea); - Residence.getServ().getPluginManager().callEvent(resevent); - if (resevent.isCancelled()) + final ResidenceCreationEvent resevent = new ResidenceCreationEvent(player, name, newRes, newArea); + plugin.getServ().getPluginManager().callEvent(resevent); + if (resevent.isCancelled()) { return false; + } newArea = resevent.getPhysicalArea(); name = resevent.getResidenceName(); if (residences.containsKey(name)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyExists", ChatColor.YELLOW + name + ChatColor.RED)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceAlreadyExists", ChatColor.YELLOW + name + ChatColor.RED)); + } return false; } - if (player != null) + if (player != null) { newRes.addArea(player, newArea, "main", resadmin); - else + } else { newRes.addArea(newArea, "main"); + } if (newRes.getAreaCount() != 0) { residences.put(name, newRes); calculateChunks(name); - Residence.getLeaseManager().removeExpireTime(name); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceCreate", ChatColor.YELLOW + name + ChatColor.GREEN)); - if (Residence.getConfigManager().useLeases()) - if (player != null) - Residence.getLeaseManager().setExpireTime(player, name, group.getLeaseGiveTime()); - else - Residence.getLeaseManager().setExpireTime(name, group.getLeaseGiveTime()); + plugin.getLeaseManager().removeExpireTime(name); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceCreate", ChatColor.YELLOW + name + ChatColor.GREEN)); + } + if (plugin.getConfigManager().useLeases()) { + if (player != null) { + plugin.getLeaseManager().setExpireTime(player, name, group.getLeaseGiveTime()); + } else { + plugin.getLeaseManager().setExpireTime(name, group.getLeaseGiveTime()); + } + } return true; } return false; } - public boolean addResidence(String name, Location loc1, Location loc2) { + public boolean addResidence(final String name, final Location loc1, final Location loc2) { return this.addResidence(name, "Server Land", loc1, loc2); } - public boolean addResidence(String name, String owner, Location loc1, Location loc2) { + public boolean addResidence(final String name, final String owner, final Location loc1, final Location loc2) { return this.addResidence(null, owner, name, loc1, loc2, true); } - public void calculateChunks(String name) { - ClaimedResidence res = residences.get(name); + public void calculateChunks(final String name) { + final ClaimedResidence res = residences.get(name); if (res != null) { - String world = res.getWorld(); - if (chunkResidences.get(world) == null) + final String world = res.getWorld(); + if (chunkResidences.get(world) == null) { chunkResidences.put(world, new HashMap>()); - for (ChunkRef chunk : getChunks(res)) { - List ress = new ArrayList(); - if (chunkResidences.get(world).containsKey(chunk)) + } + for (final ChunkRef chunk : getChunks(res)) { + final List ress = new ArrayList(); + if (chunkResidences.get(world).containsKey(chunk)) { ress.addAll(chunkResidences.get(world).get(chunk)); + } ress.add(name); chunkResidences.get(world).put(chunk, ress); } } } - public String checkAreaCollision(CuboidArea newarea, ClaimedResidence parentResidence) { - Set> set = residences.entrySet(); - for (Entry entry : set) { - ClaimedResidence check = entry.getValue(); - if (check != parentResidence && check.checkCollision(newarea)) + public String checkAreaCollision(final CuboidArea newarea, final ClaimedResidence parentResidence) { + final Set> set = residences.entrySet(); + for (final Entry entry : set) { + final ClaimedResidence check = entry.getValue(); + if (check != parentResidence && check.checkCollision(newarea)) { return entry.getKey(); + } } return null; } - public ClaimedResidence getByLoc(Location loc) { - if (loc == null) + public ClaimedResidence getByLoc(final Location loc) { + if (loc == null) { return null; + } ClaimedResidence res = null; boolean found = false; - String world = loc.getWorld().getName(); - ChunkRef chunk = new ChunkRef(loc); - if (chunkResidences.get(world) != null) - if (chunkResidences.get(world).get(chunk) != null) - for (String key : chunkResidences.get(world).get(chunk)) { - ClaimedResidence entry = residences.get(key); + final String world = loc.getWorld().getName(); + final ChunkRef chunk = new ChunkRef(loc); + if (chunkResidences.get(world) != null) { + if (chunkResidences.get(world).get(chunk) != null) { + for (final String key : chunkResidences.get(world).get(chunk)) { + final ClaimedResidence entry = residences.get(key); if (entry.containsLoc(loc)) { res = entry; found = true; break; } } - if (!found) + } + } + if (!found) { return null; - if (res == null) + } + if (res == null) { return null; - ClaimedResidence subres = res.getSubzoneByLoc(loc); - if (subres == null) + } + final ClaimedResidence subres = res.getSubzoneByLoc(loc); + if (subres == null) { return res; + } return subres; } - public ClaimedResidence getByName(String name) { - if (name == null) + public ClaimedResidence getByName(final String name) { + if (name == null) { return null; - String[] split = name.split("\\."); - if (split.length == 1) + } + final String[] split = name.split("\\."); + if (split.length == 1) { return residences.get(name); + } ClaimedResidence res = residences.get(split[0]); - for (int i = 1; i < split.length; i++) - if (res != null) + for (int i = 1; i < split.length; i++) { + if (res != null) { res = res.getSubzone(split[i]); - else + } else { return null; + } + } return res; } - public String getNameByLoc(Location loc) { - if (loc == null) + public String getNameByLoc(final Location loc) { + if (loc == null) { return null; + } ClaimedResidence res = null; String name = null; boolean found = false; - String world = loc.getWorld().getName(); - ChunkRef chunk = new ChunkRef(loc); - if (chunkResidences.get(world) != null) - if (chunkResidences.get(world).get(chunk) != null) - for (String key : chunkResidences.get(world).get(chunk)) { - ClaimedResidence entry = residences.get(key); + final String world = loc.getWorld().getName(); + final ChunkRef chunk = new ChunkRef(loc); + if (chunkResidences.get(world) != null) { + if (chunkResidences.get(world).get(chunk) != null) { + for (final String key : chunkResidences.get(world).get(chunk)) { + final ClaimedResidence entry = residences.get(key); if (entry.containsLoc(loc)) { res = entry; found = true; break; } } - if (!found) + } + } + if (!found) { return null; - if (res == null) + } + if (res == null) { return null; + } name = res.getName(); - if (name == null) + if (name == null) { return null; - String szname = res.getSubzoneNameByLoc(loc); - if (szname != null) + } + final String szname = res.getSubzoneNameByLoc(loc); + if (szname != null) { return name + "." + szname; + } return name; } - public String getNameByRes(ClaimedResidence res) { - Set> set = residences.entrySet(); - for (Entry check : set) { - if (check.getValue() == res) + public String getNameByRes(final ClaimedResidence res) { + final Set> set = residences.entrySet(); + for (final Entry check : set) { + if (check.getValue() == res) { return check.getKey(); - String n = check.getValue().getSubzoneNameByRes(res); - if (n != null) + } + final String n = check.getValue().getSubzoneNameByRes(res); + if (n != null) { return check.getKey() + "." + n; + } } return null; } - public int getOwnedZoneCount(String player) { - Collection set = residences.values(); + public int getOwnedZoneCount(final String player) { + final Collection set = residences.values(); int count = 0; - for (ClaimedResidence res : set) - if (res.getPermissions().getOwner().equalsIgnoreCase(player)) + for (final ClaimedResidence res : set) { + if (res.getPermissions().getOwner().equalsIgnoreCase(player)) { count++; + } + } return count; } @@ -295,171 +340,182 @@ public class ResidenceManager { return this.getResidenceList(true, true).toArray(new String[0]); } - public ArrayList getResidenceList(boolean showhidden, boolean showsubzones) { + public ArrayList getResidenceList(final boolean showhidden, final boolean showsubzones) { return this.getResidenceList(null, showhidden, showsubzones, false); } - public ArrayList getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones) { + public ArrayList getResidenceList(final String targetplayer, final boolean showhidden, final boolean showsubzones) { return this.getResidenceList(targetplayer, showhidden, showsubzones, false); } - public ArrayList getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones, boolean formattedOutput) { - ArrayList list = new ArrayList(); - for (Entry res : residences.entrySet()) + public ArrayList getResidenceList(final String targetplayer, final boolean showhidden, final boolean showsubzones, final boolean formattedOutput) { + final ArrayList list = new ArrayList(); + for (final Entry res : residences.entrySet()) { this.getResidenceList(targetplayer, showhidden, showsubzones, "", res.getKey(), res.getValue(), list, formattedOutput); + } return list; } - public void giveResidence(Player reqPlayer, String targPlayer, String residence, boolean resadmin) { - ClaimedResidence res = getByName(residence); + public void giveResidence(final Player reqPlayer, final String targPlayer, final String residence, final boolean resadmin) { + final ClaimedResidence res = getByName(residence); if (res == null) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); return; } if (!res.getPermissions().hasResidencePermission(reqPlayer, true) && !resadmin) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } - Player giveplayer = Residence.getServ().getPlayer(targPlayer); + final Player giveplayer = plugin.getServ().getPlayer(targPlayer); if (giveplayer == null || !giveplayer.isOnline()) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NotOnline")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NotOnline")); return; } - CuboidArea[] areas = res.getAreaArray(); - PermissionGroup g = Residence.getPermissionManager().getGroup(giveplayer); + final CuboidArea[] areas = res.getAreaArray(); + final PermissionGroup g = plugin.getPermissionManager().getGroup(giveplayer); if (areas.length > g.getMaxPhysicalPerResidence() && !resadmin) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceGiveLimits")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceGiveLimits")); return; } if (getOwnedZoneCount(giveplayer.getName()) >= g.getMaxZones() && !resadmin) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceGiveLimits")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceGiveLimits")); return; } - if (!resadmin) - for (CuboidArea area : areas) + if (!resadmin) { + for (final CuboidArea area : areas) { if (!g.inLimits(area)) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceGiveLimits")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceGiveLimits")); return; } + } + } res.getPermissions().setOwner(giveplayer.getName(), true); // Fix phrases here reqPlayer.sendMessage( - ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceGive", ChatColor.YELLOW + residence + ChatColor.GREEN + "." + ChatColor.YELLOW + giveplayer.getName() + ChatColor.GREEN)); - giveplayer.sendMessage(Residence.getLanguage().getPhrase("ResidenceRecieve", ChatColor.GREEN + residence + ChatColor.YELLOW + "." + ChatColor.GREEN + reqPlayer.getName() + ChatColor.YELLOW)); + ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceGive", ChatColor.YELLOW + residence + ChatColor.GREEN + "." + ChatColor.YELLOW + giveplayer.getName() + ChatColor.GREEN)); + giveplayer.sendMessage(plugin.getLanguage().getPhrase("ResidenceRecieve", ChatColor.GREEN + residence + ChatColor.YELLOW + "." + ChatColor.GREEN + reqPlayer.getName() + ChatColor.YELLOW)); } - public void listAllResidences(Player player, int page) { + public void listAllResidences(final Player player, final int page) { this.listAllResidences(player, page, false); } - public void listAllResidences(Player player, int page, boolean showhidden) { + public void listAllResidences(final Player player, final int page, final boolean showhidden) { this.listAllResidences(player, page, showhidden, false); } - public void listAllResidences(Player player, int page, boolean showhidden, boolean showsubzones) { - if (showhidden && !Residence.isResAdminOn(player)) + public void listAllResidences(final Player player, final int page, boolean showhidden, final boolean showsubzones) { + if (showhidden && !plugin.isResAdminOn(player)) { showhidden = false; - InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences"), this.getResidenceList(null, showhidden, showsubzones, true), page); + } + InformationPager.printInfo(plugin, player, plugin.getLanguage().getPhrase("Residences"), this.getResidenceList(null, showhidden, showsubzones, true), page); } - public void listResidences(Player player) { + public void listResidences(final Player player) { this.listResidences(player, player.getName(), 1); } - public void listResidences(Player player, int page) { + public void listResidences(final Player player, final int page) { this.listResidences(player, player.getName(), page); } - public void listResidences(Player player, int page, boolean showhidden) { + public void listResidences(final Player player, final int page, final boolean showhidden) { this.listResidences(player, player.getName(), page, showhidden); } - public void listResidences(Player player, String targetplayer) { + public void listResidences(final Player player, final String targetplayer) { this.listResidences(player, targetplayer, 1); } - public void listResidences(Player player, String targetplayer, int page) { + public void listResidences(final Player player, final String targetplayer, final int page) { this.listResidences(player, targetplayer, page, false); } - public void listResidences(Player player, String targetplayer, int page, boolean showhidden) { + public void listResidences(final Player player, final String targetplayer, final int page, final boolean showhidden) { this.listResidences(player, targetplayer, page, showhidden, false); } - public void listResidences(Player player, String targetplayer, int page, boolean showhidden, boolean showsubzones) { - if (showhidden && !Residence.isResAdminOn(player) && !player.getName().equals(targetplayer)) + public void listResidences(final Player player, final String targetplayer, final int page, boolean showhidden, final boolean showsubzones) { + if (showhidden && !plugin.isResAdminOn(player) && !player.getName().equals(targetplayer)) { showhidden = false; - InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences") + " - " + targetplayer, this.getResidenceList(targetplayer, showhidden, showsubzones, true), page); + } + InformationPager.printInfo(plugin, player, plugin.getLanguage().getPhrase("Residences") + " - " + targetplayer, this.getResidenceList(targetplayer, showhidden, showsubzones, true), page); } - public void mirrorPerms(Player reqPlayer, String targetArea, String sourceArea, boolean resadmin) { - ClaimedResidence reciever = this.getByName(targetArea); - ClaimedResidence source = this.getByName(sourceArea); + public void mirrorPerms(final Player reqPlayer, final String targetArea, final String sourceArea, final boolean resadmin) { + final ClaimedResidence reciever = this.getByName(targetArea); + final ClaimedResidence source = this.getByName(sourceArea); if (source == null || reciever == null) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); return; } - if (!resadmin) + if (!resadmin) { if (!reciever.getPermissions().hasResidencePermission(reqPlayer, true) || !source.getPermissions().hasResidencePermission(reqPlayer, true)) { - reqPlayer.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + reqPlayer.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } + } reciever.getPermissions().applyTemplate(reqPlayer, source.getPermissions(), resadmin); } - public void printAreaInfo(String areaname, Player player) { - ClaimedResidence res = this.getByName(areaname); + public void printAreaInfo(final String areaname, final Player player) { + final ClaimedResidence res = this.getByName(areaname); if (res == null) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); return; } - ResidencePermissions perms = res.getPermissions(); - if (Residence.getConfigManager().enableEconomy()) - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Residence") + ":" + ChatColor.DARK_GREEN + " " + areaname + " " + ChatColor.YELLOW + "Bank: " + ChatColor.GOLD + final ResidencePermissions perms = res.getPermissions(); + if (plugin.getConfigManager().enableEconomy()) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Residence") + ":" + ChatColor.DARK_GREEN + " " + areaname + " " + ChatColor.YELLOW + "Bank: " + ChatColor.GOLD + res.getBank().getStoredMoney()); - else - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Residence") + ":" + ChatColor.DARK_GREEN + " " + areaname); - if (Residence.getConfigManager().enabledRentSystem() && Residence.getRentManager().isRented(areaname)) - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Owner") + ":" + ChatColor.RED + " " + perms.getOwner() + ChatColor.YELLOW + " Rented by: " + ChatColor.RED - + Residence.getRentManager().getRentingPlayer(areaname)); - else - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Owner") + ":" + ChatColor.RED + " " + perms.getOwner() + ChatColor.YELLOW + " - " - + Residence.getLanguage().getPhrase("World") + ": " + ChatColor.RED + perms.getWorld()); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Flags") + ":" + ChatColor.BLUE + " " + perms.listFlags()); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Your.Flags") + ": " + ChatColor.GREEN + perms.listPlayerFlags(player.getName())); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Group.Flags") + ":" + ChatColor.RED + " " + perms.listGroupFlags()); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Others.Flags") + ":" + ChatColor.RED + " " + perms.listOtherPlayersFlags(player.getName())); - String aid = res.getAreaIDbyLoc(player.getLocation()); - if (aid != null) - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("CurrentArea") + ": " + ChatColor.GOLD + aid); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("Total.Size") + ":" + ChatColor.LIGHT_PURPLE + " " + res.getTotalSize()); - if (aid != null) { - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("CoordsT") + ": " + ChatColor.LIGHT_PURPLE - + Residence.getLanguage().getPhrase("CoordsTop", res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockX() + "." - + res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockY() + "." + res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockZ())); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("CoordsB") + ": " + ChatColor.LIGHT_PURPLE - + Residence.getLanguage().getPhrase("CoordsBottom", res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockX() + "." - + res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockY() + "." + res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockZ())); - if (Residence.isUseWorldEdit()) - WECUI.UPDATESELECT(res, player); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Residence") + ":" + ChatColor.DARK_GREEN + " " + areaname); + } + if (plugin.getConfigManager().enabledRentSystem() && plugin.getRentManager().isRented(areaname)) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Owner") + ":" + ChatColor.RED + " " + perms.getOwner() + ChatColor.YELLOW + " Rented by: " + ChatColor.RED + + plugin.getRentManager().getRentingPlayer(areaname)); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Owner") + ":" + ChatColor.RED + " " + perms.getOwner() + ChatColor.YELLOW + " - " + + plugin.getLanguage().getPhrase("World") + ": " + ChatColor.RED + perms.getWorld()); + } + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Flags") + ":" + ChatColor.BLUE + " " + perms.listFlags()); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Your.Flags") + ": " + ChatColor.GREEN + perms.listPlayerFlags(player.getName())); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Group.Flags") + ":" + ChatColor.RED + " " + perms.listGroupFlags()); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Others.Flags") + ":" + ChatColor.RED + " " + perms.listOtherPlayersFlags(player.getName())); + final String aid = res.getAreaIDbyLoc(player.getLocation()); + if (aid != null) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("CurrentArea") + ": " + ChatColor.GOLD + aid); + } + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Total.Size") + ":" + ChatColor.LIGHT_PURPLE + " " + res.getTotalSize()); + if (aid != null) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("CoordsT") + ": " + ChatColor.LIGHT_PURPLE + + plugin.getLanguage().getPhrase("CoordsTop", res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockX() + "." + + res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockY() + "." + res.getAreaByLoc(player.getLocation()).getHighLoc().getBlockZ())); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("CoordsB") + ": " + ChatColor.LIGHT_PURPLE + + plugin.getLanguage().getPhrase("CoordsBottom", res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockX() + "." + + res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockY() + "." + res.getAreaByLoc(player.getLocation()).getLowLoc().getBlockZ())); + if (plugin.isUseWorldEdit()) { + WECUI.UPDATESELECT(res, player); + } + } + if (plugin.getConfigManager().useLeases() && plugin.getLeaseManager().leaseExpires(areaname)) { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("LeaseExpire") + ":" + ChatColor.GREEN + " " + plugin.getLeaseManager().getExpireTime(areaname)); } - if (Residence.getConfigManager().useLeases() && Residence.getLeaseManager().leaseExpires(areaname)) - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("LeaseExpire") + ":" + ChatColor.GREEN + " " + Residence.getLeaseManager().getExpireTime(areaname)); } - public void removeAllByOwner(Player player, String owner) { + public void removeAllByOwner(final Player player, final String owner) { this.removeAllByOwner(player, owner, residences); } - public void removeAllByOwner(String owner) { + public void removeAllByOwner(final String owner) { this.removeAllByOwner(null, owner, residences); } - public void removeAllFromWorld(CommandSender sender, String world) { + public void removeAllFromWorld(final CommandSender sender, final String world) { int count = 0; - Iterator it = residences.values().iterator(); + final Iterator it = residences.values().iterator(); while (it.hasNext()) { - ClaimedResidence next = it.next(); + final ClaimedResidence next = it.next(); if (next.getWorld().equals(world)) { it.remove(); count++; @@ -467,173 +523,195 @@ public class ResidenceManager { } chunkResidences.remove(world); chunkResidences.put(world, new HashMap>()); - if (count == 0) + if (count == 0) { sender.sendMessage(ChatColor.RED + "No residences found in world: " + ChatColor.YELLOW + world); - else + } else { sender.sendMessage(ChatColor.RED + "Removed " + ChatColor.YELLOW + count + ChatColor.RED + " residences in world: " + ChatColor.YELLOW + world); + } } - public void removeChunkList(String name) { - ClaimedResidence res = residences.get(name); + public void removeChunkList(final String name) { + final ClaimedResidence res = residences.get(name); if (res != null) { - String world = res.getWorld(); - if (chunkResidences.get(world) != null) - for (ChunkRef chunk : getChunks(res)) { - List ress = new ArrayList(); - if (chunkResidences.get(world).containsKey(chunk)) + final String world = res.getWorld(); + if (chunkResidences.get(world) != null) { + for (final ChunkRef chunk : getChunks(res)) { + final List ress = new ArrayList(); + if (chunkResidences.get(world).containsKey(chunk)) { ress.addAll(chunkResidences.get(world).get(chunk)); + } ress.remove(name); chunkResidences.get(world).put(chunk, ress); } + } } } - public void removeResidence(Player player, String name, boolean resadmin) { - ClaimedResidence res = this.getByName(name); + public void removeResidence(final Player player, final String name, final boolean resadmin) { + final ClaimedResidence res = this.getByName(name); if (res != null) { - if (player != null && !resadmin) + if (player != null && !resadmin) { if (!res.getPermissions().hasResidencePermission(player, true) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } - ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE); - Residence.getServ().getPluginManager().callEvent(resevent); - if (resevent.isCancelled()) + } + final ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE); + plugin.getServ().getPluginManager().callEvent(resevent); + if (resevent.isCancelled()) { return; - ClaimedResidence parent = res.getParent(); + } + final ClaimedResidence parent = res.getParent(); if (parent == null) { removeChunkList(name); residences.remove(name); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceRemove", ChatColor.YELLOW + name + ChatColor.GREEN)); + } } else { - String[] split = name.split("\\."); - if (player != null) + final String[] split = name.split("\\."); + if (player != null) { parent.removeSubzone(player, split[split.length - 1], true); - else + } else { parent.removeSubzone(split[split.length - 1]); + } } - // Residence.getLeaseManager().removeExpireTime(name); - causing + // plugin.getLeaseManager().removeExpireTime(name); - causing // concurrent modification exception in lease manager... worked // around for now - Residence.getRentManager().removeRentable(name); + plugin.getRentManager().removeRentable(name); - } else if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + } else if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); + } } - public void removeResidence(String name) { + public void removeResidence(final String name) { this.removeResidence(null, name, true); } - public boolean renameResidence(Player player, String oldName, String newName, boolean resadmin) { - if (!Residence.validName(newName)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidNameCharacters")); + public boolean renameResidence(final Player player, final String oldName, final String newName, final boolean resadmin) { + if (!plugin.validName(newName)) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidNameCharacters")); return false; } - ClaimedResidence res = this.getByName(oldName); + final ClaimedResidence res = this.getByName(oldName); if (res == null) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidResidence")); + } return false; } if (res.getPermissions().hasResidencePermission(player, true) || resadmin) { if (res.getParent() == null) { if (residences.containsKey(newName)) { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("ResidenceAlreadyExists", ChatColor.YELLOW + newName + ChatColor.RED)); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("ResidenceAlreadyExists", ChatColor.YELLOW + newName + ChatColor.RED)); + } return false; } - ResidenceRenameEvent resevent = new ResidenceRenameEvent(res, newName, oldName); - Residence.getServ().getPluginManager().callEvent(resevent); + final ResidenceRenameEvent resevent = new ResidenceRenameEvent(res, newName, oldName); + plugin.getServ().getPluginManager().callEvent(resevent); removeChunkList(oldName); residences.put(newName, res); residences.remove(oldName); calculateChunks(newName); - if (Residence.getConfigManager().useLeases()) - Residence.getLeaseManager().updateLeaseName(oldName, newName); - if (Residence.getConfigManager().enabledRentSystem()) - Residence.getRentManager().updateRentableName(oldName, newName); - if (player != null) + if (plugin.getConfigManager().useLeases()) { + plugin.getLeaseManager().updateLeaseName(oldName, newName); + } + if (plugin.getConfigManager().enabledRentSystem()) { + plugin.getRentManager().updateRentableName(oldName, newName); + } + if (player != null) { player.sendMessage( - ChatColor.GREEN + Residence.getLanguage().getPhrase("ResidenceRename", ChatColor.YELLOW + oldName + ChatColor.GREEN + "." + ChatColor.YELLOW + newName + ChatColor.GREEN)); + ChatColor.GREEN + plugin.getLanguage().getPhrase("ResidenceRename", ChatColor.YELLOW + oldName + ChatColor.GREEN + "." + ChatColor.YELLOW + newName + ChatColor.GREEN)); + } return true; } else { - String[] oldname = oldName.split("\\."); - ClaimedResidence parent = res.getParent(); + final String[] oldname = oldName.split("\\."); + final ClaimedResidence parent = res.getParent(); return parent.renameSubzone(player, oldname[oldname.length - 1], newName, resadmin); } } else { - if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); + } return false; } } - public boolean renameResidence(String oldName, String newName) { + public boolean renameResidence(final String oldName, final String newName) { return this.renameResidence(null, oldName, newName, true); } public Map save() { - Map worldmap = new LinkedHashMap(); - for (World world : Residence.getServ().getWorlds()) { - Map resmap = new LinkedHashMap(); - for (Entry res : residences.entrySet()) - if (res.getValue().getWorld().equals(world.getName())) + final Map worldmap = new LinkedHashMap(); + for (final World world : plugin.getServ().getWorlds()) { + final Map resmap = new LinkedHashMap(); + for (final Entry res : residences.entrySet()) { + if (res.getValue().getWorld().equals(world.getName())) { try { resmap.put(res.getKey(), res.getValue().save()); - } catch (Exception ex) { + } catch (final Exception ex) { System.out.println("[Residence] Failed to save residence (" + res.getKey() + ")!"); Logger.getLogger(ResidenceManager.class.getName()).log(Level.SEVERE, null, ex); } + } + } worldmap.put(world.getName(), resmap); } return worldmap; } - private void getResidenceList(String targetplayer, boolean showhidden, boolean showsubzones, String parentzone, String resname, ClaimedResidence res, ArrayList list, - boolean formattedOutput) { - boolean hidden = res.getPermissions().has("hidden", false); + private void getResidenceList(final String targetplayer, final boolean showhidden, final boolean showsubzones, final String parentzone, final String resname, final ClaimedResidence res, + final ArrayList list, final boolean formattedOutput) { + final boolean hidden = res.getPermissions().has("hidden", false); if ((showhidden) || (!showhidden && !hidden)) { - if (targetplayer == null || res.getPermissions().getOwner().equalsIgnoreCase(targetplayer)) - if (formattedOutput) - list.add(ChatColor.GREEN + parentzone + resname + ChatColor.YELLOW + " - " + Residence.getLanguage().getPhrase("World") + ": " + res.getWorld()); - else + if (targetplayer == null || res.getPermissions().getOwner().equalsIgnoreCase(targetplayer)) { + if (formattedOutput) { + list.add(ChatColor.GREEN + parentzone + resname + ChatColor.YELLOW + " - " + plugin.getLanguage().getPhrase("World") + ": " + res.getWorld()); + } else { list.add(parentzone + resname); - if (showsubzones) - for (Entry sz : res.subzones.entrySet()) + } + } + if (showsubzones) { + for (final Entry sz : res.subzones.entrySet()) { this.getResidenceList(targetplayer, showhidden, showsubzones, parentzone + resname + ".", sz.getKey(), sz.getValue(), list, formattedOutput); + } + } } } - private void removeAllByOwner(Player player, String owner, Map resholder) { - Iterator it = resholder.values().iterator(); + private void removeAllByOwner(final Player player, final String owner, final Map resholder) { + final Iterator it = resholder.values().iterator(); while (it.hasNext()) { - ClaimedResidence res = it.next(); + final ClaimedResidence res = it.next(); if (res.getOwner().equalsIgnoreCase(owner)) { - ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE); - Residence.getServ().getPluginManager().callEvent(resevent); - if (resevent.isCancelled()) + final ResidenceDeleteEvent resevent = new ResidenceDeleteEvent(player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE); + plugin.getServ().getPluginManager().callEvent(resevent); + if (resevent.isCancelled()) { return; + } removeChunkList(res.getName()); it.remove(); - } else + } else { this.removeAllByOwner(player, owner, res.subzones); + } } } public static final class ChunkRef { - private final int z; - private final int x; - public ChunkRef(int x, int z) { + private final int z; + + public ChunkRef(final int x, final int z) { this.x = x; this.z = z; } - public ChunkRef(Location loc) { + public ChunkRef(final Location loc) { this.x = getChunkCoord(loc.getBlockX()); this.z = getChunkCoord(loc.getBlockZ()); } @@ -645,13 +723,16 @@ public class ResidenceManager { @Override public boolean equals(final Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; - ChunkRef other = (ChunkRef) obj; + } + final ChunkRef other = (ChunkRef) obj; return this.x == other.x && this.z == other.z; } @@ -665,7 +746,7 @@ public class ResidenceManager { */ @Override public String toString() { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append("{ x: ").append(x).append(", z: ").append(z).append(" }"); return sb.toString(); } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java b/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java index 8ef3116..2727f5c 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/ResidencePermissions.java @@ -31,148 +31,186 @@ public class ResidencePermissions extends FlagPermissions { protected String owner; - protected String world; protected ClaimedResidence residence; + protected String world; + Residence plugin; - public ResidencePermissions(ClaimedResidence res, String creator, String inworld) { - this(res); + public ResidencePermissions(final Residence plugin, final ClaimedResidence res) { + super(plugin); + this.plugin = plugin; + residence = res; + } + + public ResidencePermissions(final Residence plugin, final ClaimedResidence res, final String creator, final String inworld) { + this(plugin, res); owner = creator; world = inworld; } - private ResidencePermissions(ClaimedResidence res) { - residence = res; - } - - public static ResidencePermissions load(ClaimedResidence res, Map root) throws Exception { - ResidencePermissions newperms = new ResidencePermissions(res); + public static ResidencePermissions load(final Residence plugin, final ClaimedResidence res, final Map root) throws Exception { + final ResidencePermissions newperms = new ResidencePermissions(plugin, res); newperms.owner = (String) root.get("Owner"); - if (newperms.owner == null) - newperms.owner = (String) root.get("OwnerLastKnownName"); if (newperms.owner == null) { - Residence.getLog().warning("发现未知所有者的领地,转换为Server Land..."); + newperms.owner = (String) root.get("OwnerLastKnownName"); + } + if (newperms.owner == null) { + plugin.getLog().warning("发现未知所有者的领地,转换为Server Land..."); newperms.owner = "Server Land"; } newperms.world = (String) root.get("World"); FlagPermissions.load(root, newperms); - if (newperms.owner == null) + if (newperms.owner == null) { throw new Exception("错误的Owner数据..."); - if (newperms.world == null) + } + if (newperms.world == null) { throw new Exception("错误的World数据..."); - if (newperms.playerFlags == null) + } + if (newperms.playerFlags == null) { throw new Exception("错误的PlayerFlags数据..."); - if (newperms.groupFlags == null) + } + if (newperms.groupFlags == null) { throw new Exception("错误的GroupFlags数据..."); - if (newperms.cuboidFlags == null) + } + if (newperms.cuboidFlags == null) { throw new Exception("错误的CuboidFlags数据..."); + } newperms.fixNames(); return newperms; } public void applyDefaultFlags() { - PermissionManager gm = Residence.getPermissionManager(); - PermissionGroup group = gm.getGroup(owner, world); - Set> dflags = group.getDefaultResidenceFlags(); - Set> dcflags = group.getDefaultCreatorFlags(); - Set>> dgflags = group.getDefaultGroupFlags(); + final PermissionManager gm = plugin.getPermissionManager(); + final PermissionGroup group = gm.getGroup(owner, world); + final Set> dflags = group.getDefaultResidenceFlags(); + final Set> dcflags = group.getDefaultCreatorFlags(); + final Set>> dgflags = group.getDefaultGroupFlags(); this.applyGlobalDefaults(); - for (Entry next : dflags) - if (this.checkValidFlag(next.getKey(), true)) - if (next.getValue()) + for (final Entry next : dflags) { + if (this.checkValidFlag(next.getKey(), true)) { + if (next.getValue()) { this.setFlag(next.getKey(), FlagState.TRUE); - else + } else { this.setFlag(next.getKey(), FlagState.FALSE); - for (Entry next : dcflags) - if (this.checkValidFlag(next.getKey(), false)) - if (next.getValue()) + } + } + } + for (final Entry next : dcflags) { + if (this.checkValidFlag(next.getKey(), false)) { + if (next.getValue()) { this.setPlayerFlag(owner, next.getKey(), FlagState.TRUE); - else + } else { this.setPlayerFlag(owner, next.getKey(), FlagState.FALSE); - for (Entry> entry : dgflags) { - Map value = entry.getValue(); - for (Entry flag : value.entrySet()) - if (flag.getValue()) + } + } + } + for (final Entry> entry : dgflags) { + final Map value = entry.getValue(); + for (final Entry flag : value.entrySet()) { + if (flag.getValue()) { this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE); - else + } else { this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE); + } + } } } - public void applyDefaultFlags(Player player, boolean resadmin) { + public void applyDefaultFlags(final Player player, final boolean resadmin) { if (this.hasResidencePermission(player, true) || resadmin) { this.applyDefaultFlags(); - player.sendMessage(ChatColor.YELLOW + Residence.getLanguage().getPhrase("FlagsDefault")); - } else - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("FlagsDefault")); + } else { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("NoPermission")); + } } public void applyGlobalDefaults() { this.clearFlags(); - FlagPermissions gRD = Residence.getConfigManager().getGlobalResidenceDefaultFlags(); - FlagPermissions gCD = Residence.getConfigManager().getGlobalCreatorDefaultFlags(); - Map gGD = Residence.getConfigManager().getGlobalGroupDefaultFlags(); - for (Entry entry : gRD.cuboidFlags.entrySet()) - if (entry.getValue()) + final FlagPermissions gRD = plugin.getConfigManager().getGlobalResidenceDefaultFlags(); + final FlagPermissions gCD = plugin.getConfigManager().getGlobalCreatorDefaultFlags(); + final Map gGD = plugin.getConfigManager().getGlobalGroupDefaultFlags(); + for (final Entry entry : gRD.cuboidFlags.entrySet()) { + if (entry.getValue()) { this.setFlag(entry.getKey(), FlagState.TRUE); - else + } else { this.setFlag(entry.getKey(), FlagState.FALSE); - for (Entry entry : gCD.cuboidFlags.entrySet()) - if (entry.getValue()) + } + } + for (final Entry entry : gCD.cuboidFlags.entrySet()) { + if (entry.getValue()) { this.setPlayerFlag(owner, entry.getKey(), FlagState.TRUE); - else + } else { this.setPlayerFlag(owner, entry.getKey(), FlagState.FALSE); - for (Entry entry : gGD.entrySet()) - for (Entry flag : entry.getValue().cuboidFlags.entrySet()) - if (flag.getValue()) + } + } + for (final Entry entry : gGD.entrySet()) { + for (final Entry flag : entry.getValue().cuboidFlags.entrySet()) { + if (flag.getValue()) { this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.TRUE); - else + } else { this.setGroupFlag(entry.getKey(), flag.getKey(), FlagState.FALSE); + } + } + } } - public void applyTemplate(Player player, FlagPermissions list, boolean resadmin) { + public void applyTemplate(final Player player, final FlagPermissions list, boolean resadmin) { if (player != null) { if (!player.getName().equals(owner) && !resadmin) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return; } - } else + } else { resadmin = true; - PermissionGroup group = Residence.getPermissionManager().getGroup(owner, world); - for (Entry flag : list.cuboidFlags.entrySet()) - if (group.hasFlagAccess(flag.getKey()) || resadmin) + } + final PermissionGroup group = plugin.getPermissionManager().getGroup(owner, world); + for (final Entry flag : list.cuboidFlags.entrySet()) { + if (group.hasFlagAccess(flag.getKey()) || resadmin) { this.cuboidFlags.put(flag.getKey(), flag.getValue()); - else if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED)); - for (Entry> plists : list.playerFlags.entrySet()) - for (Entry flag : plists.getValue().entrySet()) + } else if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED)); + } + } + for (final Entry> plists : list.playerFlags.entrySet()) { + for (final Entry flag : plists.getValue().entrySet()) { if (group.hasFlagAccess(flag.getKey()) || resadmin) { - if (!this.playerFlags.containsKey(plists.getKey())) + if (!this.playerFlags.containsKey(plists.getKey())) { this.playerFlags.put(plists.getKey(), Collections.synchronizedMap(new HashMap())); + } this.playerFlags.get(plists.getKey()).put(flag.getKey(), flag.getValue()); - } else if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED)); - for (Entry> glists : list.groupFlags.entrySet()) - for (Entry flag : glists.getValue().entrySet()) + } else if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED)); + } + } + } + for (final Entry> glists : list.groupFlags.entrySet()) { + for (final Entry flag : glists.getValue().entrySet()) { if (group.hasFlagAccess(flag.getKey()) || resadmin) { - if (!this.groupFlags.containsKey(glists.getKey())) + if (!this.groupFlags.containsKey(glists.getKey())) { this.groupFlags.put(glists.getKey(), Collections.synchronizedMap(new HashMap())); + } this.groupFlags.get(glists.getKey()).put(flag.getKey(), flag.getValue()); - } else if (player != null) - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED)); - if (player != null) - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("PermissionsApply")); + } else if (player != null) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("FlagSetDeny", ChatColor.YELLOW + flag.getKey() + ChatColor.RED)); + } + } + } + if (player != null) { + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("PermissionsApply")); + } } public void fixNames() { - ArrayList fixNames = new ArrayList(); - Iterator>> it = playerFlags.entrySet().iterator(); + final ArrayList fixNames = new ArrayList(); + final Iterator>> it = playerFlags.entrySet().iterator(); while (it.hasNext()) { - String name = it.next().getKey(); - if (!name.equals(name.toLowerCase())) + final String name = it.next().getKey(); + if (!name.equals(name.toLowerCase())) { fixNames.add(name); + } } - for (String name : fixNames) { - Map get = playerFlags.get(name); + for (final String name : fixNames) { + final Map get = playerFlags.get(name); playerFlags.remove(name); playerFlags.put(name.toLowerCase(), get); } @@ -187,79 +225,87 @@ public class ResidencePermissions extends FlagPermissions { } @Override - public boolean groupHas(String group, String flag, boolean def) { - ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.GROUP, group, def); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isOverriden()) + public boolean groupHas(final String group, final String flag, final boolean def) { + final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.GROUP, group, def); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isOverriden()) { return fc.getOverrideValue(); + } return super.groupHas(group, flag, def); } @Override - public boolean has(String flag, boolean def) { - ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.RESIDENCE, null, def); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isOverriden()) + public boolean has(final String flag, final boolean def) { + final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.RESIDENCE, null, def); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isOverriden()) { return fc.getOverrideValue(); + } return super.has(flag, def); } - public boolean hasApplicableFlag(String player, String flag) { - return super.inheritanceIsPlayerSet(player, flag) || super.inheritanceIsGroupSet(Residence.getPermissionManager().getGroupNameByPlayer(player, world), flag) || super.inheritanceIsSet(flag); + public boolean hasApplicableFlag(final String player, final String flag) { + return super.inheritanceIsPlayerSet(player, flag) || super.inheritanceIsGroupSet(plugin.getPermissionManager().getGroupNameByPlayer(player, world), flag) || super.inheritanceIsSet(flag); } - public boolean hasResidencePermission(Player player, boolean requireOwner) { - if (Residence.getConfigManager().enabledRentSystem()) { - String resname = residence.getName(); - if (Residence.getRentManager().isRented(resname)) { - if (requireOwner) + public boolean hasResidencePermission(final Player player, final boolean requireOwner) { + if (plugin.getConfigManager().enabledRentSystem()) { + final String resname = residence.getName(); + if (plugin.getRentManager().isRented(resname)) { + if (requireOwner) { return false; - String renter = Residence.getRentManager().getRentingPlayer(resname); - if (player.getName().equalsIgnoreCase(renter)) + } + final String renter = plugin.getRentManager().getRentingPlayer(resname); + if (player.getName().equalsIgnoreCase(renter)) { return true; - else + } else { return (playerHas(player.getName(), "admin", false)); + } } } - if (requireOwner) + if (requireOwner) { return (owner.equalsIgnoreCase(player.getName())); + } return (playerHas(player.getName(), "admin", false) || owner.equalsIgnoreCase(player.getName())); } - public boolean playerHas(String player, String flag, boolean def) { + public boolean playerHas(final String player, final String flag, final boolean def) { return this.playerHas(player, world, flag, def); } @Override - public boolean playerHas(String player, String world, String flag, boolean def) { - ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.PLAYER, player, def); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isOverriden()) + public boolean playerHas(final String player, final String world, final String flag, final boolean def) { + final ResidenceFlagCheckEvent fc = new ResidenceFlagCheckEvent(residence, flag, FlagType.PLAYER, player, def); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isOverriden()) { return fc.getOverrideValue(); + } return super.playerHas(player, world, flag, def); } - public boolean removeAllGroupFlags(Player player, String group, boolean resadmin) { + public boolean removeAllGroupFlags(final Player player, final String group, final boolean resadmin) { if (this.hasResidencePermission(player, false) || resadmin) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.GROUP, FlagState.NEITHER, null); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.GROUP, FlagState.NEITHER, null); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } super.removeAllGroupFlags(group); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("FlagSet")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet")); return true; } return false; } - public boolean removeAllPlayerFlags(Player player, String targetPlayer, boolean resadmin) { + public boolean removeAllPlayerFlags(final Player player, final String targetPlayer, final boolean resadmin) { if (this.hasResidencePermission(player, false) || resadmin) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.RESIDENCE, FlagState.NEITHER, null); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.RESIDENCE, FlagState.NEITHER, null); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } super.removeAllPlayerFlags(targetPlayer); - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("FlagSet")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet")); return true; } return false; @@ -267,23 +313,25 @@ public class ResidencePermissions extends FlagPermissions { @Override public Map save() { - Map root = super.save(); + final Map root = super.save(); root.put("Owner", owner); root.put("World", world); return root; } - public boolean setFlag(Player player, String flag, String flagstate, boolean resadmin) { - if (validFlagGroups.containsKey(flag)) + public boolean setFlag(final Player player, final String flag, final String flagstate, final boolean resadmin) { + if (validFlagGroups.containsKey(flag)) { return this.setFlagGroup(player, flag, flagstate, resadmin); - FlagState state = FlagPermissions.stringToFlagState(flagstate); + } + final FlagState state = FlagPermissions.stringToFlagState(flagstate); if (checkCanSetFlag(player, flag, state, true, resadmin)) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } if (super.setFlag(flag, state)) { - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("FlagSet")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet")); return true; } } @@ -291,100 +339,114 @@ public class ResidencePermissions extends FlagPermissions { } @Override - public boolean setFlag(String flag, FlagState state) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + public boolean setFlag(final String flag, final FlagState state) { + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } return super.setFlag(flag, state); } - public boolean setFlagGroup(Player player, String flaggroup, String state, boolean resadmin) { + public boolean setFlagGroup(final Player player, final String flaggroup, final String state, final boolean resadmin) { if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) { - ArrayList flags = ResidencePermissions.validFlagGroups.get(flaggroup); + final ArrayList flags = ResidencePermissions.validFlagGroups.get(flaggroup); boolean changed = false; - for (String flag : flags) - if (this.setFlag(player, flag, state, resadmin)) + for (final String flag : flags) { + if (this.setFlag(player, flag, state, resadmin)) { changed = true; + } + } return changed; } return false; } - public boolean setFlagGroupOnGroup(Player player, String flaggroup, String group, String state, boolean resadmin) { + public boolean setFlagGroupOnGroup(final Player player, final String flaggroup, final String group, final String state, final boolean resadmin) { if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) { - ArrayList flags = ResidencePermissions.validFlagGroups.get(flaggroup); + final ArrayList flags = ResidencePermissions.validFlagGroups.get(flaggroup); boolean changed = false; - for (String flag : flags) - if (this.setGroupFlag(player, group, flag, state, resadmin)) + for (final String flag : flags) { + if (this.setGroupFlag(player, group, flag, state, resadmin)) { changed = true; + } + } return changed; } return false; } - public boolean setFlagGroupOnPlayer(Player player, String target, String flaggroup, String state, boolean resadmin) { + public boolean setFlagGroupOnPlayer(final Player player, final String target, final String flaggroup, final String state, final boolean resadmin) { if (ResidencePermissions.validFlagGroups.containsKey(flaggroup)) { - ArrayList flags = ResidencePermissions.validFlagGroups.get(flaggroup); + final ArrayList flags = ResidencePermissions.validFlagGroups.get(flaggroup); boolean changed = false; - for (String flag : flags) - if (this.setPlayerFlag(player, target, flag, state, resadmin)) + for (final String flag : flags) { + if (this.setPlayerFlag(player, target, flag, state, resadmin)) { changed = true; + } + } return changed; } return false; } - public boolean setGroupFlag(Player player, String group, String flag, String flagstate, boolean resadmin) { + public boolean setGroupFlag(final Player player, String group, final String flag, final String flagstate, final boolean resadmin) { group = group.toLowerCase(); - if (validFlagGroups.containsKey(flag)) + if (validFlagGroups.containsKey(flag)) { return this.setFlagGroupOnGroup(player, flag, group, flagstate, resadmin); - FlagState state = FlagPermissions.stringToFlagState(flagstate); - if (checkCanSetFlag(player, flag, state, false, resadmin)) - if (Residence.getPermissionManager().hasGroup(group)) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + } + final FlagState state = FlagPermissions.stringToFlagState(flagstate); + if (checkCanSetFlag(player, flag, state, false, resadmin)) { + if (plugin.getPermissionManager().hasGroup(group)) { + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } if (super.setGroupFlag(group, flag, state)) { - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("FlagSet")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet")); return true; } } else { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidGroup")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidGroup")); return false; } + } return false; } @Override - public boolean setGroupFlag(String group, String flag, FlagState state) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + public boolean setGroupFlag(final String group, final String flag, final FlagState state) { + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } return super.setGroupFlag(group, flag, state); } - public void setOwner(String newOwner, boolean resetFlags) { - ResidenceOwnerChangeEvent ownerchange = new ResidenceOwnerChangeEvent(residence, newOwner); - Residence.getServ().getPluginManager().callEvent(ownerchange); + public void setOwner(final String newOwner, final boolean resetFlags) { + final ResidenceOwnerChangeEvent ownerchange = new ResidenceOwnerChangeEvent(residence, newOwner); + plugin.getServ().getPluginManager().callEvent(ownerchange); owner = newOwner; - if (resetFlags) + if (resetFlags) { this.applyDefaultFlags(); + } } - public boolean setPlayerFlag(Player player, String targetPlayer, String flag, String flagstate, boolean resadmin) { - if (validFlagGroups.containsKey(flag)) + public boolean setPlayerFlag(final Player player, final String targetPlayer, final String flag, final String flagstate, final boolean resadmin) { + if (validFlagGroups.containsKey(flag)) { return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin); - FlagState state = FlagPermissions.stringToFlagState(flagstate); + } + final FlagState state = FlagPermissions.stringToFlagState(flagstate); if (checkCanSetFlag(player, flag, state, false, resadmin)) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, targetPlayer); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, player, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, targetPlayer); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } if (super.setPlayerFlag(targetPlayer, flag, state)) { - player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("FlagSet")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("FlagSet")); return true; } } @@ -392,38 +454,39 @@ public class ResidencePermissions extends FlagPermissions { } @Override - public boolean setPlayerFlag(String player, String flag, FlagState state) { - ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, player); - Residence.getServ().getPluginManager().callEvent(fc); - if (fc.isCancelled()) + public boolean setPlayerFlag(final String player, final String flag, final FlagState state) { + final ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent(residence, null, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, player); + plugin.getServ().getPluginManager().callEvent(fc); + if (fc.isCancelled()) { return false; + } return super.setPlayerFlag(player, flag, state); } - private boolean checkCanSetFlag(Player player, String flag, FlagState state, boolean globalflag, boolean resadmin) { + private boolean checkCanSetFlag(final Player player, final String flag, final FlagState state, final boolean globalflag, final boolean resadmin) { if (!checkValidFlag(flag, globalflag)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidFlag")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidFlag")); return false; } if (state == FlagState.INVALID) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidFlagState")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidFlagState")); return false; } if (!resadmin) { if (!this.hasResidencePermission(player, false)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("NoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("NoPermission")); return false; } if (!hasFlagAccess(owner, flag)) { - player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("OwnerNoPermission")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("OwnerNoPermission")); return false; } } return true; } - private boolean hasFlagAccess(String player, String flag) { - PermissionGroup group = Residence.getPermissionManager().getGroup(player, world); + private boolean hasFlagAccess(final String player, final String flag) { + final PermissionGroup group = plugin.getPermissionManager().getGroup(player, world); return group.hasFlagAccess(flag); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/protection/WorldFlagManager.java b/src/main/java/com/bekvon/bukkit/residence/protection/WorldFlagManager.java index bd761b8..a4394b3 100644 --- a/src/main/java/com/bekvon/bukkit/residence/protection/WorldFlagManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/protection/WorldFlagManager.java @@ -22,34 +22,36 @@ import com.bekvon.bukkit.residence.Residence; * @author Administrator */ public class WorldFlagManager { + protected FlagPermissions globaldefaults; protected Map> groupperms; protected Map worldperms; - protected FlagPermissions globaldefaults; + Residence plugin; - public WorldFlagManager() { - globaldefaults = new FlagPermissions(); + public WorldFlagManager(final Residence plugin) { + this.plugin = plugin; + globaldefaults = new FlagPermissions(plugin); worldperms = new HashMap(); groupperms = new HashMap>(); } - public WorldFlagManager(FileConfiguration config) { - this(); + public WorldFlagManager(final Residence plugin, final FileConfiguration config) { + this(plugin); this.parsePerms(config); } - public FlagPermissions getPerms(Player player) { - return this.getPerms(player.getWorld().getName(), Residence.getPermissionManager() - .getGroupNameByPlayer(player)); + public FlagPermissions getPerms(final Player player) { + return this.getPerms(player.getWorld().getName(), plugin.getPermissionManager().getGroupNameByPlayer(player)); } public FlagPermissions getPerms(String world) { world = world.toLowerCase(); - FlagPermissions list = worldperms.get(world); + final FlagPermissions list = worldperms.get(world); if (list == null) { - if (globaldefaults == null) - return new FlagPermissions(); - else + if (globaldefaults == null) { + return new FlagPermissions(plugin); + } else { return globaldefaults; + } } return list; } @@ -57,76 +59,64 @@ public class WorldFlagManager { public FlagPermissions getPerms(String world, String group) { world = world.toLowerCase(); group = group.toLowerCase(); - Map groupworldperms = groupperms.get(group); - if (groupworldperms == null) + final Map groupworldperms = groupperms.get(group); + if (groupworldperms == null) { return this.getPerms(world); + } FlagPermissions list = groupworldperms.get(world); if (list == null) { list = groupworldperms.get("global." + world); if (list == null) { list = groupworldperms.get("global"); } - if (list == null) + if (list == null) { return this.getPerms(world); + } } return list; } - public void parsePerms(FileConfiguration config) { + public void parsePerms(final FileConfiguration config) { try { Set keys = config.getConfigurationSection("Global.Flags").getKeys(false); if (keys != null) { - for (String key : keys) { + for (final String key : keys) { if (key.equalsIgnoreCase("Global")) { - globaldefaults = FlagPermissions.parseFromConfigNode(key, - config.getConfigurationSection("Global.Flags")); + globaldefaults = FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags")); } else { - worldperms.put( - key.toLowerCase(), - FlagPermissions.parseFromConfigNode(key, - config.getConfigurationSection("Global.Flags"))); + worldperms.put(key.toLowerCase(), FlagPermissions.parseFromConfigNode(key, config.getConfigurationSection("Global.Flags"))); } } } - for (Entry entry : worldperms.entrySet()) { + for (final Entry entry : worldperms.entrySet()) { entry.getValue().setParent(globaldefaults); } keys = config.getConfigurationSection("Groups").getKeys(false); if (keys != null) { - for (String key : keys) { - ConfigurationSection worldkeylist = config.getConfigurationSection("Groups." - + key + ".Flags.World"); + for (final String key : keys) { + final ConfigurationSection worldkeylist = config.getConfigurationSection("Groups." + key + ".Flags.World"); if (worldkeylist != null) { - Set worldkeys = config.getConfigurationSection( - "Groups." + key + ".Flags.World").getKeys(false); + final Set worldkeys = config.getConfigurationSection("Groups." + key + ".Flags.World").getKeys(false); if (worldkeys != null) { - Map perms = new HashMap(); - for (String wkey : worldkeys) { - FlagPermissions list = FlagPermissions.parseFromConfigNode( - wkey, - config.getConfigurationSection("Groups." + key - + ".Flags.World")); + final Map perms = new HashMap(); + for (final String wkey : worldkeys) { + FlagPermissions list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World")); if (wkey.equalsIgnoreCase("global")) { list.setParent(globaldefaults); perms.put(wkey.toLowerCase(), list); - for (Entry worldperm : worldperms - .entrySet()) { - list = FlagPermissions.parseFromConfigNode( - wkey, - config.getConfigurationSection("Groups." + key - + ".Flags.World")); + for (final Entry worldperm : worldperms.entrySet()) { + list = FlagPermissions.parseFromConfigNode(wkey, config.getConfigurationSection("Groups." + key + ".Flags.World")); list.setParent(worldperm.getValue()); - perms.put("global." + worldperm.getKey().toLowerCase(), - list); + perms.put("global." + worldperm.getKey().toLowerCase(), list); } } else { perms.put(wkey.toLowerCase(), list); } } - for (Entry entry : perms.entrySet()) { - String wkey = entry.getKey(); - FlagPermissions list = entry.getValue(); + for (final Entry entry : perms.entrySet()) { + final String wkey = entry.getKey(); + final FlagPermissions list = entry.getValue(); if (!wkey.startsWith("global.")) { list.setParent(perms.get("global." + wkey)); if (list.getParent() == null) { @@ -142,7 +132,7 @@ public class WorldFlagManager { } } } - } catch (Exception ex) { + } catch (final Exception ex) { Logger.getLogger(WorldFlagManager.class.getName()).log(Level.SEVERE, null, ex); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/runnable/AutoSaveTask.java b/src/main/java/com/bekvon/bukkit/residence/runnable/AutoSaveTask.java index 1e47511..caf860f 100644 --- a/src/main/java/com/bekvon/bukkit/residence/runnable/AutoSaveTask.java +++ b/src/main/java/com/bekvon/bukkit/residence/runnable/AutoSaveTask.java @@ -7,16 +7,17 @@ import com.bekvon.bukkit.residence.Residence; public class AutoSaveTask implements Runnable { Residence res; - public AutoSaveTask(Residence res) { + public AutoSaveTask(final Residence res) { this.res = res; } @Override public void run() { try { - if (Residence.initsuccess) + if (res.isInit()) { res.saveYml(); - } catch (Exception ex) { + } + } catch (final Exception ex) { Bukkit.getLogger().warning("领地数据保存错误,可能造成部分领地丢失,请尝试恢复备份文件!"); } } diff --git a/src/main/java/com/bekvon/bukkit/residence/runnable/HealTask.java b/src/main/java/com/bekvon/bukkit/residence/runnable/HealTask.java index a969dde..2256ba0 100644 --- a/src/main/java/com/bekvon/bukkit/residence/runnable/HealTask.java +++ b/src/main/java/com/bekvon/bukkit/residence/runnable/HealTask.java @@ -8,23 +8,30 @@ import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; public class HealTask implements Runnable { + Residence plugin; + + public HealTask(final Residence plugin) { + this.plugin = plugin; + } @Override public void run() { try { - for (Player player : Bukkit.getServer().getOnlinePlayers()) { - String resname = Residence.getPlayerListener().getCurrentResidenceName(player.getName()); + for (final Player player : Bukkit.getServer().getOnlinePlayers()) { + final String resname = plugin.getPlayerListener().getCurrentResidenceName(player.getName()); ClaimedResidence res = null; - if (resname != null) - res = Residence.getResidenceManager().getByName(resname); + if (resname != null) { + res = plugin.getResidenceManager().getByName(resname); + } if (res != null && res.getPermissions().has("healing", false)) { - Damageable damage = player; - double health = damage.getHealth(); - if (health < 20 && !player.isDead()) + final Damageable damage = player; + final double health = damage.getHealth(); + if (health < 20 && !player.isDead()) { player.setHealth(health + 1); + } } } - } catch (Exception ex) { + } catch (final Exception ex) { } } diff --git a/src/main/java/com/bekvon/bukkit/residence/runnable/LeaseTask.java b/src/main/java/com/bekvon/bukkit/residence/runnable/LeaseTask.java index 24790bf..9fbff29 100644 --- a/src/main/java/com/bekvon/bukkit/residence/runnable/LeaseTask.java +++ b/src/main/java/com/bekvon/bukkit/residence/runnable/LeaseTask.java @@ -3,10 +3,17 @@ package com.bekvon.bukkit.residence.runnable; import com.bekvon.bukkit.residence.Residence; public class LeaseTask implements Runnable { + Residence plugin; + + public LeaseTask(final Residence plugin) { + this.plugin = plugin; + } + @Override public void run() { - Residence.getLeaseManager().doExpirations(); - if (Residence.getConfigManager().showIntervalMessages()) - Residence.getLog().info(" - Lease Expirations checked!"); + plugin.getLeaseManager().doExpirations(); + if (plugin.getConfigManager().showIntervalMessages()) { + plugin.getLogger().info(" - Lease Expirations checked!"); + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/runnable/RentTask.java b/src/main/java/com/bekvon/bukkit/residence/runnable/RentTask.java index 1b8bdeb..c9f2453 100644 --- a/src/main/java/com/bekvon/bukkit/residence/runnable/RentTask.java +++ b/src/main/java/com/bekvon/bukkit/residence/runnable/RentTask.java @@ -3,10 +3,17 @@ package com.bekvon.bukkit.residence.runnable; import com.bekvon.bukkit.residence.Residence; public class RentTask implements Runnable { + Residence plugin; + + public RentTask(final Residence plugin) { + this.plugin = plugin; + } + @Override public void run() { - Residence.getRentManager().checkCurrentRents(); - if (Residence.getConfigManager().showIntervalMessages()) - Residence.getLog().info(" - Rent Expirations checked!"); + plugin.getRentManager().checkCurrentRents(); + if (plugin.getConfigManager().showIntervalMessages()) { + plugin.getLog().info(" - Rent Expirations checked!"); + } } } diff --git a/src/main/java/com/bekvon/bukkit/residence/selection/SelectionManager.java b/src/main/java/com/bekvon/bukkit/residence/selection/SelectionManager.java index 6438180..17100f7 100644 --- a/src/main/java/com/bekvon/bukkit/residence/selection/SelectionManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/selection/SelectionManager.java @@ -5,233 +5,105 @@ package com.bekvon.bukkit.residence.selection; -import com.bekvon.bukkit.residence.Residence; -import com.bekvon.bukkit.residence.permissions.PermissionGroup; -import com.bekvon.bukkit.residence.protection.CuboidArea; import java.util.Collections; import java.util.HashMap; import java.util.Map; + +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.entity.Player; +import com.bekvon.bukkit.residence.Residence; +import com.bekvon.bukkit.residence.permissions.PermissionGroup; +import com.bekvon.bukkit.residence.protection.CuboidArea; + /** * * @author Administrator */ public class SelectionManager { + public static final int MAX_HEIGHT = 255, MIN_HEIGHT = 0; protected Map playerLoc1; protected Map playerLoc2; protected Server server; + Residence plugin; - public static final int MAX_HEIGHT = 255, MIN_HEIGHT = 0; - - public enum Direction { - UP, DOWN, PLUSX, PLUSZ, MINUSX, MINUSZ + public SelectionManager(final Residence plugin) { + this.plugin = plugin; + this.server = Bukkit.getServer(); + playerLoc1 = Collections.synchronizedMap(new HashMap()); + playerLoc2 = Collections.synchronizedMap(new HashMap()); } - public SelectionManager(Server server) { - this.server = server; - playerLoc1 = Collections - .synchronizedMap(new HashMap()); - playerLoc2 = Collections - .synchronizedMap(new HashMap()); - } - - public void placeLoc1(Player player, Location loc) { - if (loc != null) { - playerLoc1.put(player.getName(), loc); - } - } - - public void placeLoc2(Player player, Location loc) { - if (loc != null) { - playerLoc2.put(player.getName(), loc); - } - } - - public Location getPlayerLoc1(String player) { - return playerLoc1.get(player); - } - - public Location getPlayerLoc2(String player) { - return playerLoc2.get(player); - } - - public boolean hasPlacedBoth(String player) { - return (playerLoc1.containsKey(player) && playerLoc2 - .containsKey(player)); - } - - public void showSelectionInfo(Player player) { - String pname = player.getName(); - if (this.hasPlacedBoth(pname)) { - CuboidArea cuboidArea = new CuboidArea(getPlayerLoc1(pname), - getPlayerLoc2(pname)); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Selection.Total.Size") - + ":" + ChatColor.DARK_AQUA + " " + cuboidArea.getSize()); - PermissionGroup group = Residence.getPermissionManager().getGroup( - player); - if (Residence.getConfigManager().enableEconomy()) - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Land.Cost") - + ":" - + ChatColor.DARK_AQUA - + " " - + ((int) Math.ceil((double) cuboidArea.getSize() - * group.getCostPerBlock()))); - player.sendMessage(ChatColor.YELLOW + "X" - + Residence.getLanguage().getPhrase("Size") + ":" - + ChatColor.DARK_AQUA + " " + cuboidArea.getXSize()); - player.sendMessage(ChatColor.YELLOW + "Y" - + Residence.getLanguage().getPhrase("Size") + ":" - + ChatColor.DARK_AQUA + " " + cuboidArea.getYSize()); - player.sendMessage(ChatColor.YELLOW + "Z" - + Residence.getLanguage().getPhrase("Size") + ":" - + ChatColor.DARK_AQUA + " " + cuboidArea.getZSize()); - } else - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectPoints")); - } - - public void vert(Player player, boolean resadmin) { + public void bedrock(final Player player, final boolean resadmin) { if (hasPlacedBoth(player.getName())) { - this.sky(player, resadmin); - this.bedrock(player, resadmin); - } else { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectPoints")); - } - } - - public void sky(Player player, boolean resadmin) { - if (hasPlacedBoth(player.getName())) { - PermissionGroup group = Residence.getPermissionManager().getGroup( - player); - int y1 = playerLoc1.get(player.getName()).getBlockY(); - int y2 = playerLoc2.get(player.getName()).getBlockY(); - if (y1 > y2) { - int newy = MAX_HEIGHT; - if (!resadmin) { - if (group.getMaxHeight() < newy) - newy = group.getMaxHeight(); - if (newy - y2 > (group.getMaxY() - 1)) - newy = y2 + (group.getMaxY() - 1); - } - playerLoc1.get(player.getName()).setY(newy); - } else { - int newy = MAX_HEIGHT; - if (!resadmin) { - if (group.getMaxHeight() < newy) - newy = group.getMaxHeight(); - if (newy - y1 > (group.getMaxY() - 1)) - newy = y1 + (group.getMaxY() - 1); - } - playerLoc2.get(player.getName()).setY(newy); - } - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("SelectionSky")); - } else { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectPoints")); - } - } - - public void bedrock(Player player, boolean resadmin) { - if (hasPlacedBoth(player.getName())) { - PermissionGroup group = Residence.getPermissionManager().getGroup( - player); - int y1 = playerLoc1.get(player.getName()).getBlockY(); - int y2 = playerLoc2.get(player.getName()).getBlockY(); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); + final int y1 = playerLoc1.get(player.getName()).getBlockY(); + final int y2 = playerLoc2.get(player.getName()).getBlockY(); if (y1 < y2) { int newy = MIN_HEIGHT; if (!resadmin) { - if (newy < group.getMinHeight()) + if (newy < group.getMinHeight()) { newy = group.getMinHeight(); - if (y2 - newy > (group.getMaxY() - 1)) + } + if (y2 - newy > (group.getMaxY() - 1)) { newy = y2 - (group.getMaxY() - 1); + } } playerLoc1.get(player.getName()).setY(newy); } else { int newy = MIN_HEIGHT; if (!resadmin) { - if (newy < group.getMinHeight()) + if (newy < group.getMinHeight()) { newy = group.getMinHeight(); - if (y1 - newy > (group.getMaxY() - 1)) + } + if (y1 - newy > (group.getMaxY() - 1)) { newy = y1 - (group.getMaxY() - 1); + } } playerLoc2.get(player.getName()).setY(newy); } - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("SelectionBedrock")); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectionBedrock")); } else { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectPoints")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectPoints")); } } - public void clearSelection(Player player) { + public void clearSelection(final Player player) { playerLoc1.remove(player.getName()); playerLoc2.remove(player.getName()); } - public void selectChunk(Player player) { - Chunk chunk = player.getWorld().getChunkAt(player.getLocation()); - int xcoord = chunk.getX() * 16; - int zcoord = chunk.getZ() * 16; - int ycoord = MIN_HEIGHT; - int xmax = xcoord + 15; - int zmax = zcoord + 15; - int ymax = MAX_HEIGHT; - this.playerLoc1.put(player.getName(), new Location(player.getWorld(), - xcoord, ycoord, zcoord)); - this.playerLoc2.put(player.getName(), new Location(player.getWorld(), - xmax, ymax, zmax)); - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("SelectionSuccess")); + public Location getPlayerLoc1(final String player) { + return playerLoc1.get(player); } - public boolean worldEdit(Player player) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("WorldEditNotFound")); - return false; + public Location getPlayerLoc2(final String player) { + return playerLoc2.get(player); } - public void selectBySize(Player player, int xsize, int ysize, int zsize) { - Location myloc = player.getLocation(); - Location loc1 = new Location(myloc.getWorld(), myloc.getBlockX() - + xsize, myloc.getBlockY() + ysize, myloc.getBlockZ() + zsize); - Location loc2 = new Location(myloc.getWorld(), myloc.getBlockX() - - xsize, myloc.getBlockY() - ysize, myloc.getBlockZ() - zsize); - placeLoc1(player, loc1); - placeLoc2(player, loc2); - player.sendMessage(ChatColor.GREEN - + Residence.getLanguage().getPhrase("SelectionSuccess")); - showSelectionInfo(player); + public boolean hasPlacedBoth(final String player) { + return (playerLoc1.containsKey(player) && playerLoc2.containsKey(player)); } - public void modify(Player player, boolean shift, int amount) { + public void modify(final Player player, final boolean shift, final int amount) { if (!this.hasPlacedBoth(player.getName())) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectPoints")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectPoints")); return; } - Direction d = this.getDirection(player); + final Direction d = this.getDirection(player); if (d == null) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("InvalidDirection")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidDirection")); } - CuboidArea area = new CuboidArea(playerLoc1.get(player.getName()), - playerLoc2.get(player.getName())); + final CuboidArea area = new CuboidArea(playerLoc1.get(player.getName()), playerLoc2.get(player.getName())); if (d == Direction.UP) { int oldy = area.getHighLoc().getBlockY(); oldy = oldy + amount; if (oldy > MAX_HEIGHT) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectTooHigh")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectTooHigh")); oldy = MAX_HEIGHT; } area.getHighLoc().setY(oldy); @@ -239,20 +111,16 @@ public class SelectionManager { int oldy2 = area.getLowLoc().getBlockY(); oldy2 = oldy2 + amount; area.getLowLoc().setY(oldy2); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Shifting.Up") - + "..."); - } else - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Expanding.Up") - + "..."); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Shifting.Up") + "..."); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Expanding.Up") + "..."); + } } if (d == Direction.DOWN) { int oldy = area.getLowLoc().getBlockY(); oldy = oldy - amount; if (oldy < MIN_HEIGHT) { - player.sendMessage(ChatColor.RED - + Residence.getLanguage().getPhrase("SelectTooLow")); + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectTooLow")); oldy = MIN_HEIGHT; } area.getLowLoc().setY(oldy); @@ -260,13 +128,10 @@ public class SelectionManager { int oldy2 = area.getHighLoc().getBlockY(); oldy2 = oldy2 - amount; area.getHighLoc().setY(oldy2); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Shifting.Down") - + "..."); - } else - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Expanding.Down") - + "..."); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Shifting.Down") + "..."); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Expanding.Down") + "..."); + } } if (d == Direction.MINUSX) { int oldx = area.getLowLoc().getBlockX(); @@ -276,13 +141,10 @@ public class SelectionManager { int oldx2 = area.getHighLoc().getBlockX(); oldx2 = oldx2 - amount; area.getHighLoc().setX(oldx2); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Shifting") - + " -X..."); - } else - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Expanding") - + " -X..."); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Shifting") + " -X..."); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Expanding") + " -X..."); + } } if (d == Direction.PLUSX) { int oldx = area.getHighLoc().getBlockX(); @@ -292,13 +154,10 @@ public class SelectionManager { int oldx2 = area.getLowLoc().getBlockX(); oldx2 = oldx2 + amount; area.getLowLoc().setX(oldx2); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Shifting") - + " +X..."); - } else - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Expanding") - + " +X..."); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Shifting") + " +X..."); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Expanding") + " +X..."); + } } if (d == Direction.MINUSZ) { int oldz = area.getLowLoc().getBlockZ(); @@ -308,13 +167,10 @@ public class SelectionManager { int oldz2 = area.getHighLoc().getBlockZ(); oldz2 = oldz2 - amount; area.getHighLoc().setZ(oldz2); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Shifting") - + " -Z..."); - } else - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Expanding") - + " -Z..."); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Shifting") + " -Z..."); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Expanding") + " -Z..."); + } } if (d == Direction.PLUSZ) { int oldz = area.getHighLoc().getBlockZ(); @@ -324,34 +180,147 @@ public class SelectionManager { int oldz2 = area.getLowLoc().getBlockZ(); oldz2 = oldz2 + amount; area.getLowLoc().setZ(oldz2); - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Shifting") - + " +Z..."); - } else - player.sendMessage(ChatColor.YELLOW - + Residence.getLanguage().getPhrase("Expanding") - + " +Z..."); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Shifting") + " +Z..."); + } else { + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Expanding") + " +Z..."); + } } playerLoc1.put(player.getName(), area.getHighLoc()); playerLoc2.put(player.getName(), area.getLowLoc()); } - private Direction getDirection(Player player) { - float pitch = player.getLocation().getPitch(); - float yaw = player.getLocation().getYaw(); - if (pitch < -50) + public void placeLoc1(final Player player, final Location loc) { + if (loc != null) { + playerLoc1.put(player.getName(), loc); + } + } + + public void placeLoc2(final Player player, final Location loc) { + if (loc != null) { + playerLoc2.put(player.getName(), loc); + } + } + + public void selectBySize(final Player player, final int xsize, final int ysize, final int zsize) { + final Location myloc = player.getLocation(); + final Location loc1 = new Location(myloc.getWorld(), myloc.getBlockX() + xsize, myloc.getBlockY() + ysize, myloc.getBlockZ() + zsize); + final Location loc2 = new Location(myloc.getWorld(), myloc.getBlockX() - xsize, myloc.getBlockY() - ysize, myloc.getBlockZ() - zsize); + placeLoc1(player, loc1); + placeLoc2(player, loc2); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectionSuccess")); + showSelectionInfo(player); + } + + public void selectChunk(final Player player) { + final Chunk chunk = player.getWorld().getChunkAt(player.getLocation()); + final int xcoord = chunk.getX() * 16; + final int zcoord = chunk.getZ() * 16; + final int ycoord = MIN_HEIGHT; + final int xmax = xcoord + 15; + final int zmax = zcoord + 15; + final int ymax = MAX_HEIGHT; + this.playerLoc1.put(player.getName(), new Location(player.getWorld(), xcoord, ycoord, zcoord)); + this.playerLoc2.put(player.getName(), new Location(player.getWorld(), xmax, ymax, zmax)); + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectionSuccess")); + } + + public void showSelectionInfo(final Player player) { + final String pname = player.getName(); + if (this.hasPlacedBoth(pname)) { + final CuboidArea cuboidArea = new CuboidArea(getPlayerLoc1(pname), getPlayerLoc2(pname)); + player.sendMessage(ChatColor.YELLOW + plugin.getLanguage().getPhrase("Selection.Total.Size") + ":" + ChatColor.DARK_AQUA + " " + cuboidArea.getSize()); + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); + if (plugin.getConfigManager().enableEconomy()) { + player.sendMessage( + ChatColor.YELLOW + plugin.getLanguage().getPhrase("Land.Cost") + ":" + ChatColor.DARK_AQUA + " " + ((int) Math.ceil(cuboidArea.getSize() * group.getCostPerBlock()))); + } + player.sendMessage(ChatColor.YELLOW + "X" + plugin.getLanguage().getPhrase("Size") + ":" + ChatColor.DARK_AQUA + " " + cuboidArea.getXSize()); + player.sendMessage(ChatColor.YELLOW + "Y" + plugin.getLanguage().getPhrase("Size") + ":" + ChatColor.DARK_AQUA + " " + cuboidArea.getYSize()); + player.sendMessage(ChatColor.YELLOW + "Z" + plugin.getLanguage().getPhrase("Size") + ":" + ChatColor.DARK_AQUA + " " + cuboidArea.getZSize()); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectPoints")); + } + } + + public void sky(final Player player, final boolean resadmin) { + if (hasPlacedBoth(player.getName())) { + final PermissionGroup group = plugin.getPermissionManager().getGroup(player); + final int y1 = playerLoc1.get(player.getName()).getBlockY(); + final int y2 = playerLoc2.get(player.getName()).getBlockY(); + if (y1 > y2) { + int newy = MAX_HEIGHT; + if (!resadmin) { + if (group.getMaxHeight() < newy) { + newy = group.getMaxHeight(); + } + if (newy - y2 > (group.getMaxY() - 1)) { + newy = y2 + (group.getMaxY() - 1); + } + } + playerLoc1.get(player.getName()).setY(newy); + } else { + int newy = MAX_HEIGHT; + if (!resadmin) { + if (group.getMaxHeight() < newy) { + newy = group.getMaxHeight(); + } + if (newy - y1 > (group.getMaxY() - 1)) { + newy = y1 + (group.getMaxY() - 1); + } + } + playerLoc2.get(player.getName()).setY(newy); + } + player.sendMessage(ChatColor.GREEN + plugin.getLanguage().getPhrase("SelectionSky")); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectPoints")); + } + } + + public void vert(final Player player, final boolean resadmin) { + if (hasPlacedBoth(player.getName())) { + this.sky(player, resadmin); + this.bedrock(player, resadmin); + } else { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("SelectPoints")); + } + } + + public boolean worldEdit(final Player player) { + player.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("WorldEditNotFound")); + return false; + } + + private Direction getDirection(final Player player) { + final float pitch = player.getLocation().getPitch(); + final float yaw = player.getLocation().getYaw(); + if (pitch < -50) { return Direction.UP; - if (pitch > 50) + } + if (pitch > 50) { return Direction.DOWN; - if ((yaw > 45 && yaw < 135) || (yaw < -45 && yaw > -135)) + } + if ((yaw > 45 && yaw < 135) || (yaw < -45 && yaw > -135)) { return Direction.MINUSX; - if ((yaw > 225 && yaw < 315) || (yaw < -225 && yaw > -315)) + } + if ((yaw > 225 && yaw < 315) || (yaw < -225 && yaw > -315)) { return Direction.PLUSX; - if ((yaw > 135 && yaw < 225) || (yaw < -135 && yaw > -225)) + } + if ((yaw > 135 && yaw < 225) || (yaw < -135 && yaw > -225)) { return Direction.MINUSZ; - if ((yaw < 45 || yaw > 315) || (yaw > -45 || yaw < -315)) + } + if ((yaw < 45 || yaw > 315) || (yaw > -45 || yaw < -315)) { return Direction.PLUSZ; + } return null; } + public enum Direction { + DOWN, + MINUSX, + MINUSZ, + PLUSX, + PLUSZ, + UP + } + } diff --git a/src/main/java/com/bekvon/bukkit/residence/selection/WECUI.java b/src/main/java/com/bekvon/bukkit/residence/selection/WECUI.java index 4196ec7..743774b 100644 --- a/src/main/java/com/bekvon/bukkit/residence/selection/WECUI.java +++ b/src/main/java/com/bekvon/bukkit/residence/selection/WECUI.java @@ -6,7 +6,6 @@ package com.bekvon.bukkit.residence.selection; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.ClaimedResidence; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldedit.bukkit.selections.CuboidSelection; @@ -17,12 +16,9 @@ import com.sk89q.worldedit.bukkit.selections.Selection; * */ public class WECUI { - public static void UPDATESELECT(ClaimedResidence res, Player player) { - WorldEditPlugin wep = (WorldEditPlugin) Residence.getServ().getPluginManager() - .getPlugin("WorldEdit"); - Selection selection = new CuboidSelection(Bukkit.getWorld(res.getWorld()), res - .getAreaByLoc(player.getLocation()).getLowLoc(), res.getAreaByLoc( - player.getLocation()).getHighLoc()); + public static void UPDATESELECT(final ClaimedResidence res, final Player player) { + final WorldEditPlugin wep = (WorldEditPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldEdit"); + final Selection selection = new CuboidSelection(Bukkit.getWorld(res.getWorld()), res.getAreaByLoc(player.getLocation()).getLowLoc(), res.getAreaByLoc(player.getLocation()).getHighLoc()); wep.setSelection(player, selection); } } \ No newline at end of file diff --git a/src/main/java/com/bekvon/bukkit/residence/selection/WorldEditSelectionManager.java b/src/main/java/com/bekvon/bukkit/residence/selection/WorldEditSelectionManager.java index 62622a0..c037cf5 100644 --- a/src/main/java/com/bekvon/bukkit/residence/selection/WorldEditSelectionManager.java +++ b/src/main/java/com/bekvon/bukkit/residence/selection/WorldEditSelectionManager.java @@ -4,104 +4,102 @@ */ package com.bekvon.bukkit.residence.selection; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; + +import com.bekvon.bukkit.residence.Residence; import com.sk89q.worldedit.bukkit.WorldEditPlugin; import com.sk89q.worldedit.bukkit.selections.CuboidSelection; import com.sk89q.worldedit.bukkit.selections.Selection; import com.sk89q.worldedit.regions.CuboidRegion; -import org.bukkit.Location; -import org.bukkit.Server; -import org.bukkit.World; -import org.bukkit.entity.Player; - /** * * @author Administrator */ public class WorldEditSelectionManager extends SelectionManager { - - public WorldEditSelectionManager(Server serv) - { - super(serv); - } + Residence plugin; - @Override - public boolean worldEdit(Player player) { - WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); - Selection sel = wep.getSelection(player); - if(sel!=null) - { - Location pos1 = sel.getMinimumPoint(); - Location pos2 = sel.getMaximumPoint(); - try{ - CuboidRegion region = (CuboidRegion) sel.getRegionSelector().getRegion(); - pos1 = new Location(player.getWorld(), region.getPos1().getX(), region.getPos1().getY(), region.getPos1().getZ()); - pos2 = new Location(player.getWorld(), region.getPos2().getX(), region.getPos2().getY(), region.getPos2().getZ()); - }catch(Exception e){ - } - this.playerLoc1.put(player.getName(), pos1); - this.playerLoc2.put(player.getName(), pos2); - return true; - } - return false; - } - - private void afterSelectionUpdate(Player player) - { - if (hasPlacedBoth(player.getName())) - { - WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); - World world = playerLoc1.get(player.getName()).getWorld(); - Selection selection = new CuboidSelection(world, playerLoc1.get(player.getName()), playerLoc2.get(player.getName())); - wep.setSelection(player, selection); - } - } + public WorldEditSelectionManager(final Residence plugin) { + super(plugin); + this.plugin = plugin; + } - @Override - public void placeLoc1(Player player, Location loc) { - this.worldEdit(player); - super.placeLoc1(player, loc); - this.afterSelectionUpdate(player); - } + @Override + public void bedrock(final Player player, final boolean resadmin) { + this.worldEdit(player); + super.bedrock(player, resadmin); + afterSelectionUpdate(player); + } - @Override - public void placeLoc2(Player player, Location loc) { - this.worldEdit(player); - super.placeLoc2(player, loc); - this.afterSelectionUpdate(player); - } + @Override + public void modify(final Player player, final boolean shift, final int amount) { + this.worldEdit(player); + super.modify(player, shift, amount); + afterSelectionUpdate(player); + } - @Override - public void sky(Player player, boolean resadmin) { - this.worldEdit(player); - super.sky(player, resadmin); - afterSelectionUpdate(player); - } + @Override + public void placeLoc1(final Player player, final Location loc) { + this.worldEdit(player); + super.placeLoc1(player, loc); + this.afterSelectionUpdate(player); + } - @Override - public void bedrock(Player player, boolean resadmin) { - this.worldEdit(player); - super.bedrock(player, resadmin); - afterSelectionUpdate(player); - } + @Override + public void placeLoc2(final Player player, final Location loc) { + this.worldEdit(player); + super.placeLoc2(player, loc); + this.afterSelectionUpdate(player); + } - @Override - public void modify(Player player, boolean shift, int amount) { - this.worldEdit(player); - super.modify(player, shift, amount); - afterSelectionUpdate(player); - } + @Override + public void selectChunk(final Player player) { + this.worldEdit(player); + super.selectChunk(player); + afterSelectionUpdate(player); + } - @Override - public void selectChunk(Player player) { - this.worldEdit(player); - super.selectChunk(player); - afterSelectionUpdate(player); - } + @Override + public void showSelectionInfo(final Player player) { + this.worldEdit(player); + super.showSelectionInfo(player); + } - @Override - public void showSelectionInfo(Player player) { - this.worldEdit(player); - super.showSelectionInfo(player); - } + @Override + public void sky(final Player player, final boolean resadmin) { + this.worldEdit(player); + super.sky(player, resadmin); + afterSelectionUpdate(player); + } + + @Override + public boolean worldEdit(final Player player) { + final WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); + final Selection sel = wep.getSelection(player); + if (sel != null) { + Location pos1 = sel.getMinimumPoint(); + Location pos2 = sel.getMaximumPoint(); + try { + final CuboidRegion region = (CuboidRegion) sel.getRegionSelector().getRegion(); + pos1 = new Location(player.getWorld(), region.getPos1().getX(), region.getPos1().getY(), region.getPos1().getZ()); + pos2 = new Location(player.getWorld(), region.getPos2().getX(), region.getPos2().getY(), region.getPos2().getZ()); + } catch (final Exception e) { + } + this.playerLoc1.put(player.getName(), pos1); + this.playerLoc2.put(player.getName(), pos2); + return true; + } + return false; + } + + private void afterSelectionUpdate(final Player player) { + if (hasPlacedBoth(player.getName())) { + final WorldEditPlugin wep = (WorldEditPlugin) server.getPluginManager().getPlugin("WorldEdit"); + final World world = playerLoc1.get(player.getName()).getWorld(); + final Selection selection = new CuboidSelection(world, playerLoc1.get(player.getName()), playerLoc2.get(player.getName())); + wep.setSelection(player, selection); + } + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/text/help/HelpEntry.java b/src/main/java/com/bekvon/bukkit/residence/text/help/HelpEntry.java index 33504c4..4c9e0cb 100644 --- a/src/main/java/com/bekvon/bukkit/residence/text/help/HelpEntry.java +++ b/src/main/java/com/bekvon/bukkit/residence/text/help/HelpEntry.java @@ -4,211 +4,191 @@ */ package com.bekvon.bukkit.residence.text.help; -import org.bukkit.ChatColor; -import com.bekvon.bukkit.residence.Residence; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; + +import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; +import com.bekvon.bukkit.residence.Residence; + /** * * @author Administrator */ public class HelpEntry { - protected String name; - protected String desc; - protected String[] lines; - protected List subentrys; - protected static int linesPerPage = 7; + protected static int linesPerPage = 7; + protected String desc; + protected String[] lines; + protected String name; + protected List subentrys; + Residence plugin; - public HelpEntry(String entryname) - { - name = entryname; - subentrys = new ArrayList(); - lines = new String[0]; - } + public HelpEntry(final Residence plugin, final String entryname) { + this.plugin = plugin; + name = entryname; + subentrys = new ArrayList(); + lines = new String[0]; + } - public String getName() { - if(name==null) - return ""; - return name; - } + public static int getLinesPerPage() { + return linesPerPage; + } - public void setName(String inname) - { - name = inname; - } + public static HelpEntry parseHelp(final Residence plugin, final FileConfiguration node, final String key) { + final String split[] = key.split("\\."); + final String thisname = split[split.length - 1]; + final HelpEntry entry = new HelpEntry(plugin, thisname); + final ConfigurationSection keysnode = node.getConfigurationSection(key); + Set keys = null; + if (keysnode != null) { + keys = keysnode.getKeys(false); + } + if (keys != null) { + if (keys.contains("Info")) { + final List stringList = node.getStringList(key + ".Info"); + if (stringList != null) { + entry.lines = new String[stringList.size()]; + for (int i = 0; i < stringList.size(); i++) { + entry.lines[i] = "- " + stringList.get(i); + } + } + } + if (keys.contains("Description")) { + entry.desc = node.getString(key + ".Description"); + } + if (keys.contains("SubCommands")) { + final Set subcommandkeys = node.getConfigurationSection(key + ".SubCommands").getKeys(false); + for (final String subkey : subcommandkeys) { + entry.subentrys.add(HelpEntry.parseHelp(plugin, node, key + ".SubCommands." + subkey)); + } + } + } + return entry; + } - public void setDescription(String description) - { - desc = description; - } - public String getDescription() - { - if(desc==null) - return ""; - return desc; - } + public static void setLinesPerPage(final int lines) { + linesPerPage = lines; + } - public static int getLinesPerPage() - { - return linesPerPage; - } + public void addSubEntry(final HelpEntry entry) { + if (!subentrys.contains(entry)) { + subentrys.add(entry); + } + } - public static void setLinesPerPage(int lines) - { - linesPerPage = lines; - } + public boolean containesEntry(final String name) { + return this.getSubEntry(name) != null; + } - public void printHelp(CommandSender sender, int page) { - List helplines = this.getHelpData(); - int pagecount = (int) Math.ceil((double)helplines.size() / (double)linesPerPage); - if (page > pagecount || page < 1) { - sender.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("InvalidHelp")); - return; - } - sender.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("HelpPageHeader",ChatColor.YELLOW + name + ChatColor.RED+"."+ChatColor.YELLOW + page + ChatColor.RED+"."+ChatColor.YELLOW + pagecount + ChatColor.RED)); - sender.sendMessage(ChatColor.DARK_AQUA+Residence.getLanguage().getPhrase("Description")+": "+ChatColor.GREEN + desc); - int start = linesPerPage * (page - 1); - int end = start + linesPerPage; - boolean alternatecolor = false; - for (int i = start; i < end; i++) { - if (helplines.size() > i) { - if(alternatecolor) - { - sender.sendMessage(ChatColor.YELLOW+helplines.get(i)); - alternatecolor = false; - } - else - { - sender.sendMessage(ChatColor.GOLD+helplines.get(i)); - alternatecolor = true; - } - } - } - if(page---"); - else - sender.sendMessage(ChatColor.GRAY+"-----------------------"); - } + public String getDescription() { + if (desc == null) { + return ""; + } + return desc; + } - public void printHelp(CommandSender sender, int page, String path) - { - HelpEntry subEntry = this.getSubEntry(path); - if(subEntry!=null) - { - subEntry.printHelp(sender, page); - } - else - { - sender.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("InvalidHelp")); - } - } + public String getName() { + if (name == null) { + return ""; + } + return name; + } - private List getHelpData() - { - List helplines = new ArrayList(); - helplines.addAll(Arrays.asList(lines)); - if(subentrys.size()>0) - helplines.add(ChatColor.LIGHT_PURPLE+"---"+Residence.getLanguage().getPhrase("SubCommands")+"---"); - for(HelpEntry entry : subentrys) - { - helplines.add(ChatColor.GREEN+entry.getName() + ChatColor.YELLOW+" - " + entry.getDescription()); - } - return helplines; - } + public HelpEntry getSubEntry(final String name) { + final String[] split = name.split("\\."); + HelpEntry entry = this; + for (final String entryname : split) { + entry = entry.findSubEntry(entryname); + if (entry == null) { + return null; + } + } + return entry; + } - public boolean containesEntry(String name) - { - return this.getSubEntry(name)!=null; - } + public int getSubEntryCount() { + return subentrys.size(); + } - public HelpEntry getSubEntry(String name) - { - String[] split = name.split("\\."); - HelpEntry entry = this; - for(String entryname : split) - { - entry = entry.findSubEntry(entryname); - if(entry == null) - return null; - } - return entry; - } + public void printHelp(final CommandSender sender, final int page) { + final List helplines = this.getHelpData(); + final int pagecount = (int) Math.ceil((double) helplines.size() / (double) linesPerPage); + if (page > pagecount || page < 1) { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidHelp")); + return; + } + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("HelpPageHeader", + ChatColor.YELLOW + name + ChatColor.RED + "." + ChatColor.YELLOW + page + ChatColor.RED + "." + ChatColor.YELLOW + pagecount + ChatColor.RED)); + sender.sendMessage(ChatColor.DARK_AQUA + plugin.getLanguage().getPhrase("Description") + ": " + ChatColor.GREEN + desc); + final int start = linesPerPage * (page - 1); + final int end = start + linesPerPage; + boolean alternatecolor = false; + for (int i = start; i < end; i++) { + if (helplines.size() > i) { + if (alternatecolor) { + sender.sendMessage(ChatColor.YELLOW + helplines.get(i)); + alternatecolor = false; + } else { + sender.sendMessage(ChatColor.GOLD + helplines.get(i)); + alternatecolor = true; + } + } + } + if (page < pagecount) { + sender.sendMessage(ChatColor.GRAY + "---<" + plugin.getLanguage().getPhrase("NextPage") + ">---"); + } else { + sender.sendMessage(ChatColor.GRAY + "-----------------------"); + } + } - private HelpEntry findSubEntry(String name) - { - for(HelpEntry entry : subentrys) - { - if(entry.getName().equalsIgnoreCase(name)) - return entry; - } - return null; - } + public void printHelp(final CommandSender sender, final int page, final String path) { + final HelpEntry subEntry = this.getSubEntry(path); + if (subEntry != null) { + subEntry.printHelp(sender, page); + } else { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidHelp")); + } + } - public void addSubEntry(HelpEntry entry) - { - if(!subentrys.contains(entry)) - { - subentrys.add(entry); - } - } + public void removeSubEntry(final HelpEntry entry) { + if (subentrys.contains(entry)) { + subentrys.remove(entry); + } + } - public void removeSubEntry(HelpEntry entry) - { - if(subentrys.contains(entry)) - { - subentrys.remove(entry); - } - } + public void setDescription(final String description) { + desc = description; + } - public int getSubEntryCount() - { - return subentrys.size(); - } + public void setName(final String inname) { + name = inname; + } - public static HelpEntry parseHelp(FileConfiguration node, String key) - { - String split[] = key.split("\\."); - String thisname = split[split.length-1]; - HelpEntry entry = new HelpEntry(thisname); - ConfigurationSection keysnode = node.getConfigurationSection(key); - Set keys = null; - if(keysnode!=null) - keys = keysnode.getKeys(false); - if(keys!=null) - { - if(keys.contains("Info")) - { - List stringList = node.getStringList(key + ".Info"); - if(stringList != null) - { - entry.lines = new String[stringList.size()]; - for(int i = 0; i < stringList.size(); i++) - { - entry.lines[i] = "- " + stringList.get(i); - } - } - } - if(keys.contains("Description")) - { - entry.desc = node.getString(key + ".Description"); - } - if(keys.contains("SubCommands")) - { - Set subcommandkeys = node.getConfigurationSection(key + ".SubCommands").getKeys(false); - for(String subkey : subcommandkeys) - { - entry.subentrys.add(HelpEntry.parseHelp(node, key+".SubCommands."+subkey)); - } - } - } - return entry; - } + private HelpEntry findSubEntry(final String name) { + for (final HelpEntry entry : subentrys) { + if (entry.getName().equalsIgnoreCase(name)) { + return entry; + } + } + return null; + } + + private List getHelpData() { + final List helplines = new ArrayList(); + helplines.addAll(Arrays.asList(lines)); + if (subentrys.size() > 0) { + helplines.add(ChatColor.LIGHT_PURPLE + "---" + plugin.getLanguage().getPhrase("SubCommands") + "---"); + } + for (final HelpEntry entry : subentrys) { + helplines.add(ChatColor.GREEN + entry.getName() + ChatColor.YELLOW + " - " + entry.getDescription()); + } + return helplines; + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/text/help/InformationPager.java b/src/main/java/com/bekvon/bukkit/residence/text/help/InformationPager.java index 4086a01..9746c29 100644 --- a/src/main/java/com/bekvon/bukkit/residence/text/help/InformationPager.java +++ b/src/main/java/com/bekvon/bukkit/residence/text/help/InformationPager.java @@ -4,58 +4,59 @@ */ package com.bekvon.bukkit.residence.text.help; -import org.bukkit.ChatColor; -import com.bekvon.bukkit.residence.Residence; import java.util.Arrays; import java.util.List; + +import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import com.bekvon.bukkit.residence.Residence; + /** * * @author Administrator */ public class InformationPager { - - public static int linesPerPage=7; - public static int getLinesPerPage() - { - return linesPerPage; - } + public static int linesPerPage = 7; - public static void setLinesPerPage(int lines) - { - linesPerPage = lines; - } + public static int getLinesPerPage() { + return linesPerPage; + } - public static void printInfo(CommandSender sender, String title, String[] lines, int page) - { - InformationPager.printInfo(sender, title, Arrays.asList(lines), page); - } + public static void printInfo(final Residence plugin, final CommandSender sender, final String title, final List lines, final int page) { + final int perPage = 6; + final int start = (page - 1) * perPage; + final int end = start + perPage; + int pagecount = (int) Math.ceil((double) lines.size() / (double) perPage); + if (pagecount == 0) { + pagecount = 1; + } + if (page > pagecount) { + sender.sendMessage(ChatColor.RED + plugin.getLanguage().getPhrase("InvalidPage")); + return; + } + sender.sendMessage(ChatColor.YELLOW + "---<" + ChatColor.GREEN + title + ChatColor.YELLOW + ">---"); + sender.sendMessage(ChatColor.YELLOW + "---<" + + plugin.getLanguage().getPhrase("GenericPage", ChatColor.GREEN + String.format("%d", page) + ChatColor.YELLOW + "." + ChatColor.GREEN + pagecount + ChatColor.YELLOW) + ">---"); + for (int i = start; i < end; i++) { + if (lines.size() > i) { + sender.sendMessage(ChatColor.GREEN + lines.get(i)); + } + } + if (pagecount > page) { + sender.sendMessage(ChatColor.GRAY + "---<" + plugin.getLanguage().getPhrase("NextPage") + ">---"); + } else { + sender.sendMessage(ChatColor.GRAY + "-----------------------"); + } + } - public static void printInfo(CommandSender sender, String title, List lines, int page) { - int perPage = 6; - int start = (page-1) * perPage; - int end = start + perPage; - int pagecount = (int) Math.ceil((double)lines.size()/(double)perPage); - if(pagecount == 0) - pagecount = 1; - if(page>pagecount) - { - sender.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("InvalidPage")); - return; - } - sender.sendMessage(ChatColor.YELLOW+"---<"+ChatColor.GREEN+title+ChatColor.YELLOW+">---"); - sender.sendMessage(ChatColor.YELLOW+"---<"+Residence.getLanguage().getPhrase("GenericPage",ChatColor.GREEN+String.format("%d",page)+ChatColor.YELLOW+"."+ChatColor.GREEN+pagecount+ChatColor.YELLOW)+">---"); - for(int i = start; i < end; i ++) - { - if(lines.size()>i) - sender.sendMessage(ChatColor.GREEN+lines.get(i)); - } - if(pagecount>page) - sender.sendMessage(ChatColor.GRAY+"---<"+Residence.getLanguage().getPhrase("NextPage")+">---"); - else - sender.sendMessage(ChatColor.GRAY+"-----------------------"); - } + public static void printInfo(final Residence plugin, final CommandSender sender, final String title, final String[] lines, final int page) { + InformationPager.printInfo(plugin, sender, title, Arrays.asList(lines), page); + } + + public static void setLinesPerPage(final int lines) { + linesPerPage = lines; + } } diff --git a/src/main/java/com/bekvon/bukkit/residence/utils/DataBackup.java b/src/main/java/com/bekvon/bukkit/residence/utils/DataBackup.java index dd40de4..08cb051 100644 --- a/src/main/java/com/bekvon/bukkit/residence/utils/DataBackup.java +++ b/src/main/java/com/bekvon/bukkit/residence/utils/DataBackup.java @@ -12,52 +12,68 @@ import java.util.zip.Deflater; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; +import org.bukkit.Bukkit; import org.bukkit.World; import com.bekvon.bukkit.residence.Residence; public class DataBackup { - private File BackupDir = new File(Residence.getDataLocation(), "Backup"); + private final File BackupDir; - public static void run() throws IOException { - DataBackup backup = new DataBackup(); + Residence plugin; + + public DataBackup(final Residence plugin) { + this.plugin = plugin; + BackupDir = new File(plugin.getDataLocation(), "Backup"); + } + + public static void run(final Residence plugin) throws IOException { + final DataBackup backup = new DataBackup(plugin); 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"); + final Date date = new Date(); + final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); + final File fileZip = new File(BackupDir, dateFormat.format(date) + ".zip"); // Create the Source List, and add directories/etc to the file. - List sources = new ArrayList(); + final List sources = new ArrayList(); - File saveFolder = new File(Residence.getDataLocation(), "Save"); - File worldFolder = new File(saveFolder, "Worlds"); + final File saveFolder = new File(plugin.getDataLocation(), "Save"); + final File worldFolder = new File(saveFolder, "Worlds"); if (!saveFolder.isDirectory()) { return; } File saveFile; - for (World world : Residence.getServ().getWorlds()) { + for (final World world : Bukkit.getServer().getWorlds()) { saveFile = new File(worldFolder, "res_" + world.getName() + ".yml"); if (saveFile.isFile()) { sources.add(saveFile); } } packZip(fileZip, sources); - } catch (Exception e) { + } catch (final Exception e) { e.printStackTrace(); return; } } - private void packZip(File output, List sources) throws IOException { - ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(output)); + private String buildPath(final String path, final String file) { + if (path == null || path.isEmpty()) { + return file; + } + + return path + File.separator + file; + } + + private void packZip(final File output, final List sources) throws IOException { + final ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(output)); zipOut.setLevel(Deflater.DEFAULT_COMPRESSION); - for (File source : sources) { + for (final File source : sources) { if (source.isDirectory()) { zipDir(zipOut, "", source); } else { @@ -69,23 +85,15 @@ public class DataBackup { 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 { + private void zipDir(final ZipOutputStream zos, String path, final File dir) throws IOException { if (!dir.canRead()) { return; } - File[] files = dir.listFiles(); + final File[] files = dir.listFiles(); path = buildPath(path, dir.getName()); - for (File source : files) { + for (final File source : files) { if (source.isDirectory()) { zipDir(zos, path, source); } else { @@ -94,15 +102,15 @@ public class DataBackup { } } - private void zipFile(ZipOutputStream zos, String path, File file) throws IOException { + private void zipFile(final ZipOutputStream zos, final String path, final 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]; + final FileInputStream fis = new FileInputStream(file); + final byte[] buffer = new byte[4092]; int byteCount = 0; while ((byteCount = fis.read(buffer)) != -1) { diff --git a/src/main/resources/languagefiles/Chinese.yml b/src/main/resources/languagefiles/Chinese.yml index 95e6ced..bdf6f97 100644 --- a/src/main/resources/languagefiles/Chinese.yml +++ b/src/main/resources/languagefiles/Chinese.yml @@ -164,8 +164,8 @@ Language: SubzoneOwnerChange: 分区 %1 所有者改为 %2 CoordsTop: X:%1 Y:%2 Z:%3 CoordsBottom: X:%1 Y:%2 Z:%3 - AdminToggle: Automatic resadmin toggle turned %1 - NoSpawn: You do not have move permissions at your spawn point. Relocating + AdminToggle: 自动使用resadmin模式切换为 %1 + NoSpawn: 你没有移动到Spawn的权限. Relocating CompassTargetReset: 你的指南针指向已重置 CompassTargetSet: 你的指南针现在指向领地 %1 Description: 描述 @@ -250,27 +250,27 @@ CommandHelp: Description: 扩大选区. Info: - '用法: /res select expand ' - - 根据你面朝的方向进行扩大,填写扩大的数值. + - '根据你面朝的方向进行扩大,填写扩大的数值.' shift: Description: 移动所选区域 Info: - '用法: /res select shift ' - - 根据你面朝的方向移动选区,填写移动的格数. + - '根据你面朝的方向移动选区,填写移动的格数.' chunk: Description: 选取你所在的Chunk区域. Info: - '用法: /res select chunk' - - 选择你所在的区块(16x16). + - '选择你所在的区块(16x16).' residence: Description: Select a existing area in a residence. Info: - - 用法 /res select - - Selects a existing area in a residence. + - '用法 /res select ' + - 'Selects a existing area in a residence.' worldedit: - Description: 设置选区为WorldEdit的已选择区域. + Description: '设置选区为WorldEdit的已选择区域.' Info: - - 用法 /res select worldedit - - 设置领地的选区为WorldEdit的已选择区域. + - '用法 /res select worldedit.' + - '设置领地的选区为WorldEdit的已选择区域.' create: Description: 创建领地 Info: @@ -294,7 +294,7 @@ CommandHelp: Description: 在某个领地里创建附属领地. Info: - '用法: /res subzone <领地名> [附属领地名]' - - 如果领地名为空,那么将以你所在的领地为主 + - '如果领地名为空,那么将以你所在的领地为主.' area: Description: 管理一个领地的物理区域. SubCommands: @@ -391,8 +391,8 @@ CommandHelp: Info: - '用法: /res lset [blacklist/ignorelist] [material]' - '用法: /res lset info' - - 'Blacklisting a material prevents it from being placed in the residence.' - - 'Ignorelist causes a specific material to not be protected by Residence.' + - '黑名单将在领地内被保护 当其被放置以后.' + - '忽略名单内的物品将不会被领地保护.' flags: Description: 例举所有可配置属性 Info: @@ -413,15 +413,15 @@ CommandHelp: - healing - 允许或禁止领地内生命回复 - tnt - 允许或禁止领地内TNT爆炸 - creeper - 允许或禁止领地内苦力怕爆炸 - - ignite - allows or denys fire ignition. - - firespread - allows or denys fire spread. + - ignite - 允许或阻止火的生成. + - firespread - 允许或阻止火的蔓延. - bucket - 允许或禁止领地内使用桶. - flow - 允许或禁止领地内液体流动. - lavaflow - 允许或禁止领地内岩浆流动,覆盖flow属性 - waterflow - 允许或禁止领地内水流动,覆盖flow属性 - damage - 允许或禁止领地内所有的实体伤害. - piston - 允许或禁止领地内活塞推动或吸方块. - - hidden - hides residence from list or listall commands. + - hidden - 从全体领地列表隐藏领地. - cake - 允许或禁止领地内吃蛋糕 - lever - 允许或禁止领地内使用拉杆 - button - 允许或禁止领地内使用按钮 @@ -441,11 +441,21 @@ CommandHelp: - '用法: /res list ' - '列出某个玩家的所有领地.' - '列出所有玩家的领地, 请使用 /res listall.' + listhidden: + Description: List Hidden Residences (ADMIN ONLY) + Info: + - 'Usage: /res listhidden ' + - 'Lists hidden residences for a player.' listall: Description: 查看所有玩家领地 Info: - '用法: /res listall ' - '列出所有玩家的领地.' + listallhidden: + Description: List All Hidden Residences (ADMIN ONLY) + Info: + - 'Usage: /res listhidden ' + - 'Lists all hidden residences on the server.' sublist: Description: 查看领地内的子区域 Info: @@ -459,14 +469,14 @@ CommandHelp: rename: Description: 重命名领地. Info: - - '用法: /res rename [OldName] [NewName]' - - You must be the owner or an admin to do this. - - The name must not already be taken by another residence. + - '用法: /res rename [旧名称] [新名称]' + - '只有领地所有者和管理员可以使用此命令.' + - '所更改的名称不能重复.' mirror: Description: 复制某个领地的属性 Info: - - '用法: /res mirror [Source Residence] [Target Residence]' - - Mirrors flags from one residence to another. You must be owner of both or a admin to do this. + - '用法: /res mirror [源 领地] [目标 领地]' + - '复制 源 领地 的属性配置到 目标 领地' market: Description: 购买, 出售, 或 租借 领地 Info: @@ -513,7 +523,7 @@ CommandHelp: - If you are the renter, this command releases the rent on the house for you. - If you are the owner, this command makes the residence not for rent anymore. current: - Description: Show residence your currently in. + Description: 展示当前领地现状. Info: - '用法: /res current' lists: @@ -558,17 +568,17 @@ CommandHelp: Description: 设置某个领地的所有者(仅限管理员使用) Info: - '用法: /resadmin setowner [领地名] [玩家]' - resreload: - Description: 重新加载插件配置(仅限管理员使用) - Info: - - '用法: /resreload' - resload: - Description: 载入已保存的配置文件 (不安全, 仅限管理员使用). - Info: - - '用法: /resload' - - UNSAFE command, does not save residences first. - - Loads the residence save file after you have made changes. version: Description: 显示领地插件的版本信息 Info: - - '用法: /res version' \ No newline at end of file + - '用法: /res version' + resreload: + Description: 重新加载插件配置(仅限管理员使用) + Info: + - '用法: /resreload' + resload: + Description: 载入已保存的配置文件 (不安全, 仅限管理员使用). + Info: + - '用法: /resload' + - UNSAFE command, does not save residences first. + - Loads the residence save file after you have made changes. \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 56c257f..c41a15a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,15 +1,15 @@ -name: Residence -main: com.bekvon.bukkit.residence.ResidenceCommandListener -version: 2.7.0.6 -website: http://ci.citycraft.cn:8800/jenkins/job/Residence/ -description: Cuboid Residence Plugin +name: ${project.artifactId} +description: ${project.description} +main: com.bekvon.bukkit.residence.${project.artifactId} +version: ${project.version} +website: http://ci.citycraft.cn:8800/jenkins/job/${project.artifactId}/ authors: [bekvon,nate302,t00thpick1,喵♂呜] contributors: [lemon42,smbarbour,inorixu,Shayana_fr] softdepend: [Vault,Essentials,RealPlugin,BOSEconomy,iConomy,bPermissions,PermissionsBukkit,Permissions,WorldEdit] commands: residence: description: 管理领地. - aliese: [res] + aliases: [res] usage: §c使用/res ? 或 /residence ? 或 /resadmin ? 获取更多帮助. resadmin: description: 管理员命令 管理领地.