Factions/src/com/massivecraft/factions/Conf.java

275 lines
13 KiB
Java
Raw Normal View History

2011-07-18 22:06:02 +02:00
package com.massivecraft.factions;
2011-02-06 13:36:11 +01:00
import java.util.*;
2011-02-06 13:36:11 +01:00
import org.bukkit.*;
2011-03-23 17:39:56 +01:00
import org.bukkit.entity.CreatureType;
2011-07-18 22:06:02 +02:00
import com.massivecraft.factions.struct.FFlag;
2011-10-24 01:37:51 +02:00
import com.massivecraft.factions.struct.FPerm;
import com.massivecraft.factions.struct.Rel;
2011-10-23 20:50:49 +02:00
public class Conf
{
public static List<String> baseCommandAliases = new ArrayList<String>();
public static boolean allowNoSlashCommand = true;
// Colors
public static ChatColor colorMember = ChatColor.GREEN;
public static ChatColor colorAlly = ChatColor.DARK_PURPLE;
public static ChatColor colorTruce = ChatColor.LIGHT_PURPLE;
public static ChatColor colorNeutral = ChatColor.WHITE;
public static ChatColor colorEnemy = ChatColor.RED;
2011-10-21 19:20:33 +02:00
public static ChatColor colorNoPVP = ChatColor.GOLD;
public static ChatColor colorFriendlyFire = ChatColor.DARK_RED;
//public static ChatColor colorWilderness = ChatColor.DARK_GREEN;
public static Map<FFlag, Boolean> factionFlagDefaults;
public static Map<FFlag, Boolean> factionFlagIsChangeable;
2011-10-24 01:37:51 +02:00
public static Map<FPerm, Set<Rel>> factionPermDefaults;
2011-10-23 20:50:49 +02:00
// Power
public static double powerPlayerMax = 10.0;
public static double powerPlayerMin = -10.0;
public static double powerPerMinute = 0.2; // Default health rate... it takes 5 min to heal one power
public static double powerPerDeath = 4.0; // A death makes you lose 4 power
public static boolean powerRegenOffline = false; // does player power regenerate even while they're offline?
2011-10-14 23:45:39 +02:00
public static double powerOfflineLossPerDay = 0.0; // players will lose this much power per day offline
public static double powerOfflineLossLimit = 0.0; // players will no longer lose power from being offline once their power drops to this amount or less
public static double powerFactionMax = 0.0; // if greater than 0, the cap on how much power a faction can have (additional power from players beyond that will act as a "buffer" of sorts)
2011-02-06 13:36:11 +01:00
2011-10-23 17:55:53 +02:00
public static String prefixLeader = "**";
public static String prefixOfficer = "*";
2011-02-06 13:36:11 +01:00
public static int factionTagLengthMin = 3;
public static int factionTagLengthMax = 10;
public static boolean factionTagForceUpperCase = false;
2011-02-06 13:36:11 +01:00
public static boolean newFactionsDefaultOpen = false;
// what faction ID to start new players in when they first join the server; default is 0, "no faction"
public static String newPlayerStartingFactionID = "0";
//public static boolean showMapFactionKey = true;
//public static boolean showNeutralFactionsOnMap = true;
//public static boolean showEnemyFactionsOnMap = true;
// Disallow joining/leaving/kicking while power is negative
public static boolean canLeaveWithNegativePower = true;
// Configuration for faction-only chat
public static boolean factionOnlyChat = true;
// Configuration on the Faction tag in chat messages.
public static boolean chatTagEnabled = true;
public static transient boolean chatTagHandledByAnotherPlugin = false;
public static boolean chatTagRelationColored = true;
public static String chatTagReplaceString = "{FACTION}";
public static String chatTagInsertAfterString = "";
public static String chatTagInsertBeforeString = "";
public static int chatTagInsertIndex = 1;
public static boolean chatTagPadBefore = false;
public static boolean chatTagPadAfter = true;
public static String chatTagFormat = "%s"+ChatColor.WHITE;
public static String factionChatFormat = "%s:"+ChatColor.WHITE+" %s";
public static String allianceChatFormat = ChatColor.LIGHT_PURPLE+"%s:"+ChatColor.WHITE+" %s";
2011-10-14 23:45:39 +02:00
public static double autoLeaveAfterDaysOfInactivity = 10.0;
2011-03-23 17:39:56 +01:00
public static boolean worldGuardChecking = false;
// server logging options
public static boolean logFactionCreate = true;
public static boolean logFactionDisband = true;
public static boolean logFactionJoin = true;
public static boolean logFactionKick = true;
public static boolean logFactionLeave = true;
public static boolean logLandClaims = true;
public static boolean logLandUnclaims = true;
public static boolean logMoneyTransactions = true;
2011-08-29 05:59:49 +02:00
2011-03-23 17:39:56 +01:00
public static boolean homesEnabled = true;
public static boolean homesMustBeInClaimedTerritory = true;
2011-03-23 17:39:56 +01:00
public static boolean homesTeleportToOnDeath = true;
public static boolean homesRespawnFromNoPowerLossWorlds = true;
public static boolean homesTeleportCommandEnabled = true;
public static boolean homesTeleportCommandSmokeEffectEnabled = true;
public static float homesTeleportCommandSmokeEffectThickness = 3f;
public static boolean homesTeleportAllowedFromEnemyTerritory = true;
public static boolean homesTeleportAllowedFromDifferentWorld = true;
public static double homesTeleportAllowedEnemyDistance = 32.0;
public static boolean homesTeleportIgnoreEnemiesIfInOwnTerritory = true;
2011-10-24 11:07:06 +02:00
public static Rel friendlyFireFromRel = Rel.TRUCE;
public static boolean disablePVPForFactionlessPlayers = false;
public static boolean enablePVPAgainstFactionlessInAttackersLand = false;
public static int noPVPDamageToOthersForXSecondsAfterLogin = 3;
New "peaceful" status for factions which can only be set by server admins/moderators. Members of peaceful factions cannot deal or receive PvP damage (unless in a war zone which has friendly fire enabled), cannot claim land from another faction and likewise can't have their land claimed, and cannot be considered as ally or enemy of any other faction. Faction admins and moderators of peaceful factions can enable/disable all explosions inside their faction's territory at will. The main purpose of this is to provide a way for more peaceful players who don't want to take part in faction wars (or just want to take a break from them) to still have fun on the server. It is also meant to allow groups of players to make protected buildings, monuments, grand constructions, and so forth without having to worry about another faction destroying them. New conf.json settings: "peacefulTerritoryDisablePVP" (default true) prevents PvP damage for anyone inside a peaceful faction's territory "peacefulTerritoryDisableMonsters" (default false) provides protection against monsters spawning or attacking inside a peaceful faction's territory "peacefulMembersDisablePowerLoss" (default true) which keeps members of peaceful factions from suffering power loss when they die. New commands: /f peaceful [faction tag] - toggle the indicated faction's "peaceful" status /f noboom - enable/disable explosions inside your faction's territory; only available to faction admin and faction moderators for peaceful factions New permission nodes: factions.setPeaceful - ability to use the /f peaceful command (admins) factions.peacefulExplosionToggle - ability to use /f noboom (everyone)
2011-08-05 10:50:47 +02:00
2011-10-24 03:02:25 +02:00
//public static boolean peacefulMembersDisablePowerLoss = true;
public static boolean claimsMustBeConnected = false;
public static boolean claimsCanBeUnconnectedIfOwnedByOtherFaction = true;
public static int claimsRequireMinFactionMembers = 1;
2011-10-24 03:02:25 +02:00
//public static double considerFactionsReallyOfflineAfterXMinutes = 0.0;
2011-10-24 01:37:51 +02:00
public static int actionDeniedPainAmount = 2;
// commands which will be prevented when in claimed territory of another faction
public static Set<String> territoryNeutralDenyCommands = new HashSet<String>();
public static Set<String> territoryEnemyDenyCommands = new HashSet<String>();
public static double territoryShieldFactor = 0.3;
// for claimed areas where further faction-member ownership can be defined
public static boolean pistonProtectionThroughDenyBuild = true;
2011-10-24 01:37:51 +02:00
public final transient static Set<Material> materialsEditOnInteract = EnumSet.noneOf(Material.class);
public final transient static Set<Material> materialsEditTools = EnumSet.noneOf(Material.class);
public final transient static Set<Material> materialsDoor = EnumSet.noneOf(Material.class);
public final transient static Set<Material> materialsContainer = EnumSet.noneOf(Material.class);
//public static Set<Material> territoryProtectedMaterialsWhenOffline = EnumSet.noneOf(Material.class);
//public static Set<Material> territoryDenyUseageMaterialsWhenOffline = EnumSet.noneOf(Material.class);
2011-03-22 20:36:33 +01:00
2011-10-23 22:08:57 +02:00
// TODO: Rename to monsterCreatureTypes
2011-10-24 01:37:51 +02:00
public static transient Set<CreatureType> monsters = EnumSet.noneOf(CreatureType.class);
// Spout features
public static boolean spoutFactionTagsOverNames = true; // show faction tags over names over player heads
public static boolean spoutFactionTitlesOverNames = true; // whether to include player's title in that
2011-10-23 17:55:53 +02:00
public static boolean spoutFactionLeaderCapes = true; // Show capes on faction admins, colored based on the viewer's relation to the target player
public static boolean spoutFactionOfficerCapes = true; // same, but for faction moderators
public static int spoutTerritoryDisplayPosition = 3; // permanent territory display, instead of by chat; 0 = disabled, 1 = top left, 2 = top center, 3+ = top right
public static float spoutTerritoryDisplaySize = 1.0f; // text scale (size) for territory display
public static boolean spoutTerritoryDisplayShowDescription = true; // whether to show the faction description, not just the faction tag
public static boolean spoutTerritoryOwnersShow = true; // show territory owner list as well
public static boolean spoutTerritoryNoticeShow = true; // show additional brief territory notice near center of screen, to be sure player notices transition
public static int spoutTerritoryNoticeTop = 40; // how far down the screen to place the additional notice
public static boolean spoutTerritoryNoticeShowDescription = false; // whether to show the faction description in the notice, not just the faction tag
public static float spoutTerritoryNoticeSize = 1.5f; // text scale (size) for notice
public static float spoutTerritoryNoticeLeaveAfterSeconds = 2.00f; // how many seconds before the notice goes away
public static String capeAlly = "https://github.com/MassiveCraft/Factions/raw/master/capes/ally.png";
public static String capeEnemy = "https://github.com/MassiveCraft/Factions/raw/master/capes/enemy.png";
public static String capeMember = "https://github.com/MassiveCraft/Factions/raw/master/capes/member.png";
public static String capeNeutral = "https://github.com/MassiveCraft/Factions/raw/master/capes/neutral.png";
public static String capePeaceful = "https://github.com/MassiveCraft/Factions/raw/master/capes/peaceful.png";
// Economy settings
2011-10-12 17:25:01 +02:00
public static boolean econEnabled = false;
public static String econUniverseAccount = "";
public static double econCostClaimWilderness = 30.0;
public static double econCostClaimFromFactionBonus = 30.0;
public static double econClaimAdditionalMultiplier = 0.5;
public static double econClaimRefundMultiplier = 0.7;
public static double econCostCreate = 100.0;
public static double econCostSethome = 30.0;
public static double econCostJoin = 0.0;
public static double econCostLeave = 0.0;
public static double econCostKick = 0.0;
public static double econCostInvite = 0.0;
public static double econCostHome = 0.0;
public static double econCostTag = 0.0;
public static double econCostDesc = 0.0;
public static double econCostTitle = 0.0;
public static double econCostList = 0.0;
public static double econCostMap = 0.0;
public static double econCostPower = 0.0;
public static double econCostShow = 0.0;
public static double econCostOpen = 0.0;
public static double econCostAlly = 0.0;
2011-10-24 11:07:06 +02:00
public static double econCostTruce = 0.0;
public static double econCostNeutral = 0.0;
2011-10-24 11:07:06 +02:00
public static double econCostEnemy = 0.0;
2011-03-23 17:39:56 +01:00
Some tweaking of the faction bank code... The new help page with bank related commands will now only be shown if banks are enabled and the Economy is enabled and hooked in. Shortened a couple of command descriptions to fit on one line. Made Deposit, Pay, and Withdraw commands additionally log to the server console/log. When bank is given to person disbanding a faction, it now lets them know and logs it to the server log. Added commands to commandDisable list in plugin.yml, along with "permanent" command which I'd missed adding before Added new permission node factions.viewAnyFactionBalance (granted by default if using superperms), which is required to view the bank balance of other factions For reference, about the faction bank addition as a whole... New conf.json settings: "bankEnabled": true, - enable faction banks "bankMembersCanWithdraw": false, - have to be at least moderator to withdraw or pay money to another faction, unless this is set to true "bankFactionPaysCosts": true, - if true, payments for faction command costs are charged to faction bank "bankFactionPaysLandCosts": true, - if true, payments for land claims are charged to faction bank New commands: /f balance *<faction tag> - Shows the bank balance of a specified faction (if permission checks out), or the player's faction if none is specified /f deposit <amount> - Deposit money into your faction's bank /f pay <faction tag> <amount> - Pay money from your faction bank to another faction (requires moderator or admin status) /f withdraw <amount> - Withdraw money from your faction's bank (requires moderator or admin status, unless "bankMembersCanWithdraw" is set to true) New permission node: factions.viewAnyFactionBalance - Allows the player to view the faction bank balance of all factions (default)
2011-10-01 12:59:09 +02:00
//Faction banks, to pay for land claiming and other costs instead of individuals paying for them
public static boolean bankEnabled = true;
//public static boolean bankMembersCanWithdraw = false; //Have to be at least moderator to withdraw or pay money to another faction
Some tweaking of the faction bank code... The new help page with bank related commands will now only be shown if banks are enabled and the Economy is enabled and hooked in. Shortened a couple of command descriptions to fit on one line. Made Deposit, Pay, and Withdraw commands additionally log to the server console/log. When bank is given to person disbanding a faction, it now lets them know and logs it to the server log. Added commands to commandDisable list in plugin.yml, along with "permanent" command which I'd missed adding before Added new permission node factions.viewAnyFactionBalance (granted by default if using superperms), which is required to view the bank balance of other factions For reference, about the faction bank addition as a whole... New conf.json settings: "bankEnabled": true, - enable faction banks "bankMembersCanWithdraw": false, - have to be at least moderator to withdraw or pay money to another faction, unless this is set to true "bankFactionPaysCosts": true, - if true, payments for faction command costs are charged to faction bank "bankFactionPaysLandCosts": true, - if true, payments for land claims are charged to faction bank New commands: /f balance *<faction tag> - Shows the bank balance of a specified faction (if permission checks out), or the player's faction if none is specified /f deposit <amount> - Deposit money into your faction's bank /f pay <faction tag> <amount> - Pay money from your faction bank to another faction (requires moderator or admin status) /f withdraw <amount> - Withdraw money from your faction's bank (requires moderator or admin status, unless "bankMembersCanWithdraw" is set to true) New permission node: factions.viewAnyFactionBalance - Allows the player to view the faction bank balance of all factions (default)
2011-10-01 12:59:09 +02:00
public static boolean bankFactionPaysCosts = true; //The faction pays for faction command costs, such as sethome
public static boolean bankFactionPaysLandCosts = true; //The faction pays for land claiming costs.
public static Set<String> worldsNoClaiming = new HashSet<String>();
public static Set<String> worldsNoPowerLoss = new HashSet<String>();
public static Set<String> worldsIgnorePvP = new HashSet<String>();
2011-10-23 22:08:57 +02:00
// TODO: A better solution Would be to have One wilderness faction per world.
2011-10-24 03:02:25 +02:00
//public static Set<String> worldsNoWildernessProtection = new HashSet<String>();
2011-03-23 17:39:56 +01:00
public static transient int mapHeight = 8;
public static transient int mapWidth = 39;
public static transient char[] mapKeyChrs = "\\/#?$%=&^ABCDEFGHJKLMNOPQRSTUVWXYZ1234567890abcdeghjmnopqrsuvwxyz".toCharArray();
2011-02-06 13:36:11 +01:00
static
{
baseCommandAliases.add("f");
factionFlagDefaults = new LinkedHashMap<FFlag, Boolean>();
for (FFlag flag : FFlag.values())
2011-10-23 22:08:57 +02:00
{
factionFlagDefaults.put(flag, flag.defaultDefaultValue);
}
2011-10-23 20:50:49 +02:00
2011-10-24 01:37:51 +02:00
factionPermDefaults = new LinkedHashMap<FPerm, Set<Rel>>();
for (FPerm perm: FPerm.values())
{
factionPermDefaults.put(perm, perm.defaultDefaultValue);
}
territoryEnemyDenyCommands.add("home");
territoryEnemyDenyCommands.add("sethome");
territoryEnemyDenyCommands.add("spawn");
2011-10-10 22:45:15 +02:00
territoryEnemyDenyCommands.add("tpahere");
territoryEnemyDenyCommands.add("tpaccept");
territoryEnemyDenyCommands.add("tpa");
2011-10-24 01:37:51 +02:00
materialsContainer.add(Material.DISPENSER);
materialsContainer.add(Material.CHEST);
materialsContainer.add(Material.FURNACE);
materialsContainer.add(Material.BURNING_FURNACE);
materialsEditOnInteract.add(Material.DIODE_BLOCK_OFF);
materialsEditOnInteract.add(Material.DIODE_BLOCK_ON);
materialsDoor.add(Material.WOODEN_DOOR);
materialsDoor.add(Material.TRAP_DOOR);
materialsDoor.add(Material.FENCE_GATE);
materialsEditTools.add(Material.FLINT_AND_STEEL);
materialsEditTools.add(Material.BUCKET);
materialsEditTools.add(Material.WATER_BUCKET);
materialsEditTools.add(Material.LAVA_BUCKET);
materialsEditTools.add(Material.CAULDRON);
materialsEditTools.add(Material.BREWING_STAND);
monsters.add(CreatureType.BLAZE);
2011-10-24 01:37:51 +02:00
monsters.add(CreatureType.CAVE_SPIDER);
monsters.add(CreatureType.CREEPER);
monsters.add(CreatureType.ENDERMAN);
monsters.add(CreatureType.ENDER_DRAGON);
2011-10-24 01:37:51 +02:00
monsters.add(CreatureType.GHAST);
monsters.add(CreatureType.GIANT);
2011-10-24 01:37:51 +02:00
monsters.add(CreatureType.PIG_ZOMBIE);
monsters.add(CreatureType.SILVERFISH);
monsters.add(CreatureType.SKELETON);
monsters.add(CreatureType.SLIME);
monsters.add(CreatureType.SPIDER);
2011-10-24 01:37:51 +02:00
monsters.add(CreatureType.ZOMBIE);
2011-02-06 13:36:11 +01:00
}
2011-03-18 17:33:23 +01:00
// -------------------------------------------- //
2011-02-06 13:36:11 +01:00
// Persistance
2011-03-18 17:33:23 +01:00
// -------------------------------------------- //
private static transient Conf i = new Conf();
public static void load()
{
P.p.persist.loadOrSaveDefault(i, Conf.class, "conf");
2011-03-18 17:33:23 +01:00
}
public static void save()
{
P.p.persist.save(i);
2011-02-06 13:36:11 +01:00
}
}
2011-03-23 12:00:38 +01:00