/* * To change this template, choose Tools | Templates and open the template in the editor. */ package com.bekvon.bukkit.residence.manager; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import com.bekvon.bukkit.residence.Residence; import com.bekvon.bukkit.residence.protection.FlagPermissions; /** * * @author Administrator */ public class ConfigManager { private boolean enforceAreaInsideArea; protected boolean actionBar; protected boolean adminOps; protected boolean adminsOnly; protected boolean allowEmptyResidences; protected int autoSaveInt; protected ChatColor chatColor; protected boolean chatEnable; 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 Map globalGroupDefaults; protected FlagPermissions globalResidenceDefaults; protected int infoToolId; protected String language; 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 stopOnSaveError; protected boolean useLeases; public ConfigManager(final Residence plugin) { this.plugin = plugin; globalCreatorDefaults = new FlagPermissions(); globalResidenceDefaults = new FlagPermissions(); globalGroupDefaults = new HashMap(); this.load(plugin.getConfig()); } public boolean allowAdminsOnly() { return adminsOnly; } public boolean allowEmptyResidences() { return allowEmptyResidences; } public boolean autoRenewLeases() { return leaseAutoRenew; } public boolean chatEnabled() { return chatEnable; } public boolean debugEnabled() { return enableDebug; } public boolean enabledRentSystem() { return enableRentSystem && enableEconomy(); } public boolean enableEconomy() { return enableEconomy && plugin.getEconomyManager() != null; } public boolean enableLeaseMoneyAccount() { return enableLeaseMoneyAccount; } public boolean enableSpout() { return spoutEnable; } public boolean flagsInherit() { return flagsInherit; } public int getAutoSaveInterval() { return autoSaveInt; } public ChatColor getChatColor() { return chatColor; } public List getCustomBothClick() { return customBothClick; } public List getCustomContainers() { return customContainers; } public List getCustomRightClick() { return customRightClick; } public String getDefaultGroup() { return defaultGroup; } public String getEconomySystem() { return economySystem; } public boolean getEnforceAreaInsideArea() { return enforceAreaInsideArea; } public FlagPermissions getGlobalCreatorDefaultFlags() { return globalCreatorDefaults; } public Map getGlobalGroupDefaultFlags() { return globalGroupDefaults; } public FlagPermissions getGlobalResidenceDefaultFlags() { return globalResidenceDefaults; } public int getInfoToolID() { return infoToolId; } public String getLanguage() { return language; } public int getLeaseCheckInterval() { return leaseCheckInterval; } public int getMinMoveUpdateInterval() { return minMoveUpdate; } public String getMultiworldPlugin() { return multiworldPlugin; } public boolean getOpsAreAdmins() { return adminOps; } public int getRentCheckInterval() { return rentCheckInterval; } public String getResidenceNameRegex() { return namefix; } public int getSelectionTooldID() { return selectionToolId; } public boolean preventRentModify() { return preventBuildInRent; } public boolean showIntervalMessages() { return showIntervalMessages; } public boolean stopOnSaveError() { return stopOnSaveError; } public boolean useActionBar() { return actionBar; } public boolean useLeases() { return useLeases; } public boolean useLegacyPermissions() { return legacyperms; } @SuppressWarnings("deprecation") 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); leaseAutoRenew = config.getBoolean("Global.LeaseAutoRenew", true); enableEconomy = config.getBoolean("Global.EnableEconomy", false); economySystem = config.getString("Global.EconomySystem", "iConomy"); infoToolId = config.getInt("Global.InfoToolId", Material.STRING.getId()); selectionToolId = config.getInt("Global.SelectionToolId", Material.WOOD_AXE.getId()); adminOps = config.getBoolean("Global.AdminOPs", true); multiworldPlugin = config.getString("Global.MultiWorldPlugin"); enableRentSystem = config.getBoolean("Global.EnableRentSystem", false); rentCheckInterval = config.getInt("Global.RentCheckInterval", 10); leaseCheckInterval = config.getInt("Global.LeaseCheckInterval", 10); autoSaveInt = config.getInt("Global.SaveInterval", 10); flagsInherit = config.getBoolean("Global.ResidenceFlagsInherit", false); minMoveUpdate = config.getInt("Global.MoveCheckInterval", 500); chatEnable = config.getBoolean("Global.ResidenceChatEnable", true); actionBar = config.getBoolean("Global.UseActionBar", true); enforceAreaInsideArea = config.getBoolean("Global.EnforceAreaInsideArea", false); language = config.getString("Global.Language", "English"); globalCreatorDefaults = FlagPermissions.parseFromConfigNode("CreatorDefault", config.getConfigurationSection("Global")); globalResidenceDefaults = FlagPermissions.parseFromConfigNode("ResidenceDefault", config.getConfigurationSection("Global")); preventBuildInRent = config.getBoolean("Global.PreventRentModify", true); stopOnSaveError = config.getBoolean("Global.StopOnSaveFault", true); legacyperms = config.getBoolean("Global.LegacyPermissions", false); namefix = config.getString("Global.ResidenceNameRegex", "[A-Za-z0-9\\u4e00-\\u9fa5\\-\\_]");// "[^a-zA-Z0-9\\-\\_]" showIntervalMessages = config.getBoolean("Global.ShowIntervalMessages", false); spoutEnable = config.getBoolean("Global.EnableSpout", false); enableLeaseMoneyAccount = config.getBoolean("Global.EnableLeaseMoneyAccount", true); enableDebug = config.getBoolean("Global.EnableDebug", false); customContainers = config.getIntegerList("Global.CustomContainers"); customBothClick = config.getIntegerList("Global.CustomBothClick"); customRightClick = config.getIntegerList("Global.CustomRightClick"); final ConfigurationSection node = config.getConfigurationSection("Global.GroupDefault"); if (!plugin.is1_8()) { actionBar = false; } if (node != null) { 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 (final Exception ex) { chatColor = ChatColor.DARK_PURPLE; } } }