This commit is contained in:
Olof Larsson 2011-10-23 20:50:49 +02:00
parent 842844969b
commit 98c5230655
19 changed files with 297 additions and 155 deletions

View File

@ -26,7 +26,6 @@ permissions:
factions.kit.halfmod: true
factions.disband.any: true
factions.setpermanent: true
factions.setpermanentpower: true
factions.setpeaceful: true
factions.sethome.any: true
factions.money.*: true
@ -37,6 +36,7 @@ permissions:
factions.managesafezone: true
factions.managewarzone: true
factions.bypass: true
factions.flag.any: true
factions.kick.any: true
factions.ownershipbypass: true
factions.kit.fullplayer:
@ -55,6 +55,7 @@ permissions:
factions.deinvite: true
factions.description: true
factions.disband: true
factions.flag: true
factions.help: true
factions.home: true
factions.invite: true
@ -101,6 +102,10 @@ permissions:
description: disband a faction
factions.disband.any:
description: disband an other faction
factions.flag:
description: change faction flags
factions.flag.any:
description: change all flags for all factions
factions.help:
description: display a help page
factions.home:
@ -176,8 +181,6 @@ permissions:
description: designate a faction as peaceful
factions.setpermanent:
description: designate a faction as permanent
factions.setpermanentpower:
description: set permanent power for a faction
factions.power:
description: show player power info
factions.power.any:

View File

@ -5,6 +5,8 @@ import java.util.*;
import org.bukkit.*;
import org.bukkit.entity.CreatureType;
import com.massivecraft.factions.struct.FactionFlag;
public class Conf
{
public static List<String> baseCommandAliases = new ArrayList<String>();
@ -20,6 +22,16 @@ public class Conf
public static ChatColor colorWar = ChatColor.DARK_RED;
//public static ChatColor colorWilderness = ChatColor.DARK_GREEN;
// REFACTOR ASJDKJASDKFJKASDF
public static Map<FactionFlag, Boolean> factionFlagDefaults;
public static Map<FactionFlag, Boolean> factionFlagIsChangeable;
// REFACTOR ASJDKJASDKFJKASDF EEEEEENNNNDD
// Power
public static double powerPlayerMax = 10.0;
public static double powerPlayerMin = -10.0;
@ -245,6 +257,32 @@ public class Conf
{
baseCommandAliases.add("f");
factionFlagDefaults = new LinkedHashMap<FactionFlag, Boolean>();
factionFlagDefaults.put(FactionFlag.PERMANENT, FactionFlag.PERMANENT.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.PEACEFUL, FactionFlag.PEACEFUL.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.INFPOWER, FactionFlag.INFPOWER.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.POWERLOSS, FactionFlag.POWERLOSS.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.PVP, FactionFlag.PVP.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.FRIENDLYFIRE, FactionFlag.FRIENDLYFIRE.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.MONSTERS, FactionFlag.MONSTERS.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.EXPLOSIONS, FactionFlag.EXPLOSIONS.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.FIRESPREAD, FactionFlag.FIRESPREAD.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.LIGHTNING, FactionFlag.LIGHTNING.defaultDefaultValue);
factionFlagDefaults.put(FactionFlag.ENDERGRIEF, FactionFlag.ENDERGRIEF.defaultDefaultValue);
factionFlagIsChangeable = new LinkedHashMap<FactionFlag, Boolean>();
factionFlagIsChangeable.put(FactionFlag.PERMANENT, FactionFlag.PERMANENT.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.PEACEFUL, FactionFlag.PEACEFUL.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.INFPOWER, FactionFlag.INFPOWER.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.POWERLOSS, FactionFlag.POWERLOSS.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.PVP, FactionFlag.PVP.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.FRIENDLYFIRE, FactionFlag.FRIENDLYFIRE.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.MONSTERS, FactionFlag.MONSTERS.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.EXPLOSIONS, FactionFlag.EXPLOSIONS.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.FIRESPREAD, FactionFlag.FIRESPREAD.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.LIGHTNING, FactionFlag.LIGHTNING.defaultDefaultChangeable);
factionFlagIsChangeable.put(FactionFlag.ENDERGRIEF, FactionFlag.ENDERGRIEF.defaultDefaultChangeable);
territoryEnemyDenyCommands.add("home");
territoryEnemyDenyCommands.add("sethome");
territoryEnemyDenyCommands.add("spawn");

View File

@ -14,6 +14,7 @@ import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.integration.SpoutFeatures;
import com.massivecraft.factions.integration.Worldguard;
import com.massivecraft.factions.struct.ChatMode;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.util.RelationUtil;
@ -574,7 +575,7 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator
public void leave(boolean makePay)
{
Faction myFaction = this.getFaction();
boolean perm = myFaction.isPermanent();
boolean perm = myFaction.getFlag(FactionFlag.PERMANENT);
if (!perm && this.getRole() == Rel.LEADER && myFaction.getFPlayers().size() > 1)
{

View File

@ -11,6 +11,7 @@ import org.bukkit.entity.Player;
import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.iface.RelationParticipator;
import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.util.*;
@ -53,9 +54,9 @@ public class Faction extends Entity implements EconomyParticipator
// FIELD: permanent
// "permanent" status can only be set by server admins/moderators/ops, and allows the faction to remain even with 0 members
private boolean permanent;
public boolean isPermanent() { return permanent; }
public void setPermanent(boolean isPermanent) { permanent = isPermanent; }
//private boolean permanent;
//public boolean isPermanent() { return permanent; }
//public void setPermanent(boolean isPermanent) { permanent = isPermanent; }
// FIELD: tag
private String tag;
@ -128,11 +129,27 @@ public class Faction extends Entity implements EconomyParticipator
return Econ.getMethod().getAccount(aid);
}
// FIELD: permanentPower
private Integer permanentPower;
public Integer getPermanentPower() { return this.permanentPower; }
public void setPermanentPower(Integer permanentPower) { this.permanentPower = permanentPower; }
public boolean hasPermanentPower() { return this.permanentPower != null; }
// FIELDS: Flag management
// TODO: This will save... defaults if they where changed to...
private Map<FactionFlag, Boolean> flagOverrides; // Contains the modifications to the default values
public boolean getFlag(FactionFlag flag)
{
Boolean ret = this.flagOverrides.get(flag);
if (ret == null) ret = flag.getDefault();
return ret;
}
public void setFlag(FactionFlag flag, boolean value)
{
if (Conf.factionFlagDefaults.get(flag) == value)
{
this.flagOverrides.remove(flag);
return;
}
this.flagOverrides.put(flag, value);
}
// FIELDS: Permission <-> Groups management
// -------------------------------------------- //
// Construct
@ -148,8 +165,8 @@ public class Faction extends Entity implements EconomyParticipator
this.lastPlayerLoggedOffTime = 0;
this.peaceful = false;
this.peacefulExplosionsEnabled = false;
this.permanent = false;
this.money = 0.0;
this.flagOverrides = new LinkedHashMap<FactionFlag, Boolean>();
}
// -------------------------------------------- //
@ -166,6 +183,8 @@ public class Faction extends Entity implements EconomyParticipator
// Understand the types
// -------------------------------
// TODO: These should be gone after the refactoring...
public boolean isNormal()
{
return ! (this.isNone() || this.isSafeZone() || this.isWarZone());
@ -252,9 +271,9 @@ public class Faction extends Entity implements EconomyParticipator
//----------------------------------------------//
public double getPower()
{
if (this.hasPermanentPower())
if (this.getFlag(FactionFlag.INFPOWER))
{
return this.getPermanentPower();
return 999999;
}
double ret = 0;
@ -271,9 +290,9 @@ public class Faction extends Entity implements EconomyParticipator
public double getPowerMax()
{
if (this.hasPermanentPower())
if (this.getFlag(FactionFlag.INFPOWER))
{
return this.getPermanentPower();
return 999999;
}
double ret = 0;

View File

@ -151,7 +151,7 @@ public class P extends MPlugin
.excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE)
.registerTypeAdapter(Location.class, new MyLocationTypeAdapter())
.registerTypeAdapter(mapFLocToStringSetType, new MapFLocToStringSetTypeAdapter())
.registerTypeAdapter(Rel.class, new MyRelTypeAdapter());
.registerTypeAdapter(Rel.class, new MyRelTypeAdapter()); // This one is for users upgrading from 1.6 to 1.7... should be removed some time in the future.
}
@Override

View File

@ -6,6 +6,7 @@ import com.massivecraft.factions.Faction;
import com.massivecraft.factions.P;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.integration.SpoutFeatures;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel;
@ -49,7 +50,7 @@ public class CmdDisband extends FCommand
}
}
if (faction.isPermanent())
if (faction.getFlag(FactionFlag.PERMANENT))
{
msg("<i>This faction is designated as permanent, so you cannot disband it.");
return;

View File

@ -0,0 +1,88 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel;
public class CmdFlag extends FCommand
{
public CmdFlag()
{
super();
this.aliases.add("flag");
//this.requiredArgs.add("");
this.optionalArgs.put("faction", "your");
this.optionalArgs.put("flag", "all");
this.optionalArgs.put("on/off", "read");
this.permission = Permission.FLAG.node;
this.disableOnLock = true;
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeOfficer = false;
senderMustBeLeader = false;
}
@Override
public void perform()
{
Faction faction = myFaction;
if (this.argIsSet(0))
{
faction = this.argAsFaction(0);
}
if (faction == null) return;
msg(p.txt.titleize("Flag(s) for " + faction.describeTo(fme)));
if ( ! this.argIsSet(1))
{
for (FactionFlag flag : FactionFlag.values())
{
msg(flag.getStateInfo(faction.getFlag(flag), true));
}
return;
}
FactionFlag flag = this.argAsFactionFlag(1);
if (flag == null) return;
if ( ! this.argIsSet(2))
{
msg(flag.getStateInfo(faction.getFlag(flag), true));
return;
}
Boolean targetValue = this.argAsBool(2);
if (targetValue == null) return;
// Do the sender have the right to change flags for this faction?
if (Permission.FLAG_ANY.has(sender))
{
// This sender may modify any flag for anyone
}
else if ( ! flag.isChangeable())
{
msg("<b>Only server operators can change this flag.");
return;
}
else if (faction != myFaction)
{
msg("<b>You are not a member in that faction.");
return;
}
else if (fme.getRole().isLessThan(Rel.OFFICER))
{
msg("<b>You must be faction leader or officer to change your faction flags.");
return;
}
// Do the change
faction.setFlag(flag, targetValue);
msg(flag.getStateInfo(faction.getFlag(flag), true));
}
}

View File

@ -168,8 +168,6 @@ public class CmdHelp extends FCommand
pageLines = new ArrayList<String>();
pageLines.add(p.txt.parse("<i>More commands for server admins:"));
pageLines.add( p.cmdBase.cmdPeaceful.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdPermanent.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdPermanentPower.getUseageTemplate(true) );
pageLines.add(p.txt.parse("<i>Peaceful factions are protected from PvP and land capture."));
pageLines.add( p.cmdBase.cmdLock.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdReload.getUseageTemplate(true) );

View File

@ -4,6 +4,7 @@ import com.massivecraft.factions.Conf;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Permission;
public class CmdKick extends FCommand
@ -77,7 +78,7 @@ public class CmdKick extends FCommand
yourFaction.deinvite(you);
you.resetFactionData();
if (yourFaction.getFPlayers().isEmpty() && !yourFaction.isPermanent())
if (yourFaction.getFPlayers().isEmpty() && !yourFaction.getFlag(FactionFlag.PERMANENT))
{
// Remove this faction
for (FPlayer fplayer : FPlayers.i.getOnline())

View File

@ -1,59 +0,0 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.struct.Permission;
public class CmdPermanent extends FCommand
{
public CmdPermanent()
{
super();
this.aliases.add("permanent");
this.requiredArgs.add("faction tag");
//this.optionalArgs.put("", "");
this.permission = Permission.SET_PERMANENT.node;
this.disableOnLock = true;
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeOfficer = false;
senderMustBeLeader = false;
}
@Override
public void perform()
{
Faction faction = this.argAsFaction(0);
if (faction == null) return;
String change;
if(faction.isPermanent())
{
change = "removed permanent status from";
faction.setPermanent(false);
}
else
{
change = "added permanent status to";
faction.setPermanent(true);
}
// Inform all players
for (FPlayer fplayer : FPlayers.i.getOnline())
{
if (fplayer.getFaction() == faction)
{
fplayer.msg((fme == null ? "A server admin" : fme.describeTo(fplayer, true))+"<i> has "+change+" your faction.");
}
else
{
fplayer.msg((fme == null ? "A server admin" : fme.describeTo(fplayer, true))+"<i> has "+change+" the faction \"" + faction.getTag(fplayer) + "\".");
}
}
}
}

View File

@ -1,50 +0,0 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.struct.Permission;
public class CmdPermanentPower extends FCommand
{
public CmdPermanentPower()
{
super();
this.aliases.add("permanentpower");
this.requiredArgs.add("faction");
this.optionalArgs.put("power", "reset");
this.permission = Permission.SET_PERMANENTPOWER.node;
this.disableOnLock = true;
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeOfficer = false;
senderMustBeLeader = false;
}
@Override
public void perform()
{
Faction targetFaction = this.argAsFaction(0);
if (targetFaction == null) return;
Integer targetPower = this.argAsInt(1);
targetFaction.setPermanentPower(targetPower);
String change = "removed permanentpower status from";
if(targetFaction.hasPermanentPower())
{
change = "added permanentpower status to";
}
msg("<i>You %s <h>%s<i>.", change, targetFaction.describeTo(fme));
// Inform all players
for (FPlayer fplayer : targetFaction.getFPlayersWhereOnline(true))
{
fplayer.msg((fme == null ? "A server admin" : fme.describeTo(fplayer, true))+"<i> "+change+" your faction.");
}
}
}

View File

@ -0,0 +1,12 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.struct.Rel;
public class CmdRelationTruce extends FRelationCommand
{
public CmdRelationTruce()
{
aliases.add("neutral");
targetRelation = Rel.NEUTRAL;
}
}

View File

@ -7,6 +7,7 @@ import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel;
@ -63,7 +64,7 @@ public class CmdShow extends FCommand
msg("<a>Joining: <i>"+(faction.getOpen() ? "no invitation is needed" : "invitation is required")+peaceStatus);
msg("<a>Land / Power / Maxpower: <i> %d/%d/%d", faction.getLandRounded(), faction.getPowerRounded(), faction.getPowerMaxRounded());
if (faction.isPermanent())
if (faction.getFlag(FactionFlag.PERMANENT))
{
msg("<a>This faction is permanent, remaining even with no members.");
}

View File

@ -17,6 +17,7 @@ public class FCmdRoot extends FCommand
public CmdDeinvite cmdDeinvite = new CmdDeinvite();
public CmdDescription cmdDescription = new CmdDescription();
public CmdDisband cmdDisband = new CmdDisband();
public CmdFlag cmdFlag = new CmdFlag();
public CmdHelp cmdHelp = new CmdHelp();
public CmdHome cmdHome = new CmdHome();
public CmdInvite cmdInvite = new CmdInvite();
@ -32,8 +33,6 @@ public class FCmdRoot extends FCommand
public CmdOwner cmdOwner = new CmdOwner();
public CmdOwnerList cmdOwnerList = new CmdOwnerList();
public CmdPeaceful cmdPeaceful = new CmdPeaceful();
public CmdPermanent cmdPermanent = new CmdPermanent();
public CmdPermanentPower cmdPermanentPower = new CmdPermanentPower();
public CmdPower cmdPower = new CmdPower();
public CmdRelationAlly cmdRelationAlly = new CmdRelationAlly();
public CmdRelationEnemy cmdRelationEnemy = new CmdRelationEnemy();
@ -83,6 +82,7 @@ public class FCmdRoot extends FCommand
this.addSubCommand(this.cmdDeinvite);
this.addSubCommand(this.cmdDescription);
this.addSubCommand(this.cmdDisband);
this.addSubCommand(this.cmdFlag);
this.addSubCommand(this.cmdHelp);
this.addSubCommand(this.cmdHome);
this.addSubCommand(this.cmdInvite);
@ -98,8 +98,6 @@ public class FCmdRoot extends FCommand
this.addSubCommand(this.cmdOwner);
this.addSubCommand(this.cmdOwnerList);
this.addSubCommand(this.cmdPeaceful);
this.addSubCommand(this.cmdPermanent);
this.addSubCommand(this.cmdPermanentPower);
this.addSubCommand(this.cmdPower);
this.addSubCommand(this.cmdRelationAlly);
this.addSubCommand(this.cmdRelationEnemy);

View File

@ -12,6 +12,7 @@ import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.FactionFlag;
import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.zcore.MCommand;
@ -273,6 +274,41 @@ public abstract class FCommand extends MCommand<P>
return this.argAsFaction(idx, null);
}
// FACTION FLAG ======================
public FactionFlag strAsFactionFlag(String name, FactionFlag def, boolean msg)
{
FactionFlag ret = def;
if (name != null)
{
FactionFlag flag = FactionFlag.parse(name);
if (flag != null)
{
ret = flag;
}
}
if (msg && ret == null)
{
this.msg("<b>The faction-flag \"<p>%s<b>\" could not be found.", name);
}
return ret;
}
public FactionFlag argAsFactionFlag(int idx, FactionFlag def, boolean msg)
{
return this.strAsFactionFlag(this.argAsString(idx), def, msg);
}
public FactionFlag argAsFactionFlag(int idx, FactionFlag def)
{
return this.argAsFactionFlag(idx, def, true);
}
public FactionFlag argAsFactionFlag(int idx)
{
return this.argAsFactionFlag(idx, null);
}
// -------------------------------------------- //
// Commonly used logic
// -------------------------------------------- //

View File

@ -1,5 +1,7 @@
package com.massivecraft.factions.struct;
import com.massivecraft.factions.Conf;
/**
* Flags that describe the nature of a faction and it's territory.
* Can monsters spawn there? May fire spread etc? Is the faction permanent?
@ -10,27 +12,51 @@ package com.massivecraft.factions.struct;
public enum FactionFlag
{
// Faction flags
PERMANENT,
PEACEFUL, // This faction is friends with everyone
INFPOWER, // This faction has infinite power: TODO: Add faction has enough method. Replace the permanentpower level
PERMANENT("permanent", "<i>A permanent faction will never be deleted.", false, false),
PEACEFUL("peaceful", "<i>Allways in truce with other factions.", false, false),
INFPOWER("infpower", "<i>This flag gives the faction infinite power.", false, false),
// This faction has infinite power: TODO: Add faction has enough method. Replace the permanentpower level
// (Faction) Territory flags
POWERLOSS, // Regardless of death-reason players loose power on death IF powerloss is true in this territory
PVP,
FRIENDLYFIRE, // Can members/allies/friends damage eachother in this territory?
MONSTERS,
EXPLOSIONS,
FIRESPREAD,
LIGHTNING,
POWERLOSS("powerloss", "<i>Is power lost on death in this territory?", true, false),
PVP("pvp", "<i>Can you PVP in territory?", true, false),
FRIENDLYFIRE("friendlyfire", "<i>Can friends hurt eachother here?", false, false),
MONSTERS("monsters", "<i>Can monsters spawn in this territory?", true, false),
EXPLOSIONS("explosions", "<i>Can explosions occur in this territory?", true, false),
FIRESPREAD("firespread", "<i>Can fire spread in territory?", true, false),
LIGHTNING("lightning", "<i>Can lightning strike in this territory?", true, false),
ENDERGRIEF("endergrief", "<i>Can endermen grief in this territory?", false, true),
;
private final String nicename;
private final String desc;
public final boolean defaultDefaultValue;
public final boolean defaultDefaultChangeable;
private FactionFlag(final String nicename, final String desc, final boolean defaultDefaultValue, final boolean defaultDefaultChangeable)
{
this.nicename = nicename;
this.desc = desc;
this.defaultDefaultValue = defaultDefaultValue;
this.defaultDefaultChangeable = defaultDefaultChangeable;
}
public String getNicename()
{
return this.nicename;
}
public String getDescription()
{
return this.desc;
}
/**
* The state for newly created factions.
*/
public boolean getDefault()
{
// Use config file for this later.
return true;
return Conf.factionFlagDefaults.get(this);
}
/**
@ -40,7 +66,32 @@ public enum FactionFlag
*/
public boolean isChangeable()
{
// TODO: Use config file
return true;
return Conf.factionFlagIsChangeable.get(this);
}
public static FactionFlag parse(String str)
{
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("e")) return EXPLOSIONS;
if (str.startsWith("fi")) return FIRESPREAD;
if (str.startsWith("l")) return LIGHTNING;
return null;
}
public String getStateInfo(boolean value, boolean withDesc)
{
String ret = (value ? "<g>YES" : "<b>NOT") + "<h> " + this.getNicename();
if (withDesc)
{
ret += " " + this.getDescription();
}
return ret;
}
}

View File

@ -2,10 +2,9 @@ package com.massivecraft.factions.struct;
/**
* Permissions that you (a player) may or may not have in the territory of a certain faction.
*
* You need a certain rel to be able
* Each faction have many Rel's assigned to each one of these Perms.
*/
public enum FactionPlayerPerm
public enum FactionPerm
{
BUILD, // This player can build in the faction
PAINBUILD, // This player can build in the faction BUT will take damage each time. This is overridden by BUILD if player has both

View File

@ -20,6 +20,8 @@ public enum Permission
DESCRIPTION("description"),
DISBAND("disband"),
DISBAND_ANY("disband.any"),
FLAG("flag"),
FLAG_ANY("flag.any"),
HELP("help"),
HOME("home"),
INVITE("invite"),
@ -44,8 +46,6 @@ public enum Permission
OWNER("owner"),
OWNERLIST("ownerlist"),
SET_PEACEFUL("setpeaceful"),
SET_PERMANENT("setpermanent"),
SET_PERMANENTPOWER("setpermanentpower"),
POWER("power"),
POWER_ANY("power.any"),
RELATION("relation"),

View File

@ -15,6 +15,11 @@ public class RelationUtil
{
String ret = "";
if (that == null)
{
return "A server admin";
}
Faction thatFaction = getFaction(that);
if (thatFaction == null) return "ERROR"; // ERROR