mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-12-26 18:37:59 +01:00
Added ".silent" subpermission for checks
This commit is contained in:
parent
ac907989e0
commit
3f193e212f
@ -1,7 +1,7 @@
|
||||
|
||||
################################################################################
|
||||
# #
|
||||
# Important files, config.yml or "clean up your stuff #
|
||||
# Important files, config.yml or "clean up your stuff" #
|
||||
# #
|
||||
################################################################################
|
||||
|
||||
@ -131,7 +131,6 @@
|
||||
- bPermissions
|
||||
- PermissionsEx
|
||||
- Essentials GroupManager
|
||||
- PermissionBukkit
|
||||
|
||||
I personally recommend bPermissions, but any of them will do just fine.
|
||||
|
||||
@ -288,6 +287,17 @@
|
||||
|
||||
Especially you don't have to and should not use ".*" anywhere when defining
|
||||
NoCheat permissions.
|
||||
|
||||
|
||||
You can exclude a specific player from getting logged by appending ".silent"
|
||||
to the relevant permission node of the specific check. E.g.
|
||||
|
||||
- nocheat.checks.moving.nofall.silent
|
||||
|
||||
will prevent NoCheat from recording log messages for that player for the
|
||||
"nofall" check, while still executing all other actions as usual. These silent
|
||||
permissions won't show up elsewhere, e.g. when using the "nocheat permlist"
|
||||
command.
|
||||
|
||||
|
||||
################################################################################
|
||||
|
@ -1,6 +1,6 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2011 Wilfried Pasquazzo (Evenprime) <wilfried.pasquazzo@gmail.com>
|
||||
Copyright (c) 2012 Wilfried Pasquazzo (Evenprime) <wilfried.pasquazzo@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -1,4 +1,4 @@
|
||||
Copyright (c) 2011 Wilfried Pasquazzo (Evenprime)
|
||||
Copyright (c) 2012 Wilfried Pasquazzo (Evenprime)
|
||||
<wilfried.pasquazzo@gmail.com>
|
||||
|
||||
This software is provided under the MIT License,
|
||||
|
2
pom.xml
2
pom.xml
@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>cc.co.evenprime.bukkit</groupId>
|
||||
<artifactId>NoCheat</artifactId>
|
||||
<version>3.4.1</version>
|
||||
<version>3.4.2</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>NoCheat</name>
|
||||
<properties>
|
||||
|
@ -14,12 +14,15 @@ import cc.co.evenprime.bukkit.nocheat.actions.Action;
|
||||
*/
|
||||
public class ActionList {
|
||||
|
||||
public ActionList() {}
|
||||
public ActionList(String permission) {
|
||||
this.permissionSilent = permission + ".silent";
|
||||
}
|
||||
|
||||
private final static Action[] emptyArray = new Action[0];
|
||||
|
||||
private final Map<Integer, Action[]> actions = new HashMap<Integer, Action[]>();
|
||||
private final List<Integer> tresholds = new ArrayList<Integer>();
|
||||
public final String permissionSilent;
|
||||
|
||||
/**
|
||||
* Add an entry to this actionList. The list will be sorted by tresholds
|
||||
|
@ -11,6 +11,7 @@ import cc.co.evenprime.bukkit.nocheat.NoCheatPlayer;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.Action;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.NoCheatCommandSender;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.ParameterName;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ConsolecommandAction;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.DummyAction;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.LogAction;
|
||||
@ -39,16 +40,18 @@ public abstract class Check {
|
||||
* @param actions
|
||||
* @return
|
||||
*/
|
||||
protected final boolean executeActions(NoCheatPlayer player, Action[] actions) {
|
||||
protected final boolean executeActions(NoCheatPlayer player, ActionList actionList, double violationLevel) {
|
||||
|
||||
boolean special = false;
|
||||
|
||||
Action[] actions = actionList.getActions(violationLevel);
|
||||
|
||||
final long time = System.currentTimeMillis() / 1000L;
|
||||
final ConfigurationCacheStore cc = player.getConfigurationStore();
|
||||
|
||||
for(Action ac : actions) {
|
||||
if(player.getExecutionHistory().executeAction(groupId, ac, time)) {
|
||||
if(ac instanceof LogAction) {
|
||||
if(ac instanceof LogAction && !player.hasPermission(actionList.permissionSilent)) {
|
||||
executeLogAction((LogAction) ac, this, player, cc);
|
||||
} else if(ac instanceof SpecialAction) {
|
||||
special = true;
|
||||
|
@ -4,6 +4,7 @@ import cc.co.evenprime.bukkit.nocheat.ConfigItem;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.ConfPaths;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.Permissions;
|
||||
|
||||
/**
|
||||
* Configurations specific for the "BlockBreak" checks
|
||||
@ -26,12 +27,12 @@ public class BlockBreakConfig implements ConfigItem {
|
||||
|
||||
reachCheck = data.getBoolean(ConfPaths.BLOCKBREAK_REACH_CHECK);
|
||||
reachDistance = 535D / 100D;
|
||||
reachActions = data.getActionList(ConfPaths.BLOCKBREAK_REACH_ACTIONS);
|
||||
reachActions = data.getActionList(ConfPaths.BLOCKBREAK_REACH_ACTIONS, Permissions.BLOCKBREAK_REACH);
|
||||
directionCheck = data.getBoolean(ConfPaths.BLOCKBREAK_DIRECTION_CHECK);
|
||||
directionPrecision = ((double) data.getInt(ConfPaths.BLOCKBREAK_DIRECTION_PRECISION)) / 100D;
|
||||
directionPenaltyTime = data.getInt(ConfPaths.BLOCKBREAK_DIRECTION_PENALTYTIME);
|
||||
directionActions = data.getActionList(ConfPaths.BLOCKBREAK_DIRECTION_ACTIONS);
|
||||
directionActions = data.getActionList(ConfPaths.BLOCKBREAK_DIRECTION_ACTIONS, Permissions.BLOCKBREAK_DIRECTION);
|
||||
noswingCheck = data.getBoolean(ConfPaths.BLOCKBREAK_NOSWING_CHECK);
|
||||
noswingActions = data.getActionList(ConfPaths.BLOCKBREAK_NOSWING_ACTIONS);
|
||||
noswingActions = data.getActionList(ConfPaths.BLOCKBREAK_NOSWING_ACTIONS, Permissions.BLOCKBREAK_NOSWING);
|
||||
}
|
||||
}
|
||||
|
@ -39,12 +39,12 @@ public class DirectionCheck extends BlockBreakCheck {
|
||||
if(isInstaBreak) {
|
||||
// Instabreak block failures are very common, so don't be as
|
||||
// hard on people failing them
|
||||
off /= 10;
|
||||
off /= 5;
|
||||
}
|
||||
data.directionVL += off;
|
||||
incrementStatistics(player, Id.BB_DIRECTION, off);
|
||||
|
||||
cancel = executeActions(player, ccblockbreak.directionActions.getActions(data.directionVL));
|
||||
cancel = executeActions(player, ccblockbreak.directionActions, data.directionVL);
|
||||
|
||||
if(cancel) {
|
||||
// Needed to calculate penalty times
|
||||
|
@ -24,7 +24,7 @@ public class NoswingCheck extends BlockBreakCheck {
|
||||
data.noswingVL += 1;
|
||||
incrementStatistics(player, Id.BB_NOSWING, 1);
|
||||
|
||||
cancel = executeActions(player, cc.noswingActions.getActions(data.noswingVL));
|
||||
cancel = executeActions(player, cc.noswingActions, data.noswingVL);
|
||||
}
|
||||
|
||||
return cancel;
|
||||
|
@ -35,7 +35,7 @@ public class ReachCheck extends BlockBreakCheck {
|
||||
incrementStatistics(player, Id.BB_REACH, distance);
|
||||
data.reachDistance = distance;
|
||||
|
||||
cancel = executeActions(player, cc.reachActions.getActions(data.reachVL));
|
||||
cancel = executeActions(player, cc.reachActions, data.reachVL);
|
||||
} else {
|
||||
data.reachVL *= 0.9D;
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import cc.co.evenprime.bukkit.nocheat.ConfigItem;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.ConfPaths;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.Permissions;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -23,11 +24,11 @@ public class BlockPlaceConfig implements ConfigItem {
|
||||
|
||||
reachCheck = data.getBoolean(ConfPaths.BLOCKPLACE_REACH_CHECK);
|
||||
reachDistance = 535D / 100D;
|
||||
reachActions = data.getActionList(ConfPaths.BLOCKPLACE_REACH_ACTIONS);
|
||||
reachActions = data.getActionList(ConfPaths.BLOCKPLACE_REACH_ACTIONS, Permissions.BLOCKPLACE_REACH);
|
||||
|
||||
directionCheck = data.getBoolean(ConfPaths.BLOCKPLACE_DIRECTION_CHECK);
|
||||
directionPenaltyTime = data.getInt(ConfPaths.BLOCKPLACE_DIRECTION_PENALTYTIME);
|
||||
directionPrecision = ((double) data.getInt(ConfPaths.BLOCKPLACE_DIRECTION_PRECISION)) / 100D;
|
||||
directionActions = data.getActionList(ConfPaths.BLOCKPLACE_DIRECTION_ACTIONS);
|
||||
directionActions = data.getActionList(ConfPaths.BLOCKPLACE_DIRECTION_ACTIONS, Permissions.BLOCKPLACE_DIRECTION);
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ public class DirectionCheck extends BlockPlaceCheck {
|
||||
|
||||
// Prepare some event-specific values for logging and custom actions
|
||||
|
||||
cancel = executeActions(player, cc.directionActions.getActions(data.directionVL));
|
||||
cancel = executeActions(player, cc.directionActions, data.directionVL);
|
||||
|
||||
if(cancel) {
|
||||
// Needed to calculate penalty times
|
||||
|
@ -35,7 +35,7 @@ public class ReachCheck extends BlockPlaceCheck {
|
||||
incrementStatistics(player, Id.BP_REACH, distance);
|
||||
data.reachdistance = distance;
|
||||
|
||||
cancel = executeActions(player, cc.reachActions.getActions(data.reachVL));
|
||||
cancel = executeActions(player, cc.reachActions, data.reachVL);
|
||||
} else {
|
||||
data.reachVL *= 0.9D;
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import cc.co.evenprime.bukkit.nocheat.ConfigItem;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.ConfPaths;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.Permissions;
|
||||
|
||||
public class ChatConfig implements ConfigItem {
|
||||
|
||||
@ -25,9 +26,9 @@ public class ChatConfig implements ConfigItem {
|
||||
spamTimeframe = data.getInt(ConfPaths.CHAT_SPAM_TIMEFRAME);
|
||||
spamMessageLimit = data.getInt(ConfPaths.CHAT_SPAM_MESSAGELIMIT);
|
||||
spamCommandLimit = data.getInt(ConfPaths.CHAT_SPAM_COMMANDLIMIT);
|
||||
spamActions = data.getActionList(ConfPaths.CHAT_SPAM_ACTIONS);
|
||||
spamActions = data.getActionList(ConfPaths.CHAT_SPAM_ACTIONS, Permissions.CHAT_SPAM);
|
||||
colorCheck = data.getBoolean(ConfPaths.CHAT_COLOR_CHECK);
|
||||
colorActions = data.getActionList(ConfPaths.CHAT_COLOR_ACTIONS);
|
||||
colorActions = data.getActionList(ConfPaths.CHAT_COLOR_ACTIONS, Permissions.CHAT_COLOR);
|
||||
}
|
||||
|
||||
private String[] splitWhitelist(String string) {
|
||||
|
@ -19,7 +19,7 @@ public class ColorCheck extends ChatCheck {
|
||||
data.colorVL += 1;
|
||||
incrementStatistics(player, Id.CHAT_COLOR, 1);
|
||||
|
||||
boolean filter = executeActions(player, cc.colorActions.getActions(data.colorVL));
|
||||
boolean filter = executeActions(player, cc.colorActions, data.colorVL);
|
||||
|
||||
if(filter) {
|
||||
// Remove color codes
|
||||
|
@ -50,7 +50,7 @@ public class SpamCheck extends ChatCheck {
|
||||
data.spamVL += Math.max(0, data.commandCount - commandLimit);
|
||||
incrementStatistics(player, Id.CHAT_SPAM, 1);
|
||||
|
||||
cancel = executeActions(player, cc.spamActions.getActions(data.spamVL));
|
||||
cancel = executeActions(player, cc.spamActions, data.spamVL);
|
||||
}
|
||||
|
||||
return cancel;
|
||||
|
@ -51,7 +51,7 @@ public class DirectionCheck extends FightCheck {
|
||||
incrementStatistics(player, Id.FI_DIRECTION, sqrt);
|
||||
}
|
||||
|
||||
cancel = executeActions(player, cc.directionActions.getActions(data.directionVL));
|
||||
cancel = executeActions(player, cc.directionActions, data.directionVL);
|
||||
|
||||
if(cancel) {
|
||||
// Needed to calculate penalty times
|
||||
|
@ -4,6 +4,7 @@ import cc.co.evenprime.bukkit.nocheat.ConfigItem;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.ConfPaths;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.Permissions;
|
||||
|
||||
public class FightConfig implements ConfigItem {
|
||||
|
||||
@ -30,19 +31,19 @@ public class FightConfig implements ConfigItem {
|
||||
directionCheck = data.getBoolean(ConfPaths.FIGHT_DIRECTION_CHECK);
|
||||
directionPrecision = ((double) (data.getInt(ConfPaths.FIGHT_DIRECTION_PRECISION))) / 100D;
|
||||
directionPenaltyTime = data.getInt(ConfPaths.FIGHT_DIRECTION_PENALTYTIME);
|
||||
directionActions = data.getActionList(ConfPaths.FIGHT_DIRECTION_ACTIONS);
|
||||
directionActions = data.getActionList(ConfPaths.FIGHT_DIRECTION_ACTIONS, Permissions.FIGHT_DIRECTION);
|
||||
noswingCheck = data.getBoolean(ConfPaths.FIGHT_NOSWING_CHECK);
|
||||
noswingActions = data.getActionList(ConfPaths.FIGHT_NOSWING_ACTIONS);
|
||||
noswingActions = data.getActionList(ConfPaths.FIGHT_NOSWING_ACTIONS, Permissions.FIGHT_NOSWING);
|
||||
reachCheck = data.getBoolean(ConfPaths.FIGHT_REACH_CHECK);
|
||||
reachLimit = ((double) (data.getInt(ConfPaths.FIGHT_REACH_LIMIT))) / 100D;
|
||||
reachPenaltyTime = data.getInt(ConfPaths.FIGHT_REACH_PENALTYTIME);
|
||||
reachActions = data.getActionList(ConfPaths.FIGHT_REACH_ACTIONS);
|
||||
reachActions = data.getActionList(ConfPaths.FIGHT_REACH_ACTIONS, Permissions.FIGHT_REACH);
|
||||
speedCheck = data.getBoolean(ConfPaths.FIGHT_SPEED_CHECK);
|
||||
speedActions = data.getActionList(ConfPaths.FIGHT_SPEED_ACTIONS);
|
||||
speedActions = data.getActionList(ConfPaths.FIGHT_SPEED_ACTIONS, Permissions.FIGHT_SPEED);
|
||||
speedAttackLimit = data.getInt(ConfPaths.FIGHT_SPEED_ATTACKLIMIT);
|
||||
|
||||
godmodeCheck = data.getBoolean(ConfPaths.FIGHT_GODMODE_CHECK);
|
||||
godmodeActions = data.getActionList(ConfPaths.FIGHT_GODMODE_ACTIONS);
|
||||
godmodeActions = data.getActionList(ConfPaths.FIGHT_GODMODE_ACTIONS, Permissions.FIGHT_GODMODE);
|
||||
|
||||
damageChecks = directionCheck || noswingCheck || reachCheck || speedCheck;
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ public class GodmodeCheck extends FightCheck {
|
||||
// No
|
||||
data.godmodeVL -= data.godmodeBuffer;
|
||||
incrementStatistics(player, Statistics.Id.FI_GODMODE, -data.godmodeBuffer);
|
||||
cancelled = executeActions(player, cc.godmodeActions.getActions(data.godmodeVL));
|
||||
cancelled = executeActions(player, cc.godmodeActions, data.godmodeVL);
|
||||
}
|
||||
} else {
|
||||
// Give some new points, once a second
|
||||
|
@ -25,7 +25,7 @@ public class NoswingCheck extends FightCheck {
|
||||
data.noswingVL += 1;
|
||||
incrementStatistics(player, Id.FI_NOSWING, 1);
|
||||
|
||||
cancel = executeActions(player, cc.noswingActions.getActions(data.noswingVL));
|
||||
cancel = executeActions(player, cc.noswingActions, data.noswingVL);
|
||||
}
|
||||
|
||||
return cancel;
|
||||
|
@ -53,7 +53,7 @@ public class ReachCheck extends FightCheck {
|
||||
incrementStatistics(player, Id.FI_REACH, sqrt);
|
||||
}
|
||||
|
||||
cancel = executeActions(player, cc.reachActions.getActions(data.reachVL));
|
||||
cancel = executeActions(player, cc.reachActions, data.reachVL);
|
||||
|
||||
if(cancel) {
|
||||
// Needed to calculate penalty times
|
||||
|
@ -33,7 +33,7 @@ public class SpeedCheck extends FightCheck {
|
||||
incrementStatistics(player, Id.FI_SPEED, 1);
|
||||
}
|
||||
|
||||
cancel = executeActions(player, cc.speedActions.getActions(data.speedVL));
|
||||
cancel = executeActions(player, cc.speedActions, data.speedVL);
|
||||
}
|
||||
|
||||
return cancel;
|
||||
|
@ -34,7 +34,7 @@ public class DropCheck extends InventoryCheck {
|
||||
data.dropVL = data.dropCount - cc.dropLimit;
|
||||
incrementStatistics(player, Id.INV_DROP, 1);
|
||||
|
||||
cancel = executeActions(player, cc.dropActions.getActions(data.dropVL));
|
||||
cancel = executeActions(player, cc.dropActions, data.dropVL);
|
||||
}
|
||||
|
||||
return cancel;
|
||||
|
@ -32,7 +32,7 @@ public class InstantBowCheck extends InventoryCheck {
|
||||
int vl = ((int) (expectedTimeWhenStringDrawn - time)) / 100;
|
||||
data.instantBowVL += vl;
|
||||
incrementStatistics(player, Id.INV_BOW, vl);
|
||||
cancelled = executeActions(player, cc.bowActions.getActions(data.instantBowVL));
|
||||
cancelled = executeActions(player, cc.bowActions, data.instantBowVL);
|
||||
}
|
||||
|
||||
return cancelled;
|
||||
|
@ -35,7 +35,7 @@ public class InstantEatCheck extends InventoryCheck {
|
||||
int vl = ((int) (expectedTimeWhenEatingFinished - time)) / 100;
|
||||
data.instantEatVL += vl;
|
||||
incrementStatistics(player, Id.INV_EAT, vl);
|
||||
cancelled = executeActions(player, cc.eatActions.getActions(data.instantEatVL));
|
||||
cancelled = executeActions(player, cc.eatActions, data.instantEatVL);
|
||||
}
|
||||
|
||||
return cancelled;
|
||||
|
@ -4,6 +4,7 @@ import cc.co.evenprime.bukkit.nocheat.ConfigItem;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.ConfPaths;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.Permissions;
|
||||
|
||||
public class InventoryConfig implements ConfigItem {
|
||||
|
||||
@ -23,12 +24,12 @@ public class InventoryConfig implements ConfigItem {
|
||||
dropCheck = data.getBoolean(ConfPaths.INVENTORY_DROP_CHECK);
|
||||
dropTimeFrame = data.getInt(ConfPaths.INVENTORY_DROP_TIMEFRAME);
|
||||
dropLimit = data.getInt(ConfPaths.INVENTORY_DROP_LIMIT);
|
||||
dropActions = data.getActionList(ConfPaths.INVENTORY_DROP_ACTIONS);
|
||||
dropActions = data.getActionList(ConfPaths.INVENTORY_DROP_ACTIONS, Permissions.INVENTORY_DROP);
|
||||
|
||||
bowCheck = data.getBoolean(ConfPaths.INVENTORY_INSTANTBOW_CHECK);
|
||||
bowActions = data.getActionList(ConfPaths.INVENTORY_INSTANTBOW_ACTIONS);
|
||||
bowActions = data.getActionList(ConfPaths.INVENTORY_INSTANTBOW_ACTIONS, Permissions.INVENTORY_INSTANTBOW);
|
||||
|
||||
eatCheck = data.getBoolean(ConfPaths.INVENTORY_INSTANTEAT_CHECK);
|
||||
eatActions = data.getActionList(ConfPaths.INVENTORY_INSTANTEAT_ACTIONS);
|
||||
eatActions = data.getActionList(ConfPaths.INVENTORY_INSTANTEAT_ACTIONS, Permissions.INVENTORY_INSTANTEAT);
|
||||
}
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ public class FlyingCheck extends MovingCheck {
|
||||
incrementStatistics(player, Id.MOV_FLYING, resultVert);
|
||||
}
|
||||
|
||||
boolean cancel = executeActions(player, ccmoving.flyingActions.getActions(data.runflyVL));
|
||||
boolean cancel = executeActions(player, ccmoving.flyingActions, data.runflyVL);
|
||||
|
||||
// Was one of the actions a cancel? Then really do it
|
||||
if(cancel) {
|
||||
|
@ -55,7 +55,7 @@ public class MorePacketsCheck extends MovingCheck {
|
||||
|
||||
data.packets = -data.morePacketsBuffer;
|
||||
|
||||
final boolean cancel = executeActions(player, cc.morePacketsActions.getActions(data.morePacketsVL));
|
||||
final boolean cancel = executeActions(player, cc.morePacketsActions, data.morePacketsVL);
|
||||
|
||||
if(cancel)
|
||||
newToLocation = data.morePacketsSetbackPoint;
|
||||
|
@ -4,6 +4,7 @@ import cc.co.evenprime.bukkit.nocheat.ConfigItem;
|
||||
import cc.co.evenprime.bukkit.nocheat.actions.types.ActionList;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.ConfPaths;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
|
||||
import cc.co.evenprime.bukkit.nocheat.config.Permissions;
|
||||
|
||||
/**
|
||||
* Configurations specific for the Move Checks. Every world gets one of these
|
||||
@ -53,20 +54,20 @@ public class MovingConfig implements ConfigItem {
|
||||
jumpheight = ((double) 135) / 100D;
|
||||
|
||||
sneakingCheck = !data.getBoolean(ConfPaths.MOVING_RUNFLY_ALLOWFASTSNEAKING);
|
||||
actions = data.getActionList(ConfPaths.MOVING_RUNFLY_ACTIONS);
|
||||
actions = data.getActionList(ConfPaths.MOVING_RUNFLY_ACTIONS, Permissions.MOVING_RUNFLY);
|
||||
|
||||
allowFlying = data.getBoolean(ConfPaths.MOVING_RUNFLY_FLYING_ALLOWALWAYS);
|
||||
flyingSpeedLimitVertical = ((double) data.getInt(ConfPaths.MOVING_RUNFLY_FLYING_SPEEDLIMITVERTICAL)) / 100D;
|
||||
flyingSpeedLimitHorizontal = ((double) data.getInt(ConfPaths.MOVING_RUNFLY_FLYING_SPEEDLIMITHORIZONTAL)) / 100D;
|
||||
flyingHeightLimit = data.getInt(ConfPaths.MOVING_RUNFLY_FLYING_HEIGHTLIMIT);
|
||||
flyingActions = data.getActionList(ConfPaths.MOVING_RUNFLY_FLYING_ACTIONS);
|
||||
flyingActions = data.getActionList(ConfPaths.MOVING_RUNFLY_FLYING_ACTIONS, Permissions.MOVING_FLYING);
|
||||
|
||||
nofallCheck = data.getBoolean(ConfPaths.MOVING_RUNFLY_CHECKNOFALL);
|
||||
nofallMultiplier = ((float) 200) / 100F;
|
||||
nofallaggressive = data.getBoolean(ConfPaths.MOVING_RUNFLY_NOFALLAGGRESSIVE);
|
||||
nofallActions = data.getActionList(ConfPaths.MOVING_RUNFLY_NOFALLACTIONS);
|
||||
nofallActions = data.getActionList(ConfPaths.MOVING_RUNFLY_NOFALLACTIONS, Permissions.MOVING_NOFALL);
|
||||
|
||||
morePacketsCheck = data.getBoolean(ConfPaths.MOVING_MOREPACKETS_CHECK);
|
||||
morePacketsActions = data.getActionList(ConfPaths.MOVING_MOREPACKETS_ACTIONS);
|
||||
morePacketsActions = data.getActionList(ConfPaths.MOVING_MOREPACKETS_ACTIONS, Permissions.MOVING_MOREPACKETS);
|
||||
}
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ public class NoFallCheck extends MovingCheck {
|
||||
data.fallDistance = player.getPlayer().getFallDistance();
|
||||
data.nofallVL += data.fallDistance;
|
||||
incrementStatistics(player, Id.MOV_NOFALL, data.fallDistance);
|
||||
final boolean cancel = executeActions(player, cc.nofallActions.getActions(data.nofallVL));
|
||||
final boolean cancel = executeActions(player, cc.nofallActions, data.nofallVL);
|
||||
if(cancel) {
|
||||
player.dealFallDamage();
|
||||
}
|
||||
@ -64,7 +64,7 @@ public class NoFallCheck extends MovingCheck {
|
||||
data.nofallVL += difference;
|
||||
incrementStatistics(player, Id.MOV_NOFALL, difference);
|
||||
|
||||
final boolean cancel = executeActions(player, cc.nofallActions.getActions(data.nofallVL));
|
||||
final boolean cancel = executeActions(player, cc.nofallActions, data.nofallVL);
|
||||
|
||||
// If "cancelled", the fall damage gets dealt in a way that's
|
||||
// visible to other plugins
|
||||
|
@ -79,7 +79,7 @@ public class RunningCheck extends MovingCheck {
|
||||
|
||||
incrementStatistics(player, data.statisticCategory, result);
|
||||
|
||||
boolean cancel = executeActions(player, cc.actions.getActions(data.runflyVL));
|
||||
boolean cancel = executeActions(player, cc.actions, data.runflyVL);
|
||||
|
||||
// Was one of the actions a cancel? Then do it
|
||||
if(cancel) {
|
||||
|
@ -113,8 +113,8 @@ public class ActionFactory {
|
||||
return actions.toArray(new Action[actions.size()]);
|
||||
}
|
||||
|
||||
public ActionList createActionList(String definition) {
|
||||
ActionList list = new ActionList();
|
||||
public ActionList createActionList(String definition, String permission) {
|
||||
ActionList list = new ActionList(permission);
|
||||
|
||||
boolean first = true;
|
||||
|
||||
|
@ -76,10 +76,10 @@ public class NoCheatConfiguration extends YamlConfiguration {
|
||||
* @param path
|
||||
* @return
|
||||
*/
|
||||
public ActionList getActionList(String path) {
|
||||
public ActionList getActionList(String path, String permission) {
|
||||
|
||||
String value = this.getString(path);
|
||||
return factory.createActionList(value);
|
||||
return factory.createActionList(value, permission);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user