mirror of
https://github.com/MassiveCraft/Factions.git
synced 2024-11-19 16:55:21 +01:00
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
90d91180af
commit
03b368e9c4
@ -117,7 +117,10 @@ public class Conf
|
|||||||
public static double considerFactionsReallyOfflineAfterXMinutes = 0.0;
|
public static double considerFactionsReallyOfflineAfterXMinutes = 0.0;
|
||||||
|
|
||||||
public static int actionDeniedPainAmount = 1;
|
public static int actionDeniedPainAmount = 1;
|
||||||
|
|
||||||
|
// 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( "" );
|
pageLines.add( "" );
|
||||||
|
@ -515,13 +515,37 @@ 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);
|
||||||
|
|
||||||
|
String shortCmd; // command without the slash at the beginning
|
||||||
|
if (fullCmd.startsWith("/"))
|
||||||
|
shortCmd = fullCmd.substring(1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
shortCmd = fullCmd;
|
||||||
|
fullCmd = "/" + fullCmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if
|
||||||
|
(
|
||||||
|
me.hasFaction()
|
||||||
|
&&
|
||||||
|
! me.isAdminBypassing()
|
||||||
|
&&
|
||||||
|
! Conf.permanentFactionMemberDenyCommands.isEmpty()
|
||||||
|
&&
|
||||||
|
me.getFaction().isPermanent()
|
||||||
|
&&
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
if (!me.isInOthersTerritory())
|
if (!me.isInOthersTerritory())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -533,15 +557,6 @@ public class FactionsPlayerListener extends PlayerListener
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
String shortCmd; // command without the slash at the beginning
|
|
||||||
if (fullCmd.startsWith("/"))
|
|
||||||
shortCmd = fullCmd.substring(1);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
shortCmd = fullCmd;
|
|
||||||
fullCmd = "/" + fullCmd;
|
|
||||||
}
|
|
||||||
|
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
rel.isNeutral()
|
rel.isNeutral()
|
||||||
@ -549,54 +564,47 @@ public class FactionsPlayerListener extends PlayerListener
|
|||||||
! Conf.territoryNeutralDenyCommands.isEmpty()
|
! Conf.territoryNeutralDenyCommands.isEmpty()
|
||||||
&&
|
&&
|
||||||
! me.isAdminBypassing()
|
! me.isAdminBypassing()
|
||||||
|
&&
|
||||||
|
isCommandInList(fullCmd, shortCmd, Conf.territoryNeutralDenyCommands.iterator())
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Iterator<String> iter = Conf.territoryNeutralDenyCommands.iterator();
|
me.msg("<b>You can't use the command \""+fullCmd+"\" in neutral territory.");
|
||||||
String cmdCheck;
|
return true;
|
||||||
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.isEnemy()
|
rel.isEnemy()
|
||||||
&&
|
&&
|
||||||
! Conf.territoryEnemyDenyCommands.isEmpty()
|
! Conf.territoryEnemyDenyCommands.isEmpty()
|
||||||
&&
|
&&
|
||||||
! me.isAdminBypassing()
|
! me.isAdminBypassing()
|
||||||
|
&&
|
||||||
|
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.");
|
||||||
String cmdCheck;
|
return true;
|
||||||
while (iter.hasNext())
|
}
|
||||||
{
|
|
||||||
cmdCheck = iter.next();
|
|
||||||
if (cmdCheck == null)
|
|
||||||
{
|
|
||||||
iter.remove();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmdCheck = cmdCheck.toLowerCase();
|
return false;
|
||||||
if (fullCmd.startsWith(cmdCheck) || shortCmd.startsWith(cmdCheck))
|
}
|
||||||
{
|
|
||||||
me.msg("<b>You can't use the command \""+fullCmd+"\" in enemy territory.");
|
private static boolean isCommandInList(String fullCmd, String shortCmd, Iterator<String> iter)
|
||||||
return true;
|
{
|
||||||
}
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user