New conf.json setting "permanentFactionMemberDenyCommands" (list, default empty), which can be used to prevent members of permanent factions from using specific commands.
Also, a minor fix for the help page regarding faction banks being shown if "bankEnabled" setting was enabled but "econEnabled" setting was false (economy as a whole disabled).
This commit is contained in:
		@@ -128,6 +128,9 @@ public class Conf
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	public static int actionDeniedPainAmount = 2;
 | 
						public static int actionDeniedPainAmount = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// commands which will be prevented if the player is a member of a permanent faction
 | 
				
			||||||
 | 
						public static Set<String> permanentFactionMemberDenyCommands = new HashSet<String>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// commands which will be prevented when in claimed territory of another faction
 | 
						// commands which will be prevented when in claimed territory of another faction
 | 
				
			||||||
	public static Set<String> territoryNeutralDenyCommands = new HashSet<String>();
 | 
						public static Set<String> territoryNeutralDenyCommands = new HashSet<String>();
 | 
				
			||||||
	public static Set<String> territoryEnemyDenyCommands = new HashSet<String>();
 | 
						public static Set<String> territoryEnemyDenyCommands = new HashSet<String>();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,7 +84,7 @@ public class CmdHelp extends FCommand
 | 
				
			|||||||
		pageLines.add( p.cmdBase.cmdSethome.getUseageTemplate(true) );
 | 
							pageLines.add( p.cmdBase.cmdSethome.getUseageTemplate(true) );
 | 
				
			||||||
		helpPages.add(pageLines);
 | 
							helpPages.add(pageLines);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if (Econ.isSetup() && Conf.bankEnabled)
 | 
							if (Econ.isSetup() && Conf.econEnabled && Conf.bankEnabled)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			pageLines = new ArrayList<String>();
 | 
								pageLines = new ArrayList<String>();
 | 
				
			||||||
			pageLines.add( p.txt.parse("<i>Your faction has a bank which is used to pay for certain" ));
 | 
								pageLines.add( p.txt.parse("<i>Your faction has a bank which is used to pay for certain" ));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ import com.massivecraft.factions.FPlayer;
 | 
				
			|||||||
import com.massivecraft.factions.FPlayers;
 | 
					import com.massivecraft.factions.FPlayers;
 | 
				
			||||||
import com.massivecraft.factions.P;
 | 
					import com.massivecraft.factions.P;
 | 
				
			||||||
import com.massivecraft.factions.integration.SpoutFeatures;
 | 
					import com.massivecraft.factions.integration.SpoutFeatures;
 | 
				
			||||||
 | 
					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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -316,19 +317,11 @@ public class FactionsPlayerListener extends PlayerListener
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	public static boolean preventCommand(String fullCmd, Player player)
 | 
						public static boolean preventCommand(String fullCmd, Player player)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if ((Conf.territoryNeutralDenyCommands.isEmpty() && Conf.territoryEnemyDenyCommands.isEmpty()))
 | 
							if ((Conf.territoryNeutralDenyCommands.isEmpty() && Conf.territoryEnemyDenyCommands.isEmpty() && Conf.permanentFactionMemberDenyCommands.isEmpty()))
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		FPlayer me = FPlayers.i.get(player);
 | 
							FPlayer me = FPlayers.i.get(player);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Rel rel = me.getRelationToLocation();
 | 
					 | 
				
			||||||
		if (rel.isAtLeast(Rel.TRUCE))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		String shortCmd;  // command without the slash at the beginning
 | 
							String shortCmd;  // command without the slash at the beginning
 | 
				
			||||||
		if (fullCmd.startsWith("/"))
 | 
							if (fullCmd.startsWith("/"))
 | 
				
			||||||
			shortCmd = fullCmd.substring(1);
 | 
								shortCmd = fullCmd.substring(1);
 | 
				
			||||||
@@ -338,6 +331,29 @@ public class FactionsPlayerListener extends PlayerListener
 | 
				
			|||||||
			fullCmd = "/" + fullCmd;
 | 
								fullCmd = "/" + fullCmd;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if
 | 
				
			||||||
 | 
							(
 | 
				
			||||||
 | 
								me.hasFaction()
 | 
				
			||||||
 | 
								&&
 | 
				
			||||||
 | 
								! me.hasAdminMode()
 | 
				
			||||||
 | 
								&&
 | 
				
			||||||
 | 
								! Conf.permanentFactionMemberDenyCommands.isEmpty()
 | 
				
			||||||
 | 
								&&
 | 
				
			||||||
 | 
								me.getFaction().getFlag(FFlag.PERMANENT)
 | 
				
			||||||
 | 
								&&
 | 
				
			||||||
 | 
								isCommandInList(fullCmd, shortCmd, Conf.permanentFactionMemberDenyCommands.iterator())
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								me.msg("<b>You can't use the command \""+fullCmd+"\" because you are in a permanent faction.");
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Rel rel = me.getRelationToLocation();
 | 
				
			||||||
 | 
							if (rel.isAtLeast(Rel.TRUCE))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if
 | 
							if
 | 
				
			||||||
		(
 | 
							(
 | 
				
			||||||
			rel == Rel.NEUTRAL
 | 
								rel == Rel.NEUTRAL
 | 
				
			||||||
@@ -345,37 +361,34 @@ public class FactionsPlayerListener extends PlayerListener
 | 
				
			|||||||
			! Conf.territoryNeutralDenyCommands.isEmpty()
 | 
								! Conf.territoryNeutralDenyCommands.isEmpty()
 | 
				
			||||||
			&&
 | 
								&&
 | 
				
			||||||
			! me.hasAdminMode()
 | 
								! me.hasAdminMode()
 | 
				
			||||||
 | 
								&&
 | 
				
			||||||
 | 
								isCommandInList(fullCmd, shortCmd, Conf.territoryNeutralDenyCommands.iterator())
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Iterator<String> iter = Conf.territoryNeutralDenyCommands.iterator();
 | 
					 | 
				
			||||||
			String cmdCheck;
 | 
					 | 
				
			||||||
			while (iter.hasNext())
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				cmdCheck = iter.next();
 | 
					 | 
				
			||||||
				if (cmdCheck == null)
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					iter.remove();
 | 
					 | 
				
			||||||
					continue;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				cmdCheck = cmdCheck.toLowerCase();
 | 
					 | 
				
			||||||
				if (fullCmd.startsWith(cmdCheck) || shortCmd.startsWith(cmdCheck))
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			me.msg("<b>You can't use the command \""+fullCmd+"\" in neutral territory.");
 | 
								me.msg("<b>You can't use the command \""+fullCmd+"\" in neutral territory.");
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
			}
 | 
					
 | 
				
			||||||
		}
 | 
							if
 | 
				
			||||||
		else if
 | 
					 | 
				
			||||||
		(
 | 
							(
 | 
				
			||||||
			rel == Rel.ENEMY
 | 
								rel == Rel.ENEMY
 | 
				
			||||||
			&&
 | 
								&&
 | 
				
			||||||
			! Conf.territoryEnemyDenyCommands.isEmpty()
 | 
								! Conf.territoryEnemyDenyCommands.isEmpty()
 | 
				
			||||||
			&&
 | 
								&&
 | 
				
			||||||
			! me.hasAdminMode()
 | 
								! me.hasAdminMode()
 | 
				
			||||||
 | 
								&&
 | 
				
			||||||
 | 
								isCommandInList(fullCmd, shortCmd, Conf.territoryEnemyDenyCommands.iterator())
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Iterator<String> iter = Conf.territoryEnemyDenyCommands.iterator();
 | 
								me.msg("<b>You can't use the command \""+fullCmd+"\" in enemy territory.");
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static boolean isCommandInList(String fullCmd, String shortCmd, Iterator<String> iter)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
		String cmdCheck;
 | 
							String cmdCheck;
 | 
				
			||||||
		while (iter.hasNext())
 | 
							while (iter.hasNext())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -388,12 +401,8 @@ public class FactionsPlayerListener extends PlayerListener
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			cmdCheck = cmdCheck.toLowerCase();
 | 
								cmdCheck = cmdCheck.toLowerCase();
 | 
				
			||||||
			if (fullCmd.startsWith(cmdCheck) || shortCmd.startsWith(cmdCheck))
 | 
								if (fullCmd.startsWith(cmdCheck) || shortCmd.startsWith(cmdCheck))
 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					me.msg("<b>You can't use the command \""+fullCmd+"\" in enemy territory.");
 | 
					 | 
				
			||||||
				return true;
 | 
									return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user