Wheeerp
This commit is contained in:
		@@ -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:
 | 
			
		||||
 
 | 
			
		||||
@@ -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");
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
		{
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										88
									
								
								src/com/massivecraft/factions/cmd/CmdFlag.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								src/com/massivecraft/factions/cmd/CmdFlag.java
									
									
									
									
									
										Normal 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));
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
@@ -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) );
 | 
			
		||||
 
 | 
			
		||||
@@ -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())
 | 
			
		||||
 
 | 
			
		||||
@@ -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) + "\".");
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -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.");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								src/com/massivecraft/factions/cmd/CmdRelationTruce.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/com/massivecraft/factions/cmd/CmdRelationTruce.java
									
									
									
									
									
										Normal 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;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -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.");
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
	// -------------------------------------------- //
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -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"),
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user