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;
 | 
			
		||||
 | 
			
		||||
	// 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
 | 
			
		||||
	public static Set<String> territoryNeutralDenyCommands = 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) );
 | 
			
		||||
		helpPages.add(pageLines);
 | 
			
		||||
		
 | 
			
		||||
		if (Econ.isSetup() && Conf.bankEnabled)
 | 
			
		||||
		if (Econ.isSetup() && Conf.econEnabled && Conf.bankEnabled)
 | 
			
		||||
		{
 | 
			
		||||
			pageLines = new ArrayList<String>();
 | 
			
		||||
			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.P;
 | 
			
		||||
import com.massivecraft.factions.integration.SpoutFeatures;
 | 
			
		||||
import com.massivecraft.factions.struct.FFlag;
 | 
			
		||||
import com.massivecraft.factions.struct.FPerm;
 | 
			
		||||
import com.massivecraft.factions.struct.Rel;
 | 
			
		||||
 | 
			
		||||
@@ -316,19 +317,11 @@ public class FactionsPlayerListener extends PlayerListener
 | 
			
		||||
 | 
			
		||||
	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;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		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
 | 
			
		||||
		if (fullCmd.startsWith("/"))
 | 
			
		||||
			shortCmd = fullCmd.substring(1);
 | 
			
		||||
@@ -338,6 +331,29 @@ public class FactionsPlayerListener extends PlayerListener
 | 
			
		||||
			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
 | 
			
		||||
		(
 | 
			
		||||
			rel == Rel.NEUTRAL
 | 
			
		||||
@@ -345,37 +361,34 @@ public class FactionsPlayerListener extends PlayerListener
 | 
			
		||||
			! Conf.territoryNeutralDenyCommands.isEmpty()
 | 
			
		||||
			&&
 | 
			
		||||
			! 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.");
 | 
			
		||||
			return true;
 | 
			
		||||
		}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else if
 | 
			
		||||
 | 
			
		||||
		if
 | 
			
		||||
		(
 | 
			
		||||
			rel == Rel.ENEMY
 | 
			
		||||
			&&
 | 
			
		||||
			! Conf.territoryEnemyDenyCommands.isEmpty()
 | 
			
		||||
			&&
 | 
			
		||||
			! 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;
 | 
			
		||||
		while (iter.hasNext())
 | 
			
		||||
		{
 | 
			
		||||
@@ -388,12 +401,8 @@ public class FactionsPlayerListener extends PlayerListener
 | 
			
		||||
 | 
			
		||||
			cmdCheck = cmdCheck.toLowerCase();
 | 
			
		||||
			if (fullCmd.startsWith(cmdCheck) || shortCmd.startsWith(cmdCheck))
 | 
			
		||||
				{
 | 
			
		||||
					me.msg("<b>You can't use the command \""+fullCmd+"\" in enemy territory.");
 | 
			
		||||
				return true;
 | 
			
		||||
		}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user