Started to implement special faction behavior

This commit is contained in:
Olof Larsson 2011-10-24 02:33:30 +02:00
parent e3821a8d4e
commit 46161f61db
21 changed files with 179 additions and 116 deletions

View File

@ -1,5 +1,5 @@
name: Factions name: Factions
version: 1.5.9 beta version: 1.7_dev
main: com.massivecraft.factions.P main: com.massivecraft.factions.P
authors: [Olof Larsson, Brett Flannigan] authors: [Olof Larsson, Brett Flannigan]
softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, nChat, ChatManager, CAPI, AuthMe, Register, Spout, WorldEdit, WorldGuard] softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, nChat, ChatManager, CAPI, AuthMe, Register, Spout, WorldEdit, WorldGuard]

View File

@ -5,7 +5,7 @@ import java.util.*;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.entity.CreatureType; import org.bukkit.entity.CreatureType;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.FPerm; import com.massivecraft.factions.struct.FPerm;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
@ -25,8 +25,8 @@ public class Conf
//public static ChatColor colorWar = ChatColor.DARK_RED; //public static ChatColor colorWar = ChatColor.DARK_RED;
//public static ChatColor colorWilderness = ChatColor.DARK_GREEN; //public static ChatColor colorWilderness = ChatColor.DARK_GREEN;
public static Map<FactionFlag, Boolean> factionFlagDefaults; public static Map<FFlag, Boolean> factionFlagDefaults;
public static Map<FactionFlag, Boolean> factionFlagIsChangeable; public static Map<FFlag, Boolean> factionFlagIsChangeable;
public static Map<FPerm, Set<Rel>> factionPermDefaults; public static Map<FPerm, Set<Rel>> factionPermDefaults;
// Power // Power
@ -276,9 +276,9 @@ public class Conf
{ {
baseCommandAliases.add("f"); baseCommandAliases.add("f");
factionFlagDefaults = new LinkedHashMap<FactionFlag, Boolean>(); factionFlagDefaults = new LinkedHashMap<FFlag, Boolean>();
factionFlagIsChangeable = new LinkedHashMap<FactionFlag, Boolean>(); factionFlagIsChangeable = new LinkedHashMap<FFlag, Boolean>();
for (FactionFlag flag : FactionFlag.values()) for (FFlag flag : FFlag.values())
{ {
factionFlagDefaults.put(flag, flag.defaultDefaultValue); factionFlagDefaults.put(flag, flag.defaultDefaultValue);
factionFlagIsChangeable.put(flag, flag.defaultDefaultChangeable); factionFlagIsChangeable.put(flag, flag.defaultDefaultChangeable);

View File

@ -14,7 +14,7 @@ import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.integration.SpoutFeatures; import com.massivecraft.factions.integration.SpoutFeatures;
import com.massivecraft.factions.integration.Worldguard; import com.massivecraft.factions.integration.Worldguard;
import com.massivecraft.factions.struct.ChatMode; import com.massivecraft.factions.struct.ChatMode;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.util.RelationUtil; import com.massivecraft.factions.util.RelationUtil;
import com.massivecraft.factions.zcore.persist.PlayerEntity; import com.massivecraft.factions.zcore.persist.PlayerEntity;
@ -487,11 +487,11 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator
return Board.getFactionAt(new FLocation(this)) == this.getFaction(); return Board.getFactionAt(new FLocation(this)) == this.getFaction();
} }
public boolean isInOthersTerritory() /*public boolean isInOthersTerritory()
{ {
Faction factionHere = Board.getFactionAt(new FLocation(this)); Faction factionHere = Board.getFactionAt(new FLocation(this));
return factionHere != null && factionHere.isNormal() && factionHere != this.getFaction(); return factionHere != null && factionHere.isNormal() && factionHere != this.getFaction();
} }*/
public boolean isInAllyTerritory() public boolean isInAllyTerritory()
{ {
@ -530,7 +530,7 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator
public void leave(boolean makePay) public void leave(boolean makePay)
{ {
Faction myFaction = this.getFaction(); Faction myFaction = this.getFaction();
boolean perm = myFaction.getFlag(FactionFlag.PERMANENT); boolean perm = myFaction.getFlag(FFlag.PERMANENT);
if (!perm && this.getRole() == Rel.LEADER && myFaction.getFPlayers().size() > 1) if (!perm && this.getRole() == Rel.LEADER && myFaction.getFPlayers().size() > 1)
{ {

View File

@ -9,7 +9,7 @@ import org.bukkit.entity.Player;
import com.massivecraft.factions.iface.EconomyParticipator; import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.iface.RelationParticipator; import com.massivecraft.factions.iface.RelationParticipator;
import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.FPerm; import com.massivecraft.factions.struct.FPerm;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.util.*; import com.massivecraft.factions.util.*;
@ -107,14 +107,14 @@ public class Faction extends Entity implements EconomyParticipator
// FIELDS: Flag management // FIELDS: Flag management
// TODO: This will save... defaults if they where changed to... // TODO: This will save... defaults if they where changed to...
private Map<FactionFlag, Boolean> flagOverrides; // Contains the modifications to the default values private Map<FFlag, Boolean> flagOverrides; // Contains the modifications to the default values
public boolean getFlag(FactionFlag flag) public boolean getFlag(FFlag flag)
{ {
Boolean ret = this.flagOverrides.get(flag); Boolean ret = this.flagOverrides.get(flag);
if (ret == null) ret = flag.getDefault(); if (ret == null) ret = flag.getDefault();
return ret; return ret;
} }
public void setFlag(FactionFlag flag, boolean value) public void setFlag(FFlag flag, boolean value)
{ {
if (Conf.factionFlagDefaults.get(flag).equals(value)) if (Conf.factionFlagDefaults.get(flag).equals(value))
{ {
@ -132,14 +132,21 @@ public class Faction extends Entity implements EconomyParticipator
if (ret == null) ret = perm.getDefault(); if (ret == null) ret = perm.getDefault();
return ret; return ret;
} }
public void setPermittedRelations(FPerm perm, Set<Rel> value) public void setPermittedRelations(FPerm perm, Set<Rel> rels)
{ {
if (Conf.factionPermDefaults.get(perm).equals(value)) if (Conf.factionPermDefaults.get(perm).equals(rels))
{ {
this.permOverrides.remove(perm); this.permOverrides.remove(perm);
return; return;
} }
this.permOverrides.put(perm, value); this.permOverrides.put(perm, rels);
}
public void setPermittedRelations(FPerm perm, Rel... rels)
{
Set<Rel> temp = new HashSet<Rel>();
temp.addAll(Arrays.asList(rels));
this.setPermittedRelations(perm, temp);
} }
@ -158,7 +165,7 @@ public class Faction extends Entity implements EconomyParticipator
//this.peaceful = false; //this.peaceful = false;
//this.peacefulExplosionsEnabled = false; //this.peacefulExplosionsEnabled = false;
this.money = 0.0; this.money = 0.0;
this.flagOverrides = new LinkedHashMap<FactionFlag, Boolean>(); this.flagOverrides = new LinkedHashMap<FFlag, Boolean>();
this.permOverrides = new LinkedHashMap<FPerm, Set<Rel>>(); this.permOverrides = new LinkedHashMap<FPerm, Set<Rel>>();
} }
@ -240,7 +247,7 @@ public class Faction extends Entity implements EconomyParticipator
//----------------------------------------------// //----------------------------------------------//
public double getPower() public double getPower()
{ {
if (this.getFlag(FactionFlag.INFPOWER)) if (this.getFlag(FFlag.INFPOWER))
{ {
return 999999; return 999999;
} }
@ -259,7 +266,7 @@ public class Faction extends Entity implements EconomyParticipator
public double getPowerMax() public double getPowerMax()
{ {
if (this.getFlag(FactionFlag.INFPOWER)) if (this.getFlag(FFlag.INFPOWER))
{ {
return 999999; return 999999;
} }
@ -338,7 +345,7 @@ public class Faction extends Entity implements EconomyParticipator
public FPlayer getFPlayerLeader() public FPlayer getFPlayerLeader()
{ {
if ( ! this.isNormal()) return null; //if ( ! this.isNormal()) return null;
for (FPlayer fplayer : FPlayers.i.get()) for (FPlayer fplayer : FPlayers.i.get())
{ {
@ -353,7 +360,7 @@ public class Faction extends Entity implements EconomyParticipator
public ArrayList<FPlayer> getFPlayersWhereRole(Rel role) public ArrayList<FPlayer> getFPlayersWhereRole(Rel role)
{ {
ArrayList<FPlayer> ret = new ArrayList<FPlayer>(); ArrayList<FPlayer> ret = new ArrayList<FPlayer>();
if ( ! this.isNormal()) return ret; //if ( ! this.isNormal()) return ret;
for (FPlayer fplayer : FPlayers.i.get()) for (FPlayer fplayer : FPlayers.i.get())
{ {
@ -407,14 +414,9 @@ public class Faction extends Entity implements EconomyParticipator
} }
public void memberLoggedOff() public void memberLoggedOff()
{
if (this.isNormal())
{ {
lastPlayerLoggedOffTime = System.currentTimeMillis(); lastPlayerLoggedOffTime = System.currentTimeMillis();
} }
}
//----------------------------------------------// //----------------------------------------------//
// Messages // Messages

View File

@ -10,6 +10,9 @@ import java.util.logging.Level;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.FPerm;
import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.util.MiscUtil; import com.massivecraft.factions.util.MiscUtil;
import com.massivecraft.factions.zcore.persist.EntityCollection; import com.massivecraft.factions.zcore.persist.EntityCollection;
import com.massivecraft.factions.zcore.util.TextUtil; import com.massivecraft.factions.zcore.util.TextUtil;
@ -43,47 +46,122 @@ public class Factions extends EntityCollection<Faction>
{ {
if ( ! super.loadFromDisc()) return false; if ( ! super.loadFromDisc()) return false;
// Make sure the default neutral faction exists //----------------------------------------------//
// Create Default Special Factions
//----------------------------------------------//
if ( ! this.exists("0")) if ( ! this.exists("0"))
{ {
Faction faction = this.create("0"); Faction faction = this.create("0");
faction.setTag(ChatColor.DARK_GREEN+"Wilderness"); faction.setTag(ChatColor.DARK_GREEN+"Wilderness");
faction.setDescription(""); faction.setDescription("");
this.setFlagsForWilderness(faction);
} }
// Make sure the safe zone faction exists
if ( ! this.exists("-1")) if ( ! this.exists("-1"))
{ {
Faction faction = this.create("-1"); Faction faction = this.create("-1");
faction.setTag("SafeZone"); faction.setTag("SafeZone");
faction.setDescription("Free from PVP and monsters"); faction.setDescription("Free from PVP and monsters");
}
else
{
// if SafeZone has old pre-1.6.0 name, rename it to remove troublesome " "
Faction faction = this.getSafeZone();
if (faction.getTag().contains(" "))
faction.setTag("SafeZone");
}
// Make sure the war zone faction exists this.setFlagsForSafeZone(faction);
}
if ( ! this.exists("-2")) if ( ! this.exists("-2"))
{ {
Faction faction = this.create("-2"); Faction faction = this.create("-2");
faction.setTag("WarZone"); faction.setTag("WarZone");
faction.setDescription("Not the safest place to be"); faction.setDescription("Not the safest place to be");
} this.setFlagsForWarZone(faction);
else
{
// if WarZone has old pre-1.6.0 name, rename it to remove troublesome " "
Faction faction = this.getWarZone();
if (faction.getTag().contains(" "))
faction.setTag("WarZone");
} }
//----------------------------------------------//
// Fix From Old Formats
//----------------------------------------------//
Faction wild = this.get("0");
Faction safeZone = this.get("-1");
Faction warZone = this.get("-2");
// Remove troublesome " " from old pre-1.6.0 names
if (safeZone != null && safeZone.getTag().contains(" "))
safeZone.setTag("SafeZone");
if (warZone != null && warZone.getTag().contains(" "))
warZone.setTag("WarZone");
// Set Flags if they are not set already.
if (wild != null && ! wild.getFlag(FFlag.PERMANENT))
setFlagsForWilderness(wild);
if (safeZone != null && ! safeZone.getFlag(FFlag.PERMANENT))
setFlagsForSafeZone(safeZone);
if (warZone != null && ! warZone.getFlag(FFlag.PERMANENT))
setFlagsForWarZone(warZone);
return true; return true;
} }
//----------------------------------------------//
// Flag Setters
//----------------------------------------------//
public void setFlagsForWilderness(Faction faction)
{
faction.setFlag(FFlag.PERMANENT, true);
faction.setFlag(FFlag.PEACEFUL, true);
faction.setFlag(FFlag.INFPOWER, true);
faction.setFlag(FFlag.POWERLOSS, true);
faction.setFlag(FFlag.PVP, true);
faction.setFlag(FFlag.FRIENDLYFIRE, false);
faction.setFlag(FFlag.MONSTERS, true);
faction.setFlag(FFlag.EXPLOSIONS, true);
faction.setFlag(FFlag.FIRESPREAD, true);
faction.setFlag(FFlag.LIGHTNING, true);
faction.setFlag(FFlag.ENDERGRIEF, true);
faction.setPermittedRelations(FPerm.BUILD, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.DOOR, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.CONTAINER, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.BUTTON, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.LEVER, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
}
public void setFlagsForSafeZone(Faction faction)
{
faction.setFlag(FFlag.PERMANENT, true);
faction.setFlag(FFlag.PEACEFUL, true);
faction.setFlag(FFlag.INFPOWER, true);
faction.setFlag(FFlag.POWERLOSS, false);
faction.setFlag(FFlag.PVP, false);
faction.setFlag(FFlag.FRIENDLYFIRE, false);
faction.setFlag(FFlag.MONSTERS, false);
faction.setFlag(FFlag.EXPLOSIONS, false);
faction.setFlag(FFlag.FIRESPREAD, false);
faction.setFlag(FFlag.LIGHTNING, false);
faction.setFlag(FFlag.ENDERGRIEF, false);
faction.setPermittedRelations(FPerm.BUILD, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.DOOR, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.CONTAINER, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.BUTTON, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.LEVER, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
}
public void setFlagsForWarZone(Faction faction)
{
faction.setFlag(FFlag.PERMANENT, true);
faction.setFlag(FFlag.PEACEFUL, true);
faction.setFlag(FFlag.INFPOWER, true);
faction.setFlag(FFlag.POWERLOSS, true);
faction.setFlag(FFlag.PVP, true);
faction.setFlag(FFlag.FRIENDLYFIRE, true);
faction.setFlag(FFlag.MONSTERS, true);
faction.setFlag(FFlag.EXPLOSIONS, true);
faction.setFlag(FFlag.FIRESPREAD, true);
faction.setFlag(FFlag.LIGHTNING, true);
faction.setFlag(FFlag.ENDERGRIEF, true);
faction.setPermittedRelations(FPerm.BUILD, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.DOOR, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.CONTAINER, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.BUTTON, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
faction.setPermittedRelations(FPerm.LEVER, Rel.ENEMY, Rel.NEUTRAL, Rel.TRUCE, Rel.ALLY, Rel.MEMBER);
}
//----------------------------------------------// //----------------------------------------------//
// GET // GET
@ -107,17 +185,6 @@ public class Factions extends EntityCollection<Faction>
return this.get("0"); return this.get("0");
} }
public Faction getSafeZone()
{
return this.get("-1");
}
public Faction getWarZone()
{
return this.get("-2");
}
//----------------------------------------------// //----------------------------------------------//
// Faction tag // Faction tag
//----------------------------------------------// //----------------------------------------------//

View File

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

View File

@ -1,7 +1,7 @@
package com.massivecraft.factions.cmd; package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
@ -41,14 +41,14 @@ public class CmdFlag extends FCommand
if ( ! this.argIsSet(1)) if ( ! this.argIsSet(1))
{ {
for (FactionFlag flag : FactionFlag.values()) for (FFlag flag : FFlag.values())
{ {
msg(flag.getStateInfo(faction.getFlag(flag), true)); msg(flag.getStateInfo(faction.getFlag(flag), true));
} }
return; return;
} }
FactionFlag flag = this.argAsFactionFlag(1); FFlag flag = this.argAsFactionFlag(1);
if (flag == null) return; if (flag == null) return;
if ( ! this.argIsSet(2)) if ( ! this.argIsSet(2))
{ {

View File

@ -13,7 +13,7 @@ import com.massivecraft.factions.FLocation;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.zcore.util.SmokeUtil; import com.massivecraft.factions.zcore.util.SmokeUtil;
@ -80,7 +80,7 @@ public class CmdHome extends FCommand
( (
Conf.homesTeleportAllowedEnemyDistance > 0 Conf.homesTeleportAllowedEnemyDistance > 0
&& &&
faction.getFlag(FactionFlag.PVP) faction.getFlag(FFlag.PVP)
&& &&
( (
! fme.isInOwnTerritory() ! fme.isInOwnTerritory()

View File

@ -30,11 +30,11 @@ public class CmdJoin extends FCommand
Faction faction = this.argAsFaction(0); Faction faction = this.argAsFaction(0);
if (faction == null) return; if (faction == null) return;
if ( ! faction.isNormal()) /*if ( ! faction.isNormal())
{ {
msg("<b>You may only join normal factions. This is a system faction."); msg("<b>You may only join normal factions. This is a system faction.");
return; return;
} }*/
if (faction == myFaction) if (faction == myFaction)
{ {

View File

@ -5,7 +5,7 @@ import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.P; import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
public class CmdKick extends FCommand public class CmdKick extends FCommand
@ -82,7 +82,7 @@ public class CmdKick extends FCommand
if (Conf.logFactionKick) if (Conf.logFactionKick)
P.p.log(fme.getName()+" kicked "+you.getName()+" from the faction: "+yourFaction.getTag()); P.p.log(fme.getName()+" kicked "+you.getName()+" from the faction: "+yourFaction.getTag());
if (yourFaction.getFPlayers().isEmpty() && !yourFaction.getFlag(FactionFlag.PERMANENT)) if (yourFaction.getFPlayers().isEmpty() && !yourFaction.getFlag(FFlag.PERMANENT))
{ {
// Remove this faction // Remove this faction
for (FPlayer fplayer : FPlayers.i.getOnline()) for (FPlayer fplayer : FPlayers.i.getOnline())

View File

@ -38,9 +38,11 @@ public class CmdList extends FCommand
if ( ! payForCommand(Conf.econCostList, "to list the factions", "for listing the factions")) return; if ( ! payForCommand(Conf.econCostList, "to list the factions", "for listing the factions")) return;
ArrayList<Faction> factionList = new ArrayList<Faction>(Factions.i.get()); ArrayList<Faction> factionList = new ArrayList<Faction>(Factions.i.get());
factionList.remove(Factions.i.getNone()); factionList.remove(Factions.i.getNone());
factionList.remove(Factions.i.getSafeZone()); // TODO: Add flag SECRET To factions instead.
factionList.remove(Factions.i.getWarZone()); //factionList.remove(Factions.i.getSafeZone());
//factionList.remove(Factions.i.getWarZone());
// Sort by total followers first // Sort by total followers first
Collections.sort(factionList, new Comparator<Faction>(){ Collections.sort(factionList, new Comparator<Faction>(){

View File

@ -61,7 +61,6 @@ public class CmdPerm extends FCommand
return; return;
} }
// TODO: Awesomesause parser for deltas...
Set<Rel> targetValue = FPerm.parseRelDeltas(TextUtil.implode(args.subList(2, args.size()), " "), faction.getPermittedRelations(perm)); Set<Rel> targetValue = FPerm.parseRelDeltas(TextUtil.implode(args.subList(2, args.size()), " "), faction.getPermittedRelations(perm));
// Do the sender have the right to change perms for this faction? // Do the sender have the right to change perms for this faction?

View File

@ -7,7 +7,7 @@ import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions; import com.massivecraft.factions.Factions;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
@ -50,13 +50,13 @@ public class CmdShow extends FCommand
msg(p.txt.titleize(faction.getTag(fme))); msg(p.txt.titleize(faction.getTag(fme)));
msg("<a>Description: <i>%s", faction.getDescription()); msg("<a>Description: <i>%s", faction.getDescription());
if ( ! faction.isNormal()) /*if ( ! faction.isNormal())
{ {
return; return;
} }*/
String peaceStatus = ""; String peaceStatus = "";
if (faction.getFlag(FactionFlag.PEACEFUL)) if (faction.getFlag(FFlag.PEACEFUL))
{ {
peaceStatus = " "+Conf.colorTruce+"This faction is Peaceful"; peaceStatus = " "+Conf.colorTruce+"This faction is Peaceful";
} }
@ -64,7 +64,7 @@ public class CmdShow extends FCommand
msg("<a>Joining: <i>"+(faction.getOpen() ? "no invitation is needed" : "invitation is required")+peaceStatus); 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()); msg("<a>Land / Power / Maxpower: <i> %d/%d/%d", faction.getLandRounded(), faction.getPowerRounded(), faction.getPowerMaxRounded());
if (faction.getFlag(FactionFlag.PERMANENT)) if (faction.getFlag(FFlag.PERMANENT))
{ {
msg("<a>This faction is permanent, remaining even with no members."); msg("<a>This faction is permanent, remaining even with no members.");
} }

View File

@ -12,7 +12,7 @@ import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions; import com.massivecraft.factions.Factions;
import com.massivecraft.factions.P; import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.FPerm; import com.massivecraft.factions.struct.FPerm;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.zcore.MCommand; import com.massivecraft.factions.zcore.MCommand;
@ -276,13 +276,13 @@ public abstract class FCommand extends MCommand<P>
} }
// FACTION FLAG ====================== // FACTION FLAG ======================
public FactionFlag strAsFactionFlag(String name, FactionFlag def, boolean msg) public FFlag strAsFactionFlag(String name, FFlag def, boolean msg)
{ {
FactionFlag ret = def; FFlag ret = def;
if (name != null) if (name != null)
{ {
FactionFlag flag = FactionFlag.parse(name); FFlag flag = FFlag.parse(name);
if (flag != null) if (flag != null)
{ {
ret = flag; ret = flag;
@ -296,15 +296,15 @@ public abstract class FCommand extends MCommand<P>
return ret; return ret;
} }
public FactionFlag argAsFactionFlag(int idx, FactionFlag def, boolean msg) public FFlag argAsFactionFlag(int idx, FFlag def, boolean msg)
{ {
return this.strAsFactionFlag(this.argAsString(idx), def, msg); return this.strAsFactionFlag(this.argAsString(idx), def, msg);
} }
public FactionFlag argAsFactionFlag(int idx, FactionFlag def) public FFlag argAsFactionFlag(int idx, FFlag def)
{ {
return this.argAsFactionFlag(idx, def, true); return this.argAsFactionFlag(idx, def, true);
} }
public FactionFlag argAsFactionFlag(int idx) public FFlag argAsFactionFlag(int idx)
{ {
return this.argAsFactionFlag(idx, null); return this.argAsFactionFlag(idx, null);
} }

View File

@ -5,7 +5,7 @@ import org.bukkit.ChatColor;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.integration.SpoutFeatures; import com.massivecraft.factions.integration.SpoutFeatures;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
@ -34,11 +34,11 @@ public abstract class FRelationCommand extends FCommand
Faction them = this.argAsFaction(0); Faction them = this.argAsFaction(0);
if (them == null) return; if (them == null) return;
if ( ! them.isNormal()) /*if ( ! them.isNormal())
{ {
msg("<b>Nope! You can't."); msg("<b>Nope! You can't.");
return; return;
} }*/
if (them == myFaction) if (them == myFaction)
{ {
@ -64,13 +64,13 @@ public abstract class FRelationCommand extends FCommand
myFaction.msg(currentRelationColor+them.getTag()+"<i> were informed that you wish to be "+targetRelation.getColor()+targetRelation); myFaction.msg(currentRelationColor+them.getTag()+"<i> were informed that you wish to be "+targetRelation.getColor()+targetRelation);
} }
if ( targetRelation != Rel.NEUTRAL && them.getFlag(FactionFlag.PEACEFUL)) if ( targetRelation != Rel.NEUTRAL && them.getFlag(FFlag.PEACEFUL))
{ {
them.msg("<i>This will have no effect while your faction is peaceful."); them.msg("<i>This will have no effect while your faction is peaceful.");
myFaction.msg("<i>This will have no effect while their faction is peaceful."); myFaction.msg("<i>This will have no effect while their faction is peaceful.");
} }
if ( targetRelation != Rel.NEUTRAL && myFaction.getFlag(FactionFlag.PEACEFUL)) if ( targetRelation != Rel.NEUTRAL && myFaction.getFlag(FFlag.PEACEFUL))
{ {
them.msg("<i>This will have no effect while their faction is peaceful."); them.msg("<i>This will have no effect while their faction is peaceful.");
myFaction.msg("<i>This will have no effect while your faction is peaceful."); myFaction.msg("<i>This will have no effect while your faction is peaceful.");

View File

@ -124,13 +124,11 @@ public class FactionsBlockListener extends BlockListener
FLocation loc = new FLocation(location); FLocation loc = new FLocation(location);
Faction factionHere = Board.getFactionAt(loc); Faction factionHere = Board.getFactionAt(loc);
Faction myFaction = me.getFaction();
if (FPerm.PAINBUILD.has(me, location)) if (FPerm.PAINBUILD.has(me, location))
{ {
if (!justCheck) if (!justCheck)
{ {
me.msg("<b>It is painful to try to "+action+" in the territory of "+factionHere.getTag(myFaction)); me.msg("<b>It is painful to %s in the territory of %s<b>.", action, factionHere.describeTo(me));
player.damage(Conf.actionDeniedPainAmount); player.damage(Conf.actionDeniedPainAmount);
} }
return true; return true;

View File

@ -26,7 +26,7 @@ import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.P; import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.util.MiscUtil; import com.massivecraft.factions.util.MiscUtil;
@ -49,7 +49,7 @@ public class FactionsEntityListener extends EntityListener
FPlayer fplayer = FPlayers.i.get(player); FPlayer fplayer = FPlayers.i.get(player);
Faction faction = Board.getFactionAt(new FLocation(player.getLocation())); Faction faction = Board.getFactionAt(new FLocation(player.getLocation()));
if ( ! faction.getFlag(FactionFlag.POWERLOSS)) if ( ! faction.getFlag(FFlag.POWERLOSS))
{ {
fplayer.msg("<i>You didn't lose any power since the territory you died in works that way."); fplayer.msg("<i>You didn't lose any power since the territory you died in works that way.");
return; return;
@ -101,7 +101,7 @@ public class FactionsEntityListener extends EntityListener
Faction faction = Board.getFactionAt(new FLocation(loc)); Faction faction = Board.getFactionAt(new FLocation(loc));
if (faction.getFlag(FactionFlag.EXPLOSIONS) == false) if (faction.getFlag(FFlag.EXPLOSIONS) == false)
{ {
// faction is peaceful and has explosions set to disabled // faction is peaceful and has explosions set to disabled
event.setCancelled(true); event.setCancelled(true);
@ -157,7 +157,7 @@ public class FactionsEntityListener extends EntityListener
// Players can not take attack damage in a SafeZone, or possibly peaceful territory // Players can not take attack damage in a SafeZone, or possibly peaceful territory
if (defLocFaction.getFlag(FactionFlag.PVP) == false) if (defLocFaction.getFlag(FFlag.PVP) == false)
{ {
if (damager instanceof Player) if (damager instanceof Player)
{ {
@ -165,7 +165,7 @@ public class FactionsEntityListener extends EntityListener
attacker.msg("<i>You can't hurt other players here."); attacker.msg("<i>You can't hurt other players here.");
return false; return false;
} }
return defLocFaction.getFlag(FactionFlag.MONSTERS); return defLocFaction.getFlag(FFlag.MONSTERS);
} }
if ( ! (damager instanceof Player)) if ( ! (damager instanceof Player))
@ -189,7 +189,7 @@ public class FactionsEntityListener extends EntityListener
Faction locFaction = Board.getFactionAt(new FLocation(attacker)); Faction locFaction = Board.getFactionAt(new FLocation(attacker));
// so we know from above that the defender isn't in a safezone... what about the attacker, sneaky dog that he might be? // so we know from above that the defender isn't in a safezone... what about the attacker, sneaky dog that he might be?
if (locFaction.getFlag(FactionFlag.PVP) == false) if (locFaction.getFlag(FFlag.PVP) == false)
{ {
attacker.msg("<i>You can't hurt other players here."); attacker.msg("<i>You can't hurt other players here.");
return false; return false;
@ -272,7 +272,7 @@ public class FactionsEntityListener extends EntityListener
FLocation floc = new FLocation(event.getLocation()); FLocation floc = new FLocation(event.getLocation());
Faction faction = Board.getFactionAt(floc); Faction faction = Board.getFactionAt(floc);
if (faction.getFlag(FactionFlag.MONSTERS)) return; if (faction.getFlag(FFlag.MONSTERS)) return;
if ( ! Conf.monsters.contains(event.getCreatureType())) return; if ( ! Conf.monsters.contains(event.getCreatureType())) return;
event.setCancelled(true); event.setCancelled(true);
@ -293,7 +293,7 @@ public class FactionsEntityListener extends EntityListener
FLocation floc = new FLocation(target.getLocation()); FLocation floc = new FLocation(target.getLocation());
Faction faction = Board.getFactionAt(floc); Faction faction = Board.getFactionAt(floc);
if (faction.getFlag(FactionFlag.MONSTERS)) return; if (faction.getFlag(FFlag.MONSTERS)) return;
event.setCancelled(true); event.setCancelled(true);
} }
@ -339,7 +339,7 @@ public class FactionsEntityListener extends EntityListener
FLocation floc = new FLocation(event.getBlock()); FLocation floc = new FLocation(event.getBlock());
Faction faction = Board.getFactionAt(floc); Faction faction = Board.getFactionAt(floc);
if (faction.getFlag(FactionFlag.ENDERGRIEF)) return; if (faction.getFlag(FFlag.ENDERGRIEF)) return;
event.setCancelled(true); event.setCancelled(true);
} }
@ -352,7 +352,7 @@ public class FactionsEntityListener extends EntityListener
FLocation floc = new FLocation(event.getLocation()); FLocation floc = new FLocation(event.getLocation());
Faction faction = Board.getFactionAt(floc); Faction faction = Board.getFactionAt(floc);
if (faction.getFlag(FactionFlag.ENDERGRIEF)) return; if (faction.getFlag(FFlag.ENDERGRIEF)) return;
event.setCancelled(true); event.setCancelled(true);
} }

View File

@ -341,13 +341,8 @@ public class FactionsPlayerListener extends PlayerListener
FPlayer me = FPlayers.i.get(player); FPlayer me = FPlayers.i.get(player);
if (!me.isInOthersTerritory())
{
return false;
}
Rel rel = me.getRelationToLocation(); Rel rel = me.getRelationToLocation();
if (rel.isAtLeast(Rel.ALLY)) if (rel.isAtLeast(Rel.TRUCE))
{ {
return false; return false;
} }

View File

@ -9,7 +9,7 @@ import com.massivecraft.factions.Conf;
* *
* The flags are either true or false. * The flags are either true or false.
*/ */
public enum FactionFlag public enum FFlag
{ {
// Faction flags // Faction flags
PERMANENT("permanent", "<i>A permanent faction will never be deleted.", false, false), PERMANENT("permanent", "<i>A permanent faction will never be deleted.", false, false),
@ -33,7 +33,7 @@ public enum FactionFlag
public final boolean defaultDefaultValue; public final boolean defaultDefaultValue;
public final boolean defaultDefaultChangeable; public final boolean defaultDefaultChangeable;
private FactionFlag(final String nicename, final String desc, final boolean defaultDefaultValue, final boolean defaultDefaultChangeable) private FFlag(final String nicename, final String desc, final boolean defaultDefaultValue, final boolean defaultDefaultChangeable)
{ {
this.nicename = nicename; this.nicename = nicename;
this.desc = desc; this.desc = desc;
@ -73,7 +73,7 @@ public enum FactionFlag
return ret; return ret;
} }
public static FactionFlag parse(String str) public static FFlag parse(String str)
{ {
str = str.toLowerCase(); str = str.toLowerCase();
if (str.startsWith("per")) return PERMANENT; if (str.startsWith("per")) return PERMANENT;

View File

@ -81,7 +81,7 @@ public enum FPerm
{ {
rels.add("<p>"+rel.nicename); rels.add("<p>"+rel.nicename);
} }
ret += TextUtil.implode(rels, "<c> + "); ret += TextUtil.implode(rels, "<c>+");
if (withDesc) if (withDesc)
{ {
@ -125,7 +125,7 @@ public enum FPerm
return ret; return ret;
} }
private static final String errorpattern = "<b>%s can't <h>%s<b> in the territory of %s<b>."; private static final String errorpattern = "<b>%s<b> can't %s in the territory of %s<b>.";
public boolean has(RelationParticipator testSubject, FLocation floc, boolean informIfNot) public boolean has(RelationParticipator testSubject, FLocation floc, boolean informIfNot)
{ {
Faction factionThere = Board.getFactionAt(floc); Faction factionThere = Board.getFactionAt(floc);

View File

@ -5,7 +5,7 @@ import org.bukkit.ChatColor;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.iface.RelationParticipator; import com.massivecraft.factions.iface.RelationParticipator;
import com.massivecraft.factions.struct.FactionFlag; import com.massivecraft.factions.struct.FFlag;
import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.struct.Rel;
import com.massivecraft.factions.zcore.util.TextUtil; import com.massivecraft.factions.zcore.util.TextUtil;
@ -90,7 +90,7 @@ public class RelationUtil
return Rel.MEMBER; return Rel.MEMBER;
} }
if (!ignorePeaceful && (fme.getFlag(FactionFlag.PEACEFUL) || fthat.getFlag(FactionFlag.PEACEFUL))) if (!ignorePeaceful && (fme.getFlag(FFlag.PEACEFUL) || fthat.getFlag(FFlag.PEACEFUL)))
{ {
return Rel.TRUCE; return Rel.TRUCE;
} }