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

100 lines
3.3 KiB
Java
Raw Normal View History

package com.massivecraft.factions;
2011-10-23 20:50:49 +02:00
/**
* Flags that describe the nature of a faction and it's territory.
* Can monsters spawn there? May fire spread etc? Is the faction permanent?
* These flags have nothing to do with player-permission.
*
* The flags are either true or false.
*/
public enum FFlag
{
// -------------------------------------------- //
// ENUM
// -------------------------------------------- //
// Faction flags
PERMANENT("permanent", "<i>A permanent faction will never be deleted.", false),
PEACEFUL("peaceful", "<i>Allways in truce with other factions.", false),
INFPOWER("infpower", "<i>This flag gives the faction infinite power.", false),
2011-10-23 20:50:49 +02:00
// This faction has infinite power: TODO: Add faction has enough method. Replace the permanentpower level
// (Faction) Territory flags
2011-10-24 03:02:25 +02:00
// If a faction later could have many different territories this would probably be in another enum
POWERLOSS("powerloss", "<i>Is power lost on death in this territory?", true),
PVP("pvp", "<i>Can you PVP in territory?", true),
FRIENDLYFIRE("friendlyfire", "<i>Can friends hurt eachother here?", false),
MONSTERS("monsters", "<i>Can monsters spawn in this territory?", true),
EXPLOSIONS("explosions", "<i>Can explosions occur in this territory?", true),
FIRESPREAD("firespread", "<i>Can fire spread in territory?", true),
ENDERGRIEF("endergrief", "<i>Can endermen grief in this territory?", false),
// END OF LIST
;
// -------------------------------------------- //
// FIELDS
// -------------------------------------------- //
2011-10-23 20:50:49 +02:00
private final String nicename;
public String getNicename() { return this.nicename; }
2011-10-23 20:50:49 +02:00
private final String desc;
public String getDescription() { return this.desc; }
2011-10-23 20:50:49 +02:00
public final boolean defaultDefaultValue;
// -------------------------------------------- //
// CONSTRUCT
// -------------------------------------------- //
private FFlag(final String nicename, final String desc, final boolean defaultDefaultValue)
2011-10-23 20:50:49 +02:00
{
this.nicename = nicename;
this.desc = desc;
this.defaultDefaultValue = defaultDefaultValue;
}
// -------------------------------------------- //
// FRODOODODFOFL
// -------------------------------------------- //
2011-10-23 20:50:49 +02:00
/**
* The state for newly created factions.
*/
public boolean getDefault()
{
2013-04-09 13:15:25 +02:00
Boolean ret = ConfServer.factionFlagDefaults.get(this);
2011-10-23 22:08:57 +02:00
if (ret == null) return this.defaultDefaultValue;
return ret;
}
public static FFlag parse(String str)
2011-10-23 20:50:49 +02:00
{
str = str.toLowerCase();
if (str.startsWith("per")) return PERMANENT;
if (str.startsWith("pea")) return PEACEFUL;
if (str.startsWith("i")) return INFPOWER;
if (str.startsWith("pow")) return POWERLOSS;
if (str.startsWith("pvp")) return PVP;
if (str.startsWith("fr") || str.startsWith("ff")) return FRIENDLYFIRE;
if (str.startsWith("m")) return MONSTERS;
if (str.startsWith("ex")) return EXPLOSIONS;
2011-10-23 20:50:49 +02:00
if (str.startsWith("fi")) return FIRESPREAD;
if (str.startsWith("en")) return ENDERGRIEF;
2011-10-23 20:50:49 +02:00
return null;
}
public String getStateInfo(boolean value, boolean withDesc)
{
2011-10-24 13:02:48 +02:00
String ret = (value ? "<g>YES" : "<b>NOO") + "<c> " + this.getNicename();
2011-10-23 20:50:49 +02:00
if (withDesc)
{
ret += " " + this.getDescription();
}
return ret;
}
}