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:
		
							parent
							
								
									b4450b3bdb
								
							
						
					
					
						commit
						663a7e9454
					
				| @ -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,54 +361,47 @@ 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; | ||||
| 				} | ||||
| 			} | ||||
| 			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(); | ||||
| 			String cmdCheck; | ||||
| 			while (iter.hasNext()) | ||||
| 			{ | ||||
| 				cmdCheck = iter.next(); | ||||
| 				if (cmdCheck == null) | ||||
| 				{ | ||||
| 					iter.remove(); | ||||
| 					continue; | ||||
| 				} | ||||
| 			me.msg("<b>You can't use the command \""+fullCmd+"\" in enemy territory."); | ||||
| 			return true; | ||||
| 		} | ||||
| 
 | ||||
| 				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; | ||||
| 	} | ||||
| 
 | ||||
| 	private static boolean isCommandInList(String fullCmd, String shortCmd, Iterator<String> iter) | ||||
| 	{ | ||||
| 		String cmdCheck; | ||||
| 		while (iter.hasNext()) | ||||
| 		{ | ||||
| 			cmdCheck = iter.next(); | ||||
| 			if (cmdCheck == null) | ||||
| 			{ | ||||
| 				iter.remove(); | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			cmdCheck = cmdCheck.toLowerCase(); | ||||
| 			if (fullCmd.startsWith(cmdCheck) || shortCmd.startsWith(cmdCheck)) | ||||
| 				return true; | ||||
| 		} | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user