Factions/src/com/massivecraft/factions/entity/MConf.java
2013-04-23 12:14:36 +02:00

193 lines
6.8 KiB
Java

package com.massivecraft.factions.entity;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.event.EventPriority;
import org.bukkit.permissions.PermissionDefault;
import com.massivecraft.mcore.store.Entity;
import com.massivecraft.mcore.util.MUtil;
import com.massivecraft.mcore.util.PermUtil;
import com.massivecraft.mcore.util.TimeUnit;
public class MConf extends Entity<MConf>
{
// -------------------------------------------- //
// META
// -------------------------------------------- //
protected static transient MConf i;
public static MConf get() { return i; }
// -------------------------------------------- //
// OVERRIDE: ENTITY
// -------------------------------------------- //
@Override
public MConf load(MConf that)
{
super.load(that);
this.upsertPowerPerms();
return this;
}
// -------------------------------------------- //
// POWER
// -------------------------------------------- //
public long powerTaskMillis = TimeUnit.MILLIS_PER_MINUTE;
public Map<String, Double> permToPowerMax = MUtil.map(
"factions.power.max.50", 50.0,
"factions.power.max.40", 40.0,
"factions.power.max.30", 30.0,
"factions.power.max.20", 20.0,
"factions.power.max.10", 10.0,
"factions.power.max.default", 10.0
);
public Map<String, Double> permToPowerMin = MUtil.map(
"factions.power.min.50", 50.0,
"factions.power.min.40", 40.0,
"factions.power.min.30", 30.0,
"factions.power.min.20", 20.0,
"factions.power.min.10", 10.0,
"factions.power.min.default", 10.0
);
public Map<String, Double> permToPowerHour = MUtil.map(
"factions.power.hour.50", 50.0,
"factions.power.hour.40", 40.0,
"factions.power.hour.30", 30.0,
"factions.power.hour.20", 20.0,
"factions.power.hour.10", 10.0,
"factions.power.hour.4", 4.0,
"factions.power.hour.2", 2.0,
"factions.power.hour.default", 2.0
);
public Map<String, Double> permToPowerDeath = MUtil.map(
"factions.power.death.0", 0.0,
"factions.power.death.-2", -2.0,
"factions.power.death.default", -2.0
);
public void upsertPowerPerms()
{
List<String> names = new ArrayList<String>();
names.addAll(this.permToPowerMax.keySet());
names.addAll(this.permToPowerMin.keySet());
names.addAll(this.permToPowerHour.keySet());
names.addAll(this.permToPowerDeath.keySet());
for (String name : names)
{
PermUtil.get(true, true, name, name, PermissionDefault.FALSE);
}
}
// -------------------------------------------- //
// 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_tag|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<String> herochatFactionWorlds = new HashSet<String>();
// 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_tag|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<String> herochatAlliesWorlds = new HashSet<String>();
// -------------------------------------------- //
// 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 approact.
// 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<String> playersWhoBypassAllProtection = new LinkedHashSet<String>();
public Set<String> worldsNoClaiming = new LinkedHashSet<String>();
public Set<String> worldsNoPowerLoss = new LinkedHashSet<String>();
public Set<String> worldsIgnorePvP = new LinkedHashSet<String>();
// -------------------------------------------- //
// EXPLOITS
// -------------------------------------------- //
public boolean handleExploitObsidianGenerators = true;
public boolean handleExploitEnderPearlClipping = true;
public boolean handleExploitInteractionSpam = 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;
}