package com.massivecraft.factions.entity; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.event.EventPriority; import com.massivecraft.factions.Factions; import com.massivecraft.factions.listeners.FactionsListenerChat; import com.massivecraft.mcore.store.Entity; import com.massivecraft.mcore.util.MUtil; public class MConf extends Entity { // -------------------------------------------- // // META // -------------------------------------------- // protected static transient MConf i; public static MConf get() { return i; } // -------------------------------------------- // // OVERRIDE: ENTITY // -------------------------------------------- // @Override public MConf load(MConf that) { super.load(that); if (!Factions.get().isDatabaseInitialized()) return this; FactionsListenerChat.get().setup(); return this; } // -------------------------------------------- // // TASKS // -------------------------------------------- // public double taskPlayerPowerUpdateMinutes = 1; public double taskPlayerDataRemoveMinutes = 5; public double taskEconLandRewardMinutes = 20; // -------------------------------------------- // // REMOVE DATA // -------------------------------------------- // public boolean removePlayerDataWhenBanned = true; public double removePlayerDataAfterInactiveDays = 20.0; // -------------------------------------------- // // CLAIM LIMITS // -------------------------------------------- // // if someone is doing a radius claim and the process fails to claim land this many times in a row, it will exit public int radiusClaimFailureLimit = 9; // the maximum radius allowed when using the claim command. public int radiusClaimRadiusLimit = 5; // -------------------------------------------- // // CHAT // -------------------------------------------- // // We offer a simple standard way to set the format public boolean chatSetFormat = false; public EventPriority chatSetFormatAt = EventPriority.LOWEST; public String chatSetFormatTo = "<{factions_relcolor}§l{factions_roleprefix}§r{factions_relcolor}{factions_name|rp}§f%1$s> %2$s"; // We offer a simple standard way to parse the chat tags public boolean chatParseTags = true; public EventPriority chatParseTagsAt = EventPriority.LOW; // HeroChat: The Faction Channel public String herochatFactionName = "Faction"; public String herochatFactionNick = "F"; public String herochatFactionFormat = "{color}[&l{nick}&r{color} &l{factions_roleprefix}&r{color}{factions_title|rp}{sender}{color}] &f{msg}"; public ChatColor herochatFactionColor = ChatColor.GREEN; public int herochatFactionDistance = 0; public boolean herochatFactionIsShortcutAllowed = false; public boolean herochatFactionCrossWorld = true; public boolean herochatFactionMuted = false; public Set herochatFactionWorlds = new HashSet(); // HeroChat: The Allies Channel public String herochatAlliesName = "Allies"; public String herochatAlliesNick = "A"; public String herochatAlliesFormat = "{color}[&l{nick}&r&f {factions_relcolor}&l{factions_roleprefix}&r{factions_relcolor}{factions_name|rp}{sender}{color}] &f{msg}"; public ChatColor herochatAlliesColor = ChatColor.DARK_PURPLE; public int herochatAlliesDistance = 0; public boolean herochatAlliesIsShortcutAllowed = false; public boolean herochatAlliesCrossWorld = true; public boolean herochatAlliesMuted = false; public Set herochatAlliesWorlds = new HashSet(); // -------------------------------------------- // // COLORS // -------------------------------------------- // public ChatColor colorMember = ChatColor.GREEN; public ChatColor colorAlly = ChatColor.DARK_PURPLE; public ChatColor colorTruce = ChatColor.LIGHT_PURPLE; public ChatColor colorNeutral = ChatColor.WHITE; public ChatColor colorEnemy = ChatColor.RED; public ChatColor colorNoPVP = ChatColor.GOLD; public ChatColor colorFriendlyFire = ChatColor.DARK_RED; //public ChatColor colorWilderness = ChatColor.DARK_GREEN; // -------------------------------------------- // // PREFIXES // -------------------------------------------- // public String prefixLeader = "**"; public String prefixOfficer = "*"; public String prefixMember = "+"; public String prefixRecruit = "-"; // -------------------------------------------- // // DERPY OVERRIDES // -------------------------------------------- // // TODO: Should worldsNoPowerLoss rather be a bukkit permission node? // TODO: These are derpy because they possibly use an invalid design approach. // After universe support is added. Would some of these be removed? // Could it also be more customizeable using some sort of permission lookup map? // mainly for other plugins/mods that use a fake player to take actions, which shouldn't be subject to our protections public Set playersWhoBypassAllProtection = new LinkedHashSet(); public Set worldsNoClaiming = new LinkedHashSet(); public Set getWorldsNoClaiming() { Set ret = new TreeSet(String.CASE_INSENSITIVE_ORDER); ret.addAll(this.worldsNoClaiming); return ret; } public Set worldsNoPowerLoss = new LinkedHashSet(); public Set getWorldsNoPowerLoss() { Set ret = new TreeSet(String.CASE_INSENSITIVE_ORDER); ret.addAll(this.worldsNoPowerLoss); return ret; } public Set worldsIgnorePvP = new LinkedHashSet(); public Set getWorldsIgnlorePvP() { Set ret = new TreeSet(String.CASE_INSENSITIVE_ORDER); ret.addAll(this.worldsIgnorePvP); return ret; } // -------------------------------------------- // // EXPLOITS // -------------------------------------------- // public boolean handleExploitObsidianGenerators = true; public boolean handleExploitEnderPearlClipping = true; public boolean handleExploitTNTWaterlog = false; // -------------------------------------------- // // LOGGING // -------------------------------------------- // public boolean logFactionCreate = true; public boolean logFactionDisband = true; public boolean logFactionJoin = true; public boolean logFactionKick = true; public boolean logFactionLeave = true; public boolean logLandClaims = true; public boolean logLandUnclaims = true; public boolean logMoneyTransactions = true; public boolean logPlayerCommands = true; // -------------------------------------------- // // ENUMERATIONS // -------------------------------------------- // public Set MATERIALS_EDIT_ON_INTERACT = MUtil.set( Material.DIODE_BLOCK_OFF, Material.DIODE_BLOCK_ON, Material.NOTE_BLOCK, Material.CAULDRON, Material.SOIL ); public Set MATERIALS_EDIT_TOOLS = MUtil.set( Material.FIREBALL, Material.FLINT_AND_STEEL, Material.BUCKET, Material.WATER_BUCKET, Material.LAVA_BUCKET ); public Set MATERIALS_DOOR = MUtil.set( Material.WOODEN_DOOR, Material.TRAP_DOOR, Material.FENCE_GATE ); public Set MATERIALS_CONTAINER = MUtil.set( Material.DISPENSER, Material.CHEST, Material.FURNACE, Material.BURNING_FURNACE, Material.JUKEBOX, Material.BREWING_STAND, Material.ENCHANTMENT_TABLE, Material.ANVIL, Material.BEACON, Material.TRAPPED_CHEST, Material.HOPPER, Material.DROPPER ); public Set ENTITY_TYPES_MONSTERS = MUtil.set( EntityType.BLAZE, EntityType.CAVE_SPIDER, EntityType.CREEPER, EntityType.ENDERMAN, EntityType.ENDER_DRAGON, EntityType.GHAST, EntityType.GIANT, EntityType.MAGMA_CUBE, EntityType.PIG_ZOMBIE, EntityType.SILVERFISH, EntityType.SKELETON, EntityType.SLIME, EntityType.SPIDER, EntityType.WITCH, EntityType.WITHER, EntityType.ZOMBIE ); }