[API CHANGE] Add debug flags to check data [missing: use that one].

For debug output now data.debug is used instead of config.debug, so the
data is initialized with the config.debug value. As an effect of this,
removing the data or reloading will override flags that have been set by
means of API-access only.

Affected:
* Adds getDebug and setDebug to ICheckData.
* Adds appropriate configs to all constructors of check data.
* Some per-check debug flags have been removed.

Extras: 
* spaces
* import cleanup.
This commit is contained in:
asofold 2014-12-04 02:02:37 +01:00
parent a2e4db7c94
commit 04d2896f7e
37 changed files with 837 additions and 776 deletions

View File

@ -1,6 +1,5 @@
package fr.neatmonster.nocheatplus.utilities.ds.corw;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

View File

@ -11,7 +11,7 @@ import fr.neatmonster.nocheatplus.config.ConfigFile;
public abstract class ACheckConfig implements ICheckConfig {
/** For on the fly debug setting. */
public boolean debug = false;
public boolean debug = false; // TODO: Might make private.
/** If to adapt to server side lag. */
public final boolean lag;

View File

@ -7,18 +7,34 @@ package fr.neatmonster.nocheatplus.checks.access;
*/
public abstract class ACheckData implements ICheckData {
@Override
public boolean hasCachedPermissionEntry(String permission) {
return false;
}
public boolean debug; // TODO: Might make private.
public ACheckData(ICheckConfig config) {
setDebug(config.getDebug());
}
@Override
public boolean hasCachedPermission(String permission) {
return false;
}
@Override
public void setDebug(boolean debug) {
this.debug = debug;
}
@Override
public boolean getDebug() {
return debug;
}
@Override
public boolean hasCachedPermissionEntry(String permission) {
return false;
}
@Override
public boolean hasCachedPermission(String permission) {
return false;
}
@Override
public void setCachedPermission(String permission, boolean value) {
}
@Override
public void setCachedPermission(String permission, boolean value) {
}
}

View File

@ -11,26 +11,30 @@ import java.util.Map;
*/
public abstract class AsyncCheckData extends ACheckData {
// TODO: consider using a PermissionEntry class with a timestamp to schedule renewing it.
// TODO: consider using a normal HashMap and ensure by contract that the permissions get filled at login, so updates are thread safe.
/** The permissions that are actually cached. */
protected final Map<String, Boolean> cachedPermissions = Collections.synchronizedMap(new HashMap<String, Boolean>());
@Override
public boolean hasCachedPermissionEntry(final String permission) {
return cachedPermissions.containsKey(permission);
}
// TODO: consider using a PermissionEntry class with a timestamp to schedule renewing it.
// TODO: consider using a normal HashMap and ensure by contract that the permissions get filled at login, so updates are thread safe.
public AsyncCheckData(ICheckConfig config) {
super(config);
}
/** The permissions that are actually cached. */
protected final Map<String, Boolean> cachedPermissions = Collections.synchronizedMap(new HashMap<String, Boolean>());
@Override
public boolean hasCachedPermissionEntry(final String permission) {
return cachedPermissions.containsKey(permission);
}
@Override
public boolean hasCachedPermission(final String permission) {
final Boolean has = cachedPermissions.get(permission);
return (has == null) ? false : has.booleanValue();
}
@Override
public void setCachedPermission(final String permission, final boolean has){
cachedPermissions.put(permission, has);
}
@Override
public boolean hasCachedPermission(final String permission) {
final Boolean has = cachedPermissions.get(permission);
return (has == null) ? false : has.booleanValue();
}
@Override
public void setCachedPermission(final String permission, final boolean has){
cachedPermissions.put(permission, has);
}
}

View File

@ -11,24 +11,37 @@ import fr.neatmonster.nocheatplus.components.IData;
* @author asofold
*/
public interface ICheckData extends IData{
/**
* Check if an entry for the given permission exists.
* @param permission
* @return
*/
public boolean hasCachedPermissionEntry(String permission);
/**
* Check if the user has the permission. If no entry is present, a false result is assumed an after failure check is made and the cache must be registered for updating.
* @param permission
* @return
*/
public boolean hasCachedPermission(String permission);
/**
* Set a cached permission.
* @param permission
* @param value
*/
public void setCachedPermission(String permission, boolean value);
/**
* Set if to trace/debug this player for the associated checks.
* @param debug
*/
public void setDebug(boolean debug);
/**
* Test if to trace/debug this player for the associated checks.
* @return
*/
public boolean getDebug();
/**
* Check if an entry for the given permission exists.
* @param permission
* @return
*/
public boolean hasCachedPermissionEntry(String permission);
/**
* Check if the user has the permission. If no entry is present, a false result is assumed an after failure check is made and the cache must be registered for updating.
* @param permission
* @return
*/
public boolean hasCachedPermission(String permission);
/**
* Set a cached permission.
* @param permission
* @param value
*/
public void setCachedPermission(String permission, boolean value);
}

View File

@ -58,7 +58,6 @@ public class BlockBreakConfig extends ACheckConfig {
public final boolean fastBreakCheck;
public final boolean fastBreakStrict;
public final boolean fastBreakDebug;
public final int fastBreakBuckets;
public final long fastBreakBucketDur;
public final float fastBreakBucketFactor;
@ -105,7 +104,6 @@ public class BlockBreakConfig extends ACheckConfig {
// Fastbreak.
fastBreakCheck = data.getBoolean(ConfPaths.BLOCKBREAK_FASTBREAK_CHECK);
fastBreakStrict = data.getBoolean(ConfPaths.BLOCKBREAK_FASTBREAK_STRICT);
fastBreakDebug = data.getBoolean(ConfPaths.BLOCKBREAK_FASTBREAK_DEBUG, false);
fastBreakDelay = data.getLong(ConfPaths.BLOCKBREAK_FASTBREAK_DELAY);
fastBreakGrace = Math.max(data.getLong(ConfPaths.BLOCKBREAK_FASTBREAK_BUCKETS_CONTENTION, 2000), data.getLong(ConfPaths.BLOCKBREAK_FASTBREAK_GRACE));
fastBreakBucketDur = data.getInt(ConfPaths.BLOCKBREAK_FASTBREAK_BUCKETS_DUR, 4000);

View File

@ -19,28 +19,28 @@ import fr.neatmonster.nocheatplus.utilities.ActionFrequency;
*/
public class BlockBreakData extends ACheckData {
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return BlockBreakData.getData(player);
}
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return BlockBreakData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return BlockBreakData.removeData(playerName);
}
@Override
public ICheckData removeData(final String playerName) {
return BlockBreakData.removeData(playerName);
}
@Override
public void removeAllData() {
clear();
}
};
@Override
public void removeAllData() {
clear();
}
};
/** The map containing the data per players. */
private static final Map<String, BlockBreakData> playersMap = new HashMap<String, BlockBreakData>();
/**
/**
* Gets the data of a specified player.
*
* @param player
@ -54,59 +54,76 @@ public class BlockBreakData extends ACheckData {
}
public static ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static void clear(){
playersMap.clear();
return playersMap.remove(playerName);
}
// Violation levels.
public static void clear(){
playersMap.clear();
}
// Violation levels.
public double directionVL;
public double fastBreakVL;
public double frequencyVL;
public double noSwingVL;
public double reachVL;
public final ActionFrequency wrongBlockVL;
// Shared data.
public int clickedX = Integer.MAX_VALUE;
public int clickedY;
public int clickedZ;
public int clickedTick;
/** Tool that the block was clicked with, null for the case of air. */
public Material clickedTool = null;
// TODO: use tick here too ?
public long wasInstaBreak;
public final Timings stats;
public int clickedX = Integer.MAX_VALUE;
public int clickedY;
public int clickedZ;
public int clickedTick;
/** Tool that the block was clicked with, null for the case of air. */
public Material clickedTool = null;
// TODO: use tick here too ?
public long wasInstaBreak;
public Timings stats;
// Data of the fast break check.
public final ActionFrequency fastBreakPenalties;
public final ActionFrequency fastBreakPenalties;
public int fastBreakBuffer;
public long fastBreakBreakTime = System.currentTimeMillis() - 1000L;
/** First time interaction with a block. */
public long fastBreakfirstDamage = System.currentTimeMillis();
public final ActionFrequency frequencyBuckets;
public int frequencyShortTermCount;
public int frequencyShortTermTick;
public int frequencyShortTermCount;
public int frequencyShortTermTick;
// Data of the no swing check.
public boolean noSwingArmSwung = true;
// Data of the reach check.
public double reachDistance;
public BlockBreakData(final BlockBreakConfig cc) {
stats = cc.fastBreakDebug?(new Timings("NCP/FASTBREAK")):null;
fastBreakPenalties = new ActionFrequency(cc.fastBreakBuckets, cc.fastBreakBucketDur);
frequencyBuckets = new ActionFrequency(cc.frequencyBuckets, cc.frequencyBucketDur);
wrongBlockVL = new ActionFrequency(6, 20000);
}
super(cc);
setStats();
fastBreakPenalties = new ActionFrequency(cc.fastBreakBuckets, cc.fastBreakBucketDur);
frequencyBuckets = new ActionFrequency(cc.frequencyBuckets, cc.frequencyBucketDur);
wrongBlockVL = new ActionFrequency(6, 20000);
}
@Override
public void setDebug(boolean debug) {
super.setDebug(debug);
setStats();
}
private void setStats() {
if (getDebug()) {
if (stats == null) {
stats = new Timings("NCP/FASTBREAK");
}
} else {
stats = null;
}
}
/**
* Meant to record the first click/damage on a block (not subsequent clicking), forces internals update.
* @param block
@ -115,7 +132,7 @@ public class BlockBreakData extends ACheckData {
* @param mat
*/
public void setClickedBlock(Block block, int tick, long now, Material tool) {
fastBreakfirstDamage = now;
fastBreakfirstDamage = now;
// Also set last clicked blocks position.
clickedX = block.getX();
clickedY = block.getY();
@ -123,27 +140,27 @@ public class BlockBreakData extends ACheckData {
clickedTick = tick;
clickedTool = tool == Material.AIR ? null : tool;
}
/**
* Reset clicked block (as if not clicked anything before).
*/
public void resetClickedBlock() {
clickedX = Integer.MAX_VALUE;
clickedTick = 0;
fastBreakfirstDamage = 0;
clickedTool = null;
clickedX = Integer.MAX_VALUE;
clickedTick = 0;
fastBreakfirstDamage = 0;
clickedTool = null;
}
public boolean toolChanged(ItemStack stack) {
return toolChanged(stack == null ? null: stack.getType());
return toolChanged(stack == null ? null: stack.getType());
}
public boolean toolChanged(Material mat) {
if (mat == Material.AIR) {
return clickedTool != null;
} else {
return clickedTool != mat;
}
if (mat == Material.AIR) {
return clickedTool != null;
} else {
return clickedTool != mat;
}
}
}

View File

@ -103,7 +103,7 @@ public class FastBreak extends Check {
data.fastBreakVL *= 0.9D;
}
if ((cc.fastBreakDebug || cc.debug) && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
if ((data.debug) && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
// General stats:
if (data.stats != null) {
data.stats.addStats(data.stats.getId(blockType+ "/u", true), elapsedTime);

View File

@ -59,7 +59,7 @@ public class WrongBlock extends Check {
}
if (wrongBlock) {
if ((cc.fastBreakDebug || cc.debug) && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
if ((data.debug) && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
player.sendMessage("WrongBlock failure with dist: " + dist);
}
data.wrongBlockVL.add(now, (float) (dist + 1) / 2f);

View File

@ -18,23 +18,23 @@ import fr.neatmonster.nocheatplus.utilities.TickTask;
*/
public class BlockInteractData extends ACheckData {
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return BlockInteractData.getData(player);
}
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return BlockInteractData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return BlockInteractData.removeData(playerName);
}
@Override
public ICheckData removeData(final String playerName) {
return BlockInteractData.removeData(playerName);
}
@Override
public void removeAllData() {
clear();
}
};
@Override
public void removeAllData() {
clear();
}
};
/** The map containing the data per players. */
private static final Map<String, BlockInteractData> playersMap = new HashMap<String, BlockInteractData>();
@ -48,24 +48,24 @@ public class BlockInteractData extends ACheckData {
*/
public static BlockInteractData getData(final Player player) {
if (!playersMap.containsKey(player.getName()))
playersMap.put(player.getName(), new BlockInteractData());
playersMap.put(player.getName(), new BlockInteractData(BlockInteractConfig.getConfig(player)));
return playersMap.get(player.getName());
}
public static ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static void clear(){
playersMap.clear();
return playersMap.remove(playerName);
}
// Violation levels.
public static void clear(){
playersMap.clear();
}
// Violation levels.
public double directionVL = 0;
public double reachVL = 0;
public double speedVL = 0;
public double visibleVL = 0;
// General data
// Last block interacted with
public int lastX = Integer.MAX_VALUE;
@ -77,33 +77,37 @@ public class BlockInteractData extends ACheckData {
// Data of the reach check.
public double reachDistance;
/** Last reset time. */
public long speedTime = 0;
/** Number of interactions since last reset-time. */
public int speedCount = 0;
public BlockInteractData(final BlockInteractConfig config) {
super(config);
}
/**
* Last interacted block.
* @param block
*/
public void setLastBlock(Block block, Action action) {
lastX = block.getX();
lastY = block.getY();
lastZ = block.getZ();
lastType = block.getType();
if (lastType == Material.AIR) {
lastType = null;
}
lastTick = TickTask.getTick();
lastAction = action;
}
public void setLastBlock(Block block, Action action) {
lastX = block.getX();
lastY = block.getY();
lastZ = block.getZ();
lastType = block.getType();
if (lastType == Material.AIR) {
lastType = null;
}
lastTick = TickTask.getTick();
lastAction = action;
}
public void resetLastBlock() {
lastTick = 0;
lastAction = null;
lastX = Integer.MAX_VALUE;
lastType = null;
}
public void resetLastBlock() {
lastTick = 0;
lastAction = null;
lastX = Integer.MAX_VALUE;
lastType = null;
}
}

View File

@ -42,7 +42,7 @@ public class Speed extends Check {
data.speedVL *= 0.99;
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
player.sendMessage("Interact speed: " + data.speedCount);
}

View File

@ -91,7 +91,7 @@ public class Visible extends Check {
blockCache.cleanup();
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
// TODO: Tags
player.sendMessage("Interact visible: " + (action == Action.RIGHT_CLICK_BLOCK ? "right" : "left") + " collide=" + rayTracing.collides());
}

View File

@ -15,23 +15,23 @@ import fr.neatmonster.nocheatplus.utilities.ActionFrequency;
*/
public class BlockPlaceData extends ACheckData {
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return BlockPlaceData.getData(player);
}
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return BlockPlaceData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return BlockPlaceData.removeData(playerName);
}
@Override
public ICheckData removeData(final String playerName) {
return BlockPlaceData.removeData(playerName);
}
@Override
public void removeAllData() {
clear();
}
};
@Override
public void removeAllData() {
clear();
}
};
/** The map containing the data per players. */
private static final Map<String, BlockPlaceData> playersMap = new HashMap<String, BlockPlaceData>();
@ -45,32 +45,32 @@ public class BlockPlaceData extends ACheckData {
*/
public static BlockPlaceData getData(final Player player) {
if (!playersMap.containsKey(player.getName()))
playersMap.put(player.getName(), new BlockPlaceData());
playersMap.put(player.getName(), new BlockPlaceData(BlockPlaceConfig.getConfig(player)));
return playersMap.get(player.getName());
}
public static ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static void clear(){
playersMap.clear();
return playersMap.remove(playerName);
}
// Violation levels.
public static void clear(){
playersMap.clear();
}
// Violation levels.
public double againstVL = 0;
public double autoSignVL = 0;
public double directionVL = 0;
public double fastPlaceVL = 0;
public double noSwingVL = 0;
public double reachVL = 0;
public double speedVL = 0;
public double autoSignVL = 0;
public double directionVL = 0;
public double fastPlaceVL = 0;
public double noSwingVL = 0;
public double reachVL = 0;
public double speedVL = 0;
// AutoSign.
public long autoSignPlacedTime = 0;
/** Using Material.SIGN . */
public long autoSignPlacedHash = 0;
// Data of the fast place check.
public final ActionFrequency fastPlaceBuckets = new ActionFrequency(2, 1000);
public int fastPlaceShortTermTick = 0;
@ -85,4 +85,9 @@ public class BlockPlaceData extends ACheckData {
// Data of the speed check;
public boolean speedLastRefused;
public long speedLastTime;
public BlockPlaceData(final BlockPlaceConfig config) {
super (config);
}
}

View File

@ -15,23 +15,23 @@ import fr.neatmonster.nocheatplus.utilities.ActionFrequency;
*/
public class ChatData extends AsyncCheckData {
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return ChatData.getData(player);
}
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return ChatData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return ChatData.removeData(playerName);
}
@Override
public ICheckData removeData(final String playerName) {
return ChatData.removeData(playerName);
}
@Override
public void removeAllData() {
clear();
}
};
@Override
public void removeAllData() {
clear();
}
};
/** The map containing the data per players. */
private static final Map<String, ChatData> playersMap = new HashMap<String, ChatData>();
@ -45,50 +45,54 @@ public class ChatData extends AsyncCheckData {
*/
public static synchronized ChatData getData(final Player player) {
if (!playersMap.containsKey(player.getName()))
playersMap.put(player.getName(), new ChatData());
playersMap.put(player.getName(), new ChatData(ChatConfig.getConfig(player)));
return playersMap.get(player.getName());
}
public static synchronized ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static synchronized void clear(){
playersMap.clear();
return playersMap.remove(playerName);
}
// Violation levels.
public static synchronized void clear(){
playersMap.clear();
}
// Violation levels.
public double captchaVL;
public double colorVL;
public double commandsVL;
public double textVL;
public double relogVL;
// Captcha data.
public int captchTries;
public String captchaGenerated;
public boolean captchaStarted;
/// Commands data.
public final ActionFrequency commandsWeights = new ActionFrequency(5, 1000);
public long commandsShortTermTick;
public double commandsShortTermWeight;
// Data of the text check.
public final ActionFrequency chatFrequency = new ActionFrequency(10, 3000);
public final ActionFrequency chatShortTermFrequency = new ActionFrequency(6, 500);
// Data of the no pwnage check.
public String chatLastMessage;
public long chatLastTime;
public long chatWarningTime;
public int relogWarnings;
public long relogWarningTime;
public ChatData(final ChatConfig config) {
super(config);
}
/**
* Clear the data of the no pwnage check.
*/

View File

@ -115,7 +115,7 @@ public class Text extends Check implements INotifyReload {
boolean cancel = false;
boolean debug = cc.textDebug || cc.debug;
boolean debug = data.debug;
final List<String> debugParts;
if (debug) {

View File

@ -4,7 +4,6 @@ import org.bukkit.entity.Player;
import fr.neatmonster.nocheatplus.checks.Check;
import fr.neatmonster.nocheatplus.checks.CheckType;
import fr.neatmonster.nocheatplus.compat.AlmostBoolean;
public class BedLeave extends Check {

View File

@ -8,83 +8,81 @@ import org.bukkit.entity.Player;
import fr.neatmonster.nocheatplus.checks.access.ACheckData;
import fr.neatmonster.nocheatplus.checks.access.CheckDataFactory;
import fr.neatmonster.nocheatplus.checks.access.ICheckData;
import fr.neatmonster.nocheatplus.compat.AlmostBoolean;
import fr.neatmonster.nocheatplus.utilities.ActionFrequency;
import fr.neatmonster.nocheatplus.utilities.PenaltyTime;
public class CombinedData extends ACheckData {
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return CombinedData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return CombinedData.removeData(playerName);
}
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return CombinedData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return CombinedData.removeData(playerName);
}
@Override
public void removeAllData() {
clear();
}
};
@Override
public void removeAllData() {
clear();
}
};
private static final Map<String, CombinedData> playersMap = new HashMap<String, CombinedData>();
public static CombinedData getData(final Player player) {
final String playerName = player.getName();
CombinedData data = playersMap.get(playerName);
if (data == null){
data = new CombinedData(player);
playersMap.put(playerName, data);
}
return data;
}
public static ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static CombinedData getData(final Player player) {
final String playerName = player.getName();
CombinedData data = playersMap.get(playerName);
if (data == null){
data = new CombinedData(CombinedConfig.getConfig(player));
playersMap.put(playerName, data);
}
return data;
}
public static ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static void clear(){
playersMap.clear();
playersMap.clear();
}
// VLs
public double bedLeaveVL = 0;
public double improbableVL = 0;
public double munchHausenVL = 0;
// Invulnerable management:
public double bedLeaveVL = 0;
public double improbableVL = 0;
public double munchHausenVL = 0;
// Invulnerable management:
/** This is the tick from which on the player is vulnerable again. */
public int invulnerableTick = Integer.MIN_VALUE;
// Yawrate check.
public float lastYaw;
public long lastYawTime;
public float sumYaw;
public final ActionFrequency yawFreq = new ActionFrequency(3, 333);
public float lastYaw;
public long lastYawTime;
public float sumYaw;
public final ActionFrequency yawFreq = new ActionFrequency(3, 333);
// General penalty time. Used for fighting mainly, but not only close combat (!), set by yawrate check.
public final PenaltyTime timeFreeze = new PenaltyTime();
// Bedleave check
public boolean wasInBed = false;
// Improbable check
public final ActionFrequency improbableCount = new ActionFrequency(20, 3000);
// General penalty time. Used for fighting mainly, but not only close combat (!), set by yawrate check.
public final PenaltyTime timeFreeze = new PenaltyTime();
// General data
public String lastWorld = "";
public long lastJoinTime;
public long lastLogoutTime;
public long lastMoveTime;
public CombinedData(final Player player){
// final CombinedConfig cc = CombinedConfig.getConfig(player);
// TODO: Get some things from the config.
}
// Bedleave check
public boolean wasInBed = false;
// Improbable check
public final ActionFrequency improbableCount = new ActionFrequency(20, 3000);
// General data
public String lastWorld = "";
public long lastJoinTime;
public long lastLogoutTime;
public long lastMoveTime;
public CombinedData(final CombinedConfig config){
super(config);
}
}

View File

@ -43,7 +43,7 @@ public class Critical extends Check {
final double mcFallDistance = (double) player.getFallDistance();
final MovingConfig mCc = MovingConfig.getConfig(player);
// TODO: All debugging to the trace (later allow hooking your own trace).
if (mcFallDistance > 0.0 && cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
if (mcFallDistance > 0.0 && data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
final MovingData mData = MovingData.getData(player);
if (MovingListener.shouldCheckSurvivalFly(player, mData, mCc) && CheckType.MOVING_NOFALL.isEnabled(player)) {

View File

@ -46,7 +46,7 @@ public class FastHeal extends Check {
}
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
player.sendMessage("Regain health(SATIATED): " + (time - data.fastHealRefTime) + " ms "+ "(buffer=" + data.fastHealBuffer + ")" +" , cancel=" + cancel);
}

View File

@ -192,10 +192,11 @@ public class FightData extends ACheckData {
public int lastExplosionEntityId = Integer.MAX_VALUE;
public FightData(final FightConfig cc){
speedBuckets = new ActionFrequency(cc.speedBuckets, cc.speedBucketDur);
public FightData(final FightConfig config){
super(config);
speedBuckets = new ActionFrequency(config.speedBuckets, config.speedBucketDur);
// Start with full fast-heal buffer.
fastHealBuffer = cc.fastHealBuffer;
fastHealBuffer = config.fastHealBuffer;
}
public void onWorldChange() {

View File

@ -158,7 +158,7 @@ public class FightListener extends CheckListener implements JoinLeaveListener{
// damagedPlayer.getLocation(useLoc2);
// }
// Log.
if (cc.debug && damagedPlayer.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && damagedPlayer.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
damagedPlayer.sendMessage("Attacked by " + player.getName() + ": inv=" + mcAccess.getInvulnerableTicks(damagedPlayer) + " ndt=" + damagedPlayer.getNoDamageTicks());
}
// Check for self hit exploits (mind that projectiles are excluded from this.)
@ -266,7 +266,7 @@ public class FightListener extends CheckListener implements JoinLeaveListener{
}
// Angle check.
if (angle.check(player, worldChanged, data, cc)) {
if (!cancelled && cc.debug) {
if (!cancelled && data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " fight.angle cancel without yawrate cancel.");
}
cancelled = true;
@ -298,7 +298,7 @@ public class FightListener extends CheckListener implements JoinLeaveListener{
// Judge as "lost sprint" problem.
// TODO: What would mData.lostSprintCount > 0 mean here?
mData.lostSprintCount = 7;
if ((cc.debug || mc.debug) && BuildParameters.debugLevel > 0){
if ((data.debug || mc.debug) && BuildParameters.debugLevel > 0){
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " (lostsprint) hDist to last from: " + hDist + " | targetdist=" + TrigUtil.distance(loc.getX(), loc.getZ(), damagedLoc.getX(), damagedLoc.getZ()) + " | sprinting=" + player.isSprinting() + " | food=" + player.getFoodLevel() +" | hbuf=" + mData.sfHorizontalBuffer);
}
}
@ -310,7 +310,7 @@ public class FightListener extends CheckListener implements JoinLeaveListener{
// (Cancel after sprinting hacks, because of potential fp).
if (!cancelled && data.attackPenalty.isPenalty(now)) {
cancelled = true;
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " ~ attack penalty.");
}
}

View File

@ -128,7 +128,7 @@ public class Reach extends Check {
data.reachMod = Math.min(1.0, data.reachMod + DYNAMIC_STEP);
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
player.sendMessage("NC+: Attack/reach " + damaged.getType()+ " height="+ StringUtil.fdec3.format(height) + " dist=" + StringUtil.fdec3.format(lenpRel) +" @" + StringUtil.fdec3.format(reachMod));
}
@ -263,7 +263,7 @@ public class Reach extends Check {
data.reachMod = Math.min(1.0, data.reachMod + DYNAMIC_STEP);
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
player.sendMessage("NC+: Attack/reach " + damaged.getType()+ " height="+ StringUtil.fdec3.format(context.damagedHeight) + " dist=" + StringUtil.fdec3.format(lenpRel) +" @" + StringUtil.fdec3.format(data.reachMod));
}

View File

@ -131,7 +131,7 @@ public class FastClick extends Check {
cancel = executeActions(vd);
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)){
player.sendMessage("FastClick: " + data.fastClickFreq.bucketScore(0) + " | " + data.fastClickFreq.score(1f) + " | cursor=" + cursor + " | clicked=" + clicked);
}

View File

@ -78,7 +78,7 @@ public class InstantBow extends Check {
}
}
if (cc.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
if (data.debug && player.hasPermission(Permissions.ADMINISTRATION_DEBUG)) {
player.sendMessage(ChatColor.YELLOW + "NCP: " + ChatColor.GRAY + "Bow shot - force: " + force +", " + (cc.instantBowStrict || pullDuration < 2 * expectedPullDuration ? ("pull time: " + pullDuration) : "") + "(" + expectedPullDuration +")");
}

View File

@ -16,23 +16,23 @@ import fr.neatmonster.nocheatplus.utilities.ActionFrequency;
*/
public class InventoryData extends ACheckData {
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return InventoryData.getData(player);
}
/** The factory creating data. */
public static final CheckDataFactory factory = new CheckDataFactory() {
@Override
public final ICheckData getData(final Player player) {
return InventoryData.getData(player);
}
@Override
public ICheckData removeData(final String playerName) {
return InventoryData.removeData(playerName);
}
@Override
public ICheckData removeData(final String playerName) {
return InventoryData.removeData(playerName);
}
@Override
public void removeAllData() {
clear();
}
};
@Override
public void removeAllData() {
clear();
}
};
/** The map containing the data per players. */
private static final Map<String, InventoryData> playersMap = new HashMap<String, InventoryData>();
@ -46,24 +46,24 @@ public class InventoryData extends ACheckData {
*/
public static InventoryData getData(final Player player) {
if (!playersMap.containsKey(player.getName()))
playersMap.put(player.getName(), new InventoryData());
playersMap.put(player.getName(), new InventoryData(InventoryConfig.getConfig(player)));
return playersMap.get(player.getName());
}
public static ICheckData removeData(final String playerName) {
return playersMap.remove(playerName);
}
public static void clear(){
playersMap.clear();
return playersMap.remove(playerName);
}
// Violation levels.
public static void clear(){
playersMap.clear();
}
// Violation levels.
public double dropVL;
public double fastClickVL;
public double instantBowVL;
public double instantEatVL;
// General.
public long lastClickTime = 0;
@ -72,14 +72,14 @@ public class InventoryData extends ACheckData {
public long dropLastTime;
// Data of the fast click check.
// public boolean fastClickLastCancelled;
// public boolean fastClickLastCancelled;
public final ActionFrequency fastClickFreq = new ActionFrequency(5, 200L);
public Material fastClickLastCursor = null;
public Material fastClickLastClicked = null;
public int fastClickLastCursorAmount = 0;
public Material fastClickLastCursor = null;
public Material fastClickLastClicked = null;
public int fastClickLastCursorAmount = 0;
// Data of the instant bow check.
/** Last time right click interact on bow. A value of 0 means 'invalid'.*/
/** Last time right click interact on bow. A value of 0 means 'invalid'.*/
public long instantBowInteract = 0;
public long instantBowShoot;
@ -87,4 +87,8 @@ public class InventoryData extends ACheckData {
public Material instantEatFood;
public long instantEatInteract;
public InventoryData(final InventoryConfig config) {
super(config);
}
}

View File

@ -77,7 +77,7 @@ public class MorePackets extends Check {
// Violation handling.
final ViolationData vd = new ViolationData(this, player, data.morePacketsVL, violation, cc.morePacketsActions);
if (cc.debug || vd.needsParameters()) {
if (data.debug || vd.needsParameters()) {
vd.setParameter(ParameterName.PACKETS, Integer.toString(new Double(violation).intValue()));
vd.setParameter(ParameterName.TAGS, StringUtil.join(tags, "+"));
}

View File

@ -75,7 +75,7 @@ public class MorePacketsVehicle extends Check {
// Execute whatever actions are associated with this check and the violation level and find out if we should
// cancel the event.
final ViolationData vd = new ViolationData(this, player, data.morePacketsVehicleVL, -data.morePacketsVehicleBuffer, cc.morePacketsVehicleActions);
if (cc.debug || vd.needsParameters()) {
if (data.debug || vd.needsParameters()) {
vd.setParameter(ParameterName.PACKETS, Integer.toString(-data.morePacketsVehicleBuffer));
}
if (executeActions(vd)){

View File

@ -20,13 +20,13 @@ import fr.neatmonster.nocheatplus.permissions.Permissions;
*/
public class MovingConfig extends ACheckConfig {
/** The factory creating configurations. */
public static final CheckConfigFactory factory = new CheckConfigFactory() {
@Override
public final ICheckConfig getConfig(final Player player) {
return MovingConfig.getConfig(player);
}
};
/** The factory creating configurations. */
public static final CheckConfigFactory factory = new CheckConfigFactory() {
@Override
public final ICheckConfig getConfig(final Player player) {
return MovingConfig.getConfig(player);
}
};
/** The map containing the configurations per world. */
private static final Map<String, MovingConfig> worldsMap = new HashMap<String, MovingConfig>();
@ -49,26 +49,26 @@ public class MovingConfig extends ACheckConfig {
public static MovingConfig getConfig(final Player player) {
return getConfig(player.getWorld().getName());
}
/**
* Get a per-world config.
* @param worldName Exact case world name.
* @return
*/
public static MovingConfig getConfig(final String worldName) {
final MovingConfig cc = worldsMap.get(worldName);
final MovingConfig cc = worldsMap.get(worldName);
if (cc != null){
return cc;
return cc;
}
final MovingConfig ccNew = new MovingConfig(ConfigManager.getConfigFile(worldName));
worldsMap.put(worldName, ccNew);
return ccNew;
}
public final boolean ignoreCreative;
public final boolean ignoreAllowFlight;
public final boolean ignoreCreative;
public final boolean ignoreAllowFlight;
public final boolean creativeFlyCheck;
public final int creativeFlyHorizontalSpeed;
public final int creativeFlyMaxHeight;
@ -80,6 +80,7 @@ public class MovingConfig extends ACheckConfig {
public final float morePacketsEPSIdeal;
/** The maximum number of packets per second that we accept. */
public final float morePacketsEPSMax;
public final int morePacketsEPSBuckets;
public final float morePacketsBurstPackets;
public final double morePacketsBurstDirect;
public final double morePacketsBurstEPM;
@ -92,20 +93,20 @@ public class MovingConfig extends ACheckConfig {
/** Deal damage instead of Minecraft, whenever a player is judged to be on ground. */
public final boolean noFallDealDamage;
/** Reset data on violation, i.e. a player taking fall damage without being on ground. */
public final boolean noFallViolationReset;
/** Reset data on tp. */
public final boolean noFallTpReset;
/** Reset if in vehicle. */
public final boolean noFallVehicleReset;
public final boolean noFallViolationReset;
/** Reset data on tp. */
public final boolean noFallTpReset;
/** Reset if in vehicle. */
public final boolean noFallVehicleReset;
/** Reset fd to 0 if on ground (dealdamage only). */
public final boolean noFallAntiCriticals;
public final boolean noFallAntiCriticals;
public final ActionList noFallActions;
public final boolean passableCheck;
public final boolean passableRayTracingCheck;
public final boolean passableRayTracingBlockChangeOnly;
// TODO: passableAccuracy: also use if not using ray-tracing
public final ActionList passableActions;
public final boolean passableCheck;
public final boolean passableRayTracingCheck;
public final boolean passableRayTracingBlockChangeOnly;
// TODO: passableAccuracy: also use if not using ray-tracing
public final ActionList passableActions;
public final boolean survivalFlyCheck;
public final int survivalFlyBlockingSpeed;
@ -120,39 +121,39 @@ public class MovingConfig extends ACheckConfig {
public final boolean sfFallDamage;
public final long survivalFlyVLFreeze;
public final ActionList survivalFlyActions;
public final boolean sfHoverCheck;
public final int sfHoverTicks;
public final int sfHoverLoginTicks;
public final boolean sfHoverFallDamage;
public final double sfHoverViolation;
public final boolean sfHoverCheck;
public final int sfHoverTicks;
public final int sfHoverLoginTicks;
public final boolean sfHoverFallDamage;
public final double sfHoverViolation;
// Special tolerance values:
/** This is not strictly ticks, but packets, for now.*/
public final int velocityGraceTicks;
public final int velocityActivationCounter;
public final int velocityActivationTicks;
public final boolean velocityStrictInvalidation;
/** This is not strictly ticks, but packets, for now.*/
public final int velocityGraceTicks;
public final int velocityActivationCounter;
public final int velocityActivationTicks;
public final boolean velocityStrictInvalidation;
public final double noFallyOnGround;
public final double yOnGround;
public final double yStep;
// General things.
public final boolean tempKickIllegal;
public final boolean loadChunksOnJoin;
public final long sprintingGrace;
public final boolean assumeSprint;
public final int speedGrace;
public final boolean enforceLocation;
// Vehicles
public final boolean vehicleEnforceLocation;
public final boolean vehiclePreventDestroyOwn;
// Trace
public final int traceSize;
public final double traceMergeDist;
public final double yStep;
// General things.
public final boolean tempKickIllegal;
public final boolean loadChunksOnJoin;
public final long sprintingGrace;
public final boolean assumeSprint;
public final int speedGrace;
public final boolean enforceLocation;
// Vehicles
public final boolean vehicleEnforceLocation;
public final boolean vehiclePreventDestroyOwn;
// Trace
public final int traceSize;
public final double traceMergeDist;
/**
* Instantiates a new moving configuration.
@ -162,10 +163,10 @@ public class MovingConfig extends ACheckConfig {
*/
public MovingConfig(final ConfigFile config) {
super(config, ConfPaths.MOVING);
ignoreCreative = config.getBoolean(ConfPaths.MOVING_CREATIVEFLY_IGNORECREATIVE);
ignoreAllowFlight = config.getBoolean(ConfPaths.MOVING_CREATIVEFLY_IGNOREALLOWFLIGHT);
ignoreCreative = config.getBoolean(ConfPaths.MOVING_CREATIVEFLY_IGNORECREATIVE);
ignoreAllowFlight = config.getBoolean(ConfPaths.MOVING_CREATIVEFLY_IGNOREALLOWFLIGHT);
creativeFlyCheck = config.getBoolean(ConfPaths.MOVING_CREATIVEFLY_CHECK);
creativeFlyHorizontalSpeed = config.getInt(ConfPaths.MOVING_CREATIVEFLY_HORIZONTALSPEED);
creativeFlyMaxHeight = config.getInt(ConfPaths.MOVING_CREATIVEFLY_MAXHEIGHT);
@ -175,6 +176,7 @@ public class MovingConfig extends ACheckConfig {
morePacketsCheck = config.getBoolean(ConfPaths.MOVING_MOREPACKETS_CHECK);
morePacketsEPSIdeal = config.getInt(ConfPaths.MOVING_MOREPACKETS_EPSIDEAL);
morePacketsEPSMax = Math.max(morePacketsEPSIdeal, config.getInt(ConfPaths.MOVING_MOREPACKETS_EPSMAX));
morePacketsEPSBuckets = 2 * Math.max(1, Math.min(60, config.getInt(ConfPaths.MOVING_MOREPACKETS_SECONDS)));
morePacketsBurstPackets = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_EPM);
morePacketsBurstDirect = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_DIRECT);
morePacketsBurstEPM = config.getInt(ConfPaths.MOVING_MOREPACKETS_BURST_EPM);
@ -191,10 +193,10 @@ public class MovingConfig extends ACheckConfig {
noFallVehicleReset = config.getBoolean(ConfPaths.MOVING_NOFALL_RESETONVEHICLE);
noFallAntiCriticals = config.getBoolean(ConfPaths.MOVING_NOFALL_ANTICRITICALS);
noFallActions = config.getOptimizedActionList(ConfPaths.MOVING_NOFALL_ACTIONS, Permissions.MOVING_NOFALL);
passableCheck = config.getBoolean(ConfPaths.MOVING_PASSABLE_CHECK);
passableRayTracingCheck = config.getBoolean(ConfPaths.MOVING_PASSABLE_RAYTRACING_CHECK);
passableRayTracingBlockChangeOnly = config.getBoolean(ConfPaths.MOVING_PASSABLE_RAYTRACING_BLOCKCHANGEONLY);
passableRayTracingCheck = config.getBoolean(ConfPaths.MOVING_PASSABLE_RAYTRACING_CHECK);
passableRayTracingBlockChangeOnly = config.getBoolean(ConfPaths.MOVING_PASSABLE_RAYTRACING_BLOCKCHANGEONLY);
passableActions = config.getOptimizedActionList(ConfPaths.MOVING_PASSABLE_ACTIONS, Permissions.MOVING_PASSABLE);
survivalFlyCheck = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_CHECK);
@ -211,13 +213,13 @@ public class MovingConfig extends ACheckConfig {
sfFallDamage = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_FALLDAMAGE);
survivalFlyVLFreeze = config.getLong(ConfPaths.MOVING_SURVIVALFLY_VLFREEZE, 2000L);
survivalFlyActions = config.getOptimizedActionList(ConfPaths.MOVING_SURVIVALFLY_ACTIONS, Permissions.MOVING_SURVIVALFLY);
sfHoverCheck = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_HOVER_CHECK);
sfHoverTicks = config.getInt(ConfPaths.MOVING_SURVIVALFLY_HOVER_TICKS);
sfHoverLoginTicks = Math.max(0, config.getInt(ConfPaths.MOVING_SURVIVALFLY_HOVER_LOGINTICKS));
sfHoverFallDamage = config.getBoolean(ConfPaths.MOVING_SURVIVALFLY_HOVER_FALLDAMAGE);
sfHoverViolation = config.getDouble(ConfPaths.MOVING_SURVIVALFLY_HOVER_SFVIOLATION);
velocityGraceTicks = config.getInt(ConfPaths.MOVING_VELOCITY_GRACETICKS);
velocityActivationCounter = config.getInt(ConfPaths.MOVING_VELOCITY_ACTIVATIONCOUNTER);
velocityActivationTicks = config.getInt(ConfPaths.MOVING_VELOCITY_ACTIVATIONTICKS);
@ -226,22 +228,22 @@ public class MovingConfig extends ACheckConfig {
noFallyOnGround = config.getDouble(ConfPaths.MOVING_NOFALL_YONGROUND, 0.001, 2.0, yOnGround);
// ystep is set to 0.45 by default, for stairs / steps.
yStep = config.getDouble(ConfPaths.MOVING_SURVIVALFLY_YSTEP, 0.001, 0.45, 0.1);
tempKickIllegal = config.getBoolean(ConfPaths.MOVING_TEMPKICKILLEGAL);
loadChunksOnJoin = config.getBoolean(ConfPaths.MOVING_LOADCHUNKS_JOIN);
sprintingGrace = Math.max(0L, (long) (config.getDouble(ConfPaths.MOVING_SPRINTINGGRACE) * 1000.0)); // Config: seconds.
assumeSprint = config.getBoolean(ConfPaths.MOVING_ASSUMESPRINT);
speedGrace = Math.max(0, (int) Math.round(config.getDouble(ConfPaths.MOVING_SPEEDGRACE) * 20.0)); // Config: seconds
enforceLocation = config.getBoolean(ConfPaths.MOVING_ENFORCELOCATION);
vehicleEnforceLocation = config.getBoolean(ConfPaths.MOVING_VEHICLES_ENFORCELOCATION);
vehiclePreventDestroyOwn = config.getBoolean(ConfPaths.MOVING_VEHICLES_PREVENTDESTROYOWN);
traceSize = config.getInt(ConfPaths.MOVING_TRACE_SIZE);
traceMergeDist = config.getDouble(ConfPaths.MOVING_TRACE_MERGEDIST);
}
/* (non-Javadoc)
@ -255,7 +257,7 @@ public class MovingConfig extends ACheckConfig {
case MOVING_SURVIVALFLY:
return survivalFlyCheck;
case MOVING_PASSABLE:
return passableCheck;
return passableCheck;
case MOVING_MOREPACKETS:
return morePacketsCheck;
case MOVING_MOREPACKETSVEHICLE:

View File

@ -10,9 +10,6 @@ import org.bukkit.entity.Player;
import fr.neatmonster.nocheatplus.checks.access.ACheckData;
import fr.neatmonster.nocheatplus.checks.access.CheckDataFactory;
import fr.neatmonster.nocheatplus.checks.access.ICheckData;
import fr.neatmonster.nocheatplus.config.ConfPaths;
import fr.neatmonster.nocheatplus.config.ConfigFile;
import fr.neatmonster.nocheatplus.config.ConfigManager;
import fr.neatmonster.nocheatplus.utilities.ActionAccumulator;
import fr.neatmonster.nocheatplus.utilities.ActionFrequency;
import fr.neatmonster.nocheatplus.utilities.PlayerLocation;
@ -61,7 +58,7 @@ public class MovingData extends ACheckData {
// Note that the trace might be null after just calling this.
MovingData data = playersMap.get(player.getName());
if (data == null) {
data = new MovingData(ConfigManager.getConfigFile(player.getWorld().getName()));
data = new MovingData(MovingConfig.getConfig(player));
playersMap.put(player.getName(), data);
}
return data;
@ -209,10 +206,9 @@ public class MovingData extends ACheckData {
public boolean wasInVehicle = false;
public MoveConsistency vehicleConsistency = MoveConsistency.INCONSISTENT;
public MovingData(final ConfigFile config) {
// TODO: Parameters from cc.
final int nob = 2 * Math.max(1, Math.min(60, config.getInt(ConfPaths.MOVING_MOREPACKETS_SECONDS)));
morePacketsFreq = new ActionFrequency(nob, 500);
public MovingData(final MovingConfig config) {
super(config);
morePacketsFreq = new ActionFrequency(config.morePacketsEPSBuckets, 500);
morePacketsBurstFreq = new ActionFrequency(12, 5000);
}

View File

@ -447,7 +447,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
data.noFallAssumeGround = false;
data.resetTeleported();
// Debug.
if (cc.debug) {
if (data.debug) {
DebugUtil.outputMoveDebug(player, moveInfo.from, moveInfo.to, Math.max(cc.noFallyOnGround, cc.yOnGround), mcAccess);
}
// Check for illegal move and bounding box etc.
@ -694,7 +694,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
event.setTo(newTo);
// Debug.
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " set back to: " + newTo.getWorld() + StringUtil.fdec3.format(newTo.getX()) + ", " + StringUtil.fdec3.format(newTo.getY()) + ", " + StringUtil.fdec3.format(newTo.getZ()));
}
}
@ -747,7 +747,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
* @param cc
*/
private void onVehicleLeaveMiss(final Player player, final MovingData data, final MovingConfig cc) {
if (cc.debug) {
if (data.debug) {
StaticLog.logWarning("[NoCheatPlus] VehicleExitEvent missing for: " + player.getName());
}
onPlayerVehicleLeave(player, null);
@ -981,7 +981,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
data.sfHoverTicks = -1; // Important against concurrent modification exception.
}
if (cc.debug && BuildParameters.debugLevel > 0) {
if (data.debug && BuildParameters.debugLevel > 0) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " TP" + (smallRange ? " (small-range)" : "") + (cancel ? " (cancelled)" : "") + ": " + to);
}
}
@ -989,7 +989,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
// Cancelled, not a set back, ignore it, basically.
// Better reset teleported (compatibility). Might have drawbacks.
data.resetTeleported();
if (cc.debug && BuildParameters.debugLevel > 0) {
if (data.debug && BuildParameters.debugLevel > 0) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " TP (cancelled): " + to);
}
return;
@ -1028,7 +1028,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
final Vector velocity = event.getVelocity();
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, event.getPlayer().getName() + " new velocity: " + velocity);
}
@ -1128,7 +1128,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
data.clearNoFallData();
}
if (cc.debug) {
if (data.debug) {
// Log move.
DebugUtil.outputDebugVehicleMove(player, vehicle, from, to, fake);
}
@ -1149,7 +1149,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
// TODO: Might log debug if skipping.
// TODO: Problem: scheduling allows a lot of things to happen until the task is run. Thus control about some things might be necessary.
// TODO: Reset on world changes or not?
data.morePacketsVehicleTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new VehicleSetBack(vehicle, player, newTo, cc.debug));
data.morePacketsVehicleTaskId = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new VehicleSetBack(vehicle, player, newTo, data.debug));
}
useLoc.setWorld(null);
}
@ -1213,7 +1213,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
final float fallDistance = player.getFallDistance();
final double damage = BridgeHealth.getDamage(event);
final float yDiff = (float) (data.noFallMaxY - loc.getY());
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " damage(FALL): " + damage + " / dist=" + player.getFallDistance() + " nf=" + data.noFallFallDistance + " yDiff=" + yDiff);
}
// Fall-back check.
@ -1221,7 +1221,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
if (maxD > damage) {
// TODO: respect dealDamage ?
BridgeHealth.setDamage(event, maxD);
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " Adjust fall damage to: " + maxD);
}
}
@ -1286,7 +1286,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
// Check loaded chunks.
if (cc.loadChunksOnJoin) {
final int loaded = BlockCache.ensureChunksLoaded(loc.getWorld(), loc.getX(), loc.getZ(), 3.0);
if (loaded > 0 && cc.debug && BuildParameters.debugLevel > 0) {
if (loaded > 0 && data.debug && BuildParameters.debugLevel > 0) {
// DEBUG
StaticLog.logInfo("[NoCheatPlus] Player join: Loaded " + loaded + " chunk" + (loaded == 1 ? "" : "s") + " for the world " + loc.getWorld().getName() + " for player: " + player.getName());
}
@ -1354,11 +1354,10 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
@Override
public void playerLeaves(final Player player) {
final MovingConfig cc = MovingConfig.getConfig(player);
final MovingData data = MovingData.getData(player);
final Location loc = player.getLocation(useLoc);
// Debug logout.
if (cc.debug) {
if (data.debug) {
StaticLog.logInfo("[NoCheatPlus] Player " + player.getName() + " leaves at location: " + loc.toString());
}
if (!player.isSleeping() && !player.isDead()) {
@ -1487,7 +1486,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
}
}
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " vehicle leave: " + vehicle.getType() + "@" + pLoc.distance(vLoc));
}
}
@ -1497,7 +1496,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
loc.setY(Location.locToBlock(loc.getY()) + 1.25);
}
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " vehicle leave: " + pLoc.toString() + (pLoc.equals(loc) ? "" : " / player at: " + pLoc.toString()));
}
data.resetPositions(loc);
@ -1642,7 +1641,7 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
final boolean res;
// TODO: Collect flags, more margin ?
final int loaded = info.from.ensureChunksLoaded();
if (loaded > 0 && cc.debug && BuildParameters.debugLevel > 0) {
if (loaded > 0 && data.debug && BuildParameters.debugLevel > 0) {
// DEBUG
StaticLog.logInfo("[NoCheatPlus] Hover check: Needed to load " + loaded + " chunk" + (loaded == 1 ? "" : "s") + " for the world " + loc.getWorld().getName() + " around " + loc.getBlockX() + "," + loc.getBlockZ() + " in order to check player: " + player.getName());
}

View File

@ -53,7 +53,7 @@ public class NoFall extends Check {
if (maxD >= 1.0){
// Damage to be dealt.
// TODO: more effects like sounds, maybe use custom event with violation added.
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " NoFall deal damage" + (reallyOnGround ? "" : "violation") + ": " + maxD);
}
// TODO: might not be necessary: if (mcPlayer.invulnerableTicks <= 0) [no damage event for resetting]
@ -173,7 +173,7 @@ public class NoFall extends Check {
else if (cc.noFallAntiCriticals && (toReset || toOnGround || (fromReset || fromOnGround || data.noFallAssumeGround) && yDiff >= 0)){
final double max = Math.max(data.noFallFallDistance, mcFallDistance);
if (max > 0.0 && max < 0.75){ // (Ensure this does not conflict with deal-damage set to false.)
if (cc.debug){
if (data.debug){
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " NoFall: Reset fall distance (anticriticals): mc=" + mcFallDistance +" / nf=" + data.noFallFallDistance);
}
if (data.noFallFallDistance > 0){
@ -185,7 +185,7 @@ public class NoFall extends Check {
}
}
if (cc.debug){
if (data.debug){
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " NoFall: mc=" + mcFallDistance +" / nf=" + data.noFallFallDistance + (oldNFDist < data.noFallFallDistance ? " (+" + (data.noFallFallDistance - oldNFDist) + ")" : "") + " | ymax=" + data.noFallMaxY);
}

View File

@ -57,7 +57,7 @@ public class Passable extends Check {
toPassable = false;
tags = "raytracing_2x_";
}
else if (cc.debug) {
else if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " passable: allow moving out of a block.");
}
}
@ -148,10 +148,10 @@ public class Passable extends Check {
if (BlockProperties.isPassable(from.getBlockCache(), ref) || loc == null || TrigUtil.distance(from, loc) > 0.13) {
// if (BlockProperties.isPassableExact(from.getBlockCache(), ref)) {
loc = ref;
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " Using set-back location for passable.");
}
} else if (cc.debug) {
} else if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " Ignoring set-back for passable.");
}
}
@ -161,7 +161,7 @@ public class Passable extends Check {
// Return the reset position.
data.passableVL += 1d;
final ViolationData vd = new ViolationData(this, player, data.passableVL, 1, cc.passableActions);
if (cc.debug || vd.needsParameters()) {
if (data.debug || vd.needsParameters()) {
vd.setParameter(ParameterName.LOCATION_FROM, String.format(Locale.US, "%.2f, %.2f, %.2f", from.getX(), from.getY(), from.getZ()));
vd.setParameter(ParameterName.LOCATION_TO, String.format(Locale.US, "%.2f, %.2f, %.2f", to.getX(), to.getY(), to.getZ()));
vd.setParameter(ParameterName.DISTANCE, String.format(Locale.US, "%.2f", TrigUtil.distance(from, to)));
@ -179,7 +179,7 @@ public class Passable extends Check {
newTo = LocUtil.clone(loc);
} else {
newTo = from.getLocation();
if (cc.debug) {
if (data.debug) {
NCPAPIProvider.getNoCheatPlusAPI().getLogManager().debug(Streams.TRACE_FILE, player.getName() + " Using from location for passable.");
}
}

View File

@ -261,7 +261,7 @@ public class SurvivalFly extends Check {
vDistanceAboveLimit = res[1];
if (res[0] == Double.MIN_VALUE && res[1] == Double.MIN_VALUE) {
// Silent set-back.
if (cc.debug) {
if (data.debug) {
tags.add("silentsbcobweb");
outputDebug(player, to, data, cc, hDistance, hAllowedDistance, hFreedom, yDistance, vAllowedDistance, fromOnGround, resetFrom, toOnGround, resetTo);
}
@ -357,7 +357,7 @@ public class SurvivalFly extends Check {
// TODO: on ground -> on ground improvements
// Debug output.
if (cc.debug) {
if (data.debug) {
outputDebug(player, to, data, cc, hDistance, hAllowedDistance, hFreedom, yDistance, vAllowedDistance, fromOnGround, resetFrom, toOnGround, resetTo);
}
@ -522,6 +522,7 @@ public class SurvivalFly extends Check {
// TODO: too many false positives with just checking from ?
// TODO: Sneaking and blocking applies to when in water !
hAllowedDistance = modSwim * walkSpeed * cc.survivalFlySwimmingSpeed / 100D;
// TODO: Depth strider.
} else if (!sfDirty && player.isSneaking() && reallySneaking.contains(player.getName()) && (!checkPermissions || !player.hasPermission(Permissions.MOVING_SURVIVALFLY_SNEAKING))) {
hAllowedDistance = modSneak * walkSpeed * cc.survivalFlySneakingSpeed / 100D;
}
@ -545,8 +546,10 @@ public class SurvivalFly extends Check {
}
// Short cut.
// TODO: Check if a) early return makes sense and b) do it ofr all following parts.
if (hDistance <= hAllowedDistance && !cc.debug) {
// TODO: Check if a) early return makes sense and b) do it for each of the following parts.
// TODO: Should debug really make a difference? Do early return before permission check only?
// TODO: Consider logging early vs. full.
if (hDistance <= hAllowedDistance && !data.debug) {
// Shortcut for debug disabled.
return hAllowedDistance;
}
@ -555,6 +558,8 @@ public class SurvivalFly extends Check {
if (data.sfOnIce > 0) {
hAllowedDistance *= modIce;
}
// TODO: Attributes
// Speed amplifier.
final double speedAmplifier = mcAccess.getFasterMovementAmplifier(player);

View File

@ -4,7 +4,6 @@ import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import fr.neatmonster.nocheatplus.command.AbstractCommand;

View File

@ -6,7 +6,6 @@ import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import fr.neatmonster.nocheatplus.NCPAPIProvider;
@ -15,8 +14,6 @@ import fr.neatmonster.nocheatplus.command.BaseCommand;
import fr.neatmonster.nocheatplus.command.NoCheatPlusCommand.NCPReloadEvent;
import fr.neatmonster.nocheatplus.components.INotifyReload;
import fr.neatmonster.nocheatplus.components.order.Order;
import fr.neatmonster.nocheatplus.config.ConfPaths;
import fr.neatmonster.nocheatplus.config.ConfigFile;
import fr.neatmonster.nocheatplus.config.ConfigManager;
import fr.neatmonster.nocheatplus.logging.LogManager;
import fr.neatmonster.nocheatplus.logging.Streams;

View File

@ -4,33 +4,33 @@ package fr.neatmonster.nocheatplus.config;
* Paths for the configuration options. Making everything final static prevents accidentally modifying any of these.
*/
public abstract class ConfPaths {
// Sub-paths that are used with different path prefixes potentially.
// TODO: These might better be in another class.
// TODO: These might better be in another class.
public static final String SUB_DEBUG = "debug";
public static final String SUB_IGNOREPASSABLE = "ignorepassable";
public static final String SUB_ALLOWINSTANTBREAK = "allowinstantbreak";
public static final String SUB_OVERRIDEFLAGS = "overrideflags";
public static final String SUB_ALLOWINSTANTBREAK = "allowinstantbreak";
public static final String SUB_OVERRIDEFLAGS = "overrideflags";
public static final String SUB_LAG = "lag";
// General.
public static final String SAVEBACKCONFIG = "savebackconfig";
// Configuration version.
@GlobalConfig // TODO: Per file versions should also be supported. Better with per-path comparison?
public static final String CONFIGVERSION = "configversion.";
public static final String CONFIGVERSION_NOTIFY = CONFIGVERSION + "notify";
/** Build number of the build for which the default config was first created (DefaultConfig.buildNumber), updated with first save. */
public static final String CONFIGVERSION_CREATED = CONFIGVERSION + "created";
/** Build number of the build for which the default config was first created (DefaultConfig.buildNumber), updated with each save. */
public static final String CONFIGVERSION_SAVED = CONFIGVERSION + "saved";
@GlobalConfig
// General.
public static final String SAVEBACKCONFIG = "savebackconfig";
// Configuration version.
@GlobalConfig // TODO: Per file versions should also be supported. Better with per-path comparison?
public static final String CONFIGVERSION = "configversion.";
public static final String CONFIGVERSION_NOTIFY = CONFIGVERSION + "notify";
/** Build number of the build for which the default config was first created (DefaultConfig.buildNumber), updated with first save. */
public static final String CONFIGVERSION_CREATED = CONFIGVERSION + "created";
/** Build number of the build for which the default config was first created (DefaultConfig.buildNumber), updated with each save. */
public static final String CONFIGVERSION_SAVED = CONFIGVERSION + "saved";
@GlobalConfig
private static final String LOGGING = "logging.";
public static final String LOGGING_ACTIVE = LOGGING + "active";
public static final String LOGGING_DEBUG = LOGGING + "debug";
public static final String LOGGING_MAXQUEUESIZE = LOGGING + "maxqueuesize";
private static final String LOGGING_BACKEND = LOGGING + "backend.";
private static final String LOGGING_BACKEND_CONSOLE = LOGGING_BACKEND + "console.";
public static final String LOGGING_BACKEND_CONSOLE_ACTIVE = LOGGING_BACKEND_CONSOLE + "active";
@ -45,69 +45,69 @@ public abstract class ConfPaths {
public static final String LOGGING_BACKEND_INGAMECHAT_SUBSCRIPTIONS = LOGGING_BACKEND_INGAMECHAT + "subscriptions";
public static final String LOGGING_BACKEND_INGAMECHAT_PREFIX = LOGGING_BACKEND_INGAMECHAT + "prefix";
@GlobalConfig
private static final String MISCELLANEOUS = "miscellaneous.";
//public static final String MISCELLANEOUS_CHECKFORUPDATES = MISCELLANEOUS + "checkforupdates";
//public static final String MISCELLANEOUS_UPDATETIMEOUT = MISCELLANEOUS + "updatetimeout";
@GlobalConfig
private static final String MISCELLANEOUS = "miscellaneous.";
//public static final String MISCELLANEOUS_CHECKFORUPDATES = MISCELLANEOUS + "checkforupdates";
//public static final String MISCELLANEOUS_UPDATETIMEOUT = MISCELLANEOUS + "updatetimeout";
/** TEMP: hidden flag to disable all lag adaption with one flag. */
public static final String MISCELLANEOUS_LAG = MISCELLANEOUS + "lag";
/** TEMP: hidden flag to disable all lag adaption with one flag. */
public static final String MISCELLANEOUS_LAG = MISCELLANEOUS + "lag";
// Extended data-related settings.
// Extended data-related settings.
@GlobalConfig
private static final String DATA = "data.";
// Expired data removal.
private static final String DATA_EXPIRATION = DATA + "expiration.";
public static final String DATA_EXPIRATION_ACTIVE = DATA_EXPIRATION + "active";
public static final String DATA_EXPIRATION_DURATION = DATA_EXPIRATION + "duration";
public static final String DATA_EXPIRATION_DATA = DATA_EXPIRATION + "data";
public static final String DATA_EXPIRATION_HISTORY = DATA_EXPIRATION + "history";
// Consistency checking.
private static final String DATA_CONSISTENCYCHECKS = DATA + "consistencychecks.";
public static final String DATA_CONSISTENCYCHECKS_CHECK = DATA_CONSISTENCYCHECKS + "active";
public static final String DATA_CONSISTENCYCHECKS_INTERVAL = DATA_CONSISTENCYCHECKS + "interval";
public static final String DATA_CONSISTENCYCHECKS_MAXTIME = DATA_CONSISTENCYCHECKS + "maxtime";
/**
* This might not might not be used by checks. <br>
* Used by: DataMan/Player-instances
*
*/
public static final String DATA_CONSISTENCYCHECKS_SUPPRESSWARNINGS = DATA_CONSISTENCYCHECKS + "suppresswarnings";
private static final String PROTECT = "protection.";
// Clients settings.
private static final String PROTECT_CLIENTS = PROTECT + "clients.";
@GlobalConfig
private static final String PROTECT_CLIENTS_MOTD = PROTECT_CLIENTS + "motd.";
public static final String PROTECT_CLIENTS_MOTD_ACTIVE = PROTECT_CLIENTS_MOTD + "active";
public static final String PROTECT_CLIENTS_MOTD_ALLOWALL = PROTECT_CLIENTS_MOTD + "allowall";
// Other commands settings
@GlobalConfig
private static final String PROTECT_COMMANDS = PROTECT + "commands.";
private static final String PROTECT_COMMANDS_CONSOLEONLY = PROTECT_COMMANDS + "consoleonly.";
public static final String PROTECT_COMMANDS_CONSOLEONLY_ACTIVE = PROTECT_COMMANDS_CONSOLEONLY + "active";
public static final String PROTECT_COMMANDS_CONSOLEONLY_MSG = PROTECT_COMMANDS_CONSOLEONLY + "message";
public static final String PROTECT_COMMANDS_CONSOLEONLY_CMDS = PROTECT_COMMANDS_CONSOLEONLY + "commands";
// Plugins settings.
private static final String PROTECT_PLUGINS = PROTECT + "plugins.";
@GlobalConfig
private static final String PROTECT_PLUGINS_HIDE = PROTECT_PLUGINS + "hide.";
public static final String PROTECT_PLUGINS_HIDE_ACTIVE = PROTECT_PLUGINS_HIDE + "active";
private static final String PROTECT_PLUGINS_HIDE_NOCOMMAND = PROTECT_PLUGINS_HIDE + "unknowncommand.";
public static final String PROTECT_PLUGINS_HIDE_NOCOMMAND_MSG = PROTECT_PLUGINS_HIDE_NOCOMMAND + "message";
public static final String PROTECT_PLUGINS_HIDE_NOCOMMAND_CMDS = PROTECT_PLUGINS_HIDE_NOCOMMAND + "commands";
private static final String PROTECT_PLUGINS_HIDE_NOPERMISSION = PROTECT_PLUGINS_HIDE + "nopermission.";
public static final String PROTECT_PLUGINS_HIDE_NOPERMISSION_MSG = PROTECT_PLUGINS_HIDE_NOPERMISSION + "message";
public static final String PROTECT_PLUGINS_HIDE_NOPERMISSION_CMDS = PROTECT_PLUGINS_HIDE_NOPERMISSION + "commands";
// Checks!
public static final String DATA_EXPIRATION_DURATION = DATA_EXPIRATION + "duration";
public static final String DATA_EXPIRATION_DATA = DATA_EXPIRATION + "data";
public static final String DATA_EXPIRATION_HISTORY = DATA_EXPIRATION + "history";
// Consistency checking.
private static final String DATA_CONSISTENCYCHECKS = DATA + "consistencychecks.";
public static final String DATA_CONSISTENCYCHECKS_CHECK = DATA_CONSISTENCYCHECKS + "active";
public static final String DATA_CONSISTENCYCHECKS_INTERVAL = DATA_CONSISTENCYCHECKS + "interval";
public static final String DATA_CONSISTENCYCHECKS_MAXTIME = DATA_CONSISTENCYCHECKS + "maxtime";
/**
* This might not might not be used by checks. <br>
* Used by: DataMan/Player-instances
*
*/
public static final String DATA_CONSISTENCYCHECKS_SUPPRESSWARNINGS = DATA_CONSISTENCYCHECKS + "suppresswarnings";
private static final String PROTECT = "protection.";
// Clients settings.
private static final String PROTECT_CLIENTS = PROTECT + "clients.";
@GlobalConfig
private static final String PROTECT_CLIENTS_MOTD = PROTECT_CLIENTS + "motd.";
public static final String PROTECT_CLIENTS_MOTD_ACTIVE = PROTECT_CLIENTS_MOTD + "active";
public static final String PROTECT_CLIENTS_MOTD_ALLOWALL = PROTECT_CLIENTS_MOTD + "allowall";
// Other commands settings
@GlobalConfig
private static final String PROTECT_COMMANDS = PROTECT + "commands.";
private static final String PROTECT_COMMANDS_CONSOLEONLY = PROTECT_COMMANDS + "consoleonly.";
public static final String PROTECT_COMMANDS_CONSOLEONLY_ACTIVE = PROTECT_COMMANDS_CONSOLEONLY + "active";
public static final String PROTECT_COMMANDS_CONSOLEONLY_MSG = PROTECT_COMMANDS_CONSOLEONLY + "message";
public static final String PROTECT_COMMANDS_CONSOLEONLY_CMDS = PROTECT_COMMANDS_CONSOLEONLY + "commands";
// Plugins settings.
private static final String PROTECT_PLUGINS = PROTECT + "plugins.";
@GlobalConfig
private static final String PROTECT_PLUGINS_HIDE = PROTECT_PLUGINS + "hide.";
public static final String PROTECT_PLUGINS_HIDE_ACTIVE = PROTECT_PLUGINS_HIDE + "active";
private static final String PROTECT_PLUGINS_HIDE_NOCOMMAND = PROTECT_PLUGINS_HIDE + "unknowncommand.";
public static final String PROTECT_PLUGINS_HIDE_NOCOMMAND_MSG = PROTECT_PLUGINS_HIDE_NOCOMMAND + "message";
public static final String PROTECT_PLUGINS_HIDE_NOCOMMAND_CMDS = PROTECT_PLUGINS_HIDE_NOCOMMAND + "commands";
private static final String PROTECT_PLUGINS_HIDE_NOPERMISSION = PROTECT_PLUGINS_HIDE + "nopermission.";
public static final String PROTECT_PLUGINS_HIDE_NOPERMISSION_MSG = PROTECT_PLUGINS_HIDE_NOPERMISSION + "message";
public static final String PROTECT_PLUGINS_HIDE_NOPERMISSION_CMDS = PROTECT_PLUGINS_HIDE_NOPERMISSION + "commands";
// Checks!
private static final String CHECKS = "checks.";
/** Debug flag to debug all checks (!), individual sections debug flags override this, if present. */
public static final String CHECKS_DEBUG = CHECKS + SUB_DEBUG;
public static final String CHECKS_DEBUG = CHECKS + SUB_DEBUG;
public static final String BLOCKBREAK = CHECKS + "blockbreak.";
public static final String BLOCKBREAK_DEBUG = BLOCKBREAK + "debug";
public static final String BLOCKBREAK_DEBUG = BLOCKBREAK + "debug";
private static final String BLOCKBREAK_DIRECTION = BLOCKBREAK + "direction.";
public static final String BLOCKBREAK_DIRECTION_CHECK = BLOCKBREAK_DIRECTION + "active";
@ -116,33 +116,32 @@ public abstract class ConfPaths {
private static final String BLOCKBREAK_FASTBREAK = BLOCKBREAK + "fastbreak.";
public static final String BLOCKBREAK_FASTBREAK_CHECK = BLOCKBREAK_FASTBREAK + "active";
public static final String BLOCKBREAK_FASTBREAK_STRICT = BLOCKBREAK_FASTBREAK + "strict";
public static final String BLOCKBREAK_FASTBREAK_DEBUG = BLOCKBREAK_FASTBREAK + "debug";
private static final String BLOCKBREAK_FASTBREAK_BUCKETS = BLOCKBREAK + "buckets.";
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_CONTENTION = BLOCKBREAK_FASTBREAK_BUCKETS + "contention";
@GlobalConfig
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_N = BLOCKBREAK_FASTBREAK_BUCKETS + "number";
@GlobalConfig
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_DUR = BLOCKBREAK_FASTBREAK_BUCKETS + "duration";
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_FACTOR = BLOCKBREAK_FASTBREAK_BUCKETS + "factor";
public static final String BLOCKBREAK_FASTBREAK_DELAY = BLOCKBREAK_FASTBREAK + "delay";
public static final String BLOCKBREAK_FASTBREAK_GRACE = BLOCKBREAK_FASTBREAK + "grace";
public static final String BLOCKBREAK_FASTBREAK_MOD_SURVIVAL = BLOCKBREAK_FASTBREAK + "intervalsurvival";
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_CONTENTION = BLOCKBREAK_FASTBREAK_BUCKETS + "contention";
@GlobalConfig
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_N = BLOCKBREAK_FASTBREAK_BUCKETS + "number";
@GlobalConfig
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_DUR = BLOCKBREAK_FASTBREAK_BUCKETS + "duration";
public static final String BLOCKBREAK_FASTBREAK_BUCKETS_FACTOR = BLOCKBREAK_FASTBREAK_BUCKETS + "factor";
public static final String BLOCKBREAK_FASTBREAK_DELAY = BLOCKBREAK_FASTBREAK + "delay";
public static final String BLOCKBREAK_FASTBREAK_GRACE = BLOCKBREAK_FASTBREAK + "grace";
public static final String BLOCKBREAK_FASTBREAK_MOD_SURVIVAL = BLOCKBREAK_FASTBREAK + "intervalsurvival";
public static final String BLOCKBREAK_FASTBREAK_ACTIONS = BLOCKBREAK_FASTBREAK + "actions";
private static final String BLOCKBREAK_FREQUENCY = BLOCKBREAK + "frequency.";
public static final String BLOCKBREAK_FREQUENCY_CHECK = BLOCKBREAK_FREQUENCY + "active";
public static final String BLOCKBREAK_FREQUENCY_MOD_CREATIVE = BLOCKBREAK_FREQUENCY + "intervalcreative";
public static final String BLOCKBREAK_FREQUENCY_MOD_SURVIVAL = BLOCKBREAK_FREQUENCY + "intervalsurvival";
private static final String BLOCKBREAK_FREQUENCY_BUCKETS = BLOCKBREAK_FREQUENCY + "buckets.";
@GlobalConfig
public static final String BLOCKBREAK_FREQUENCY_BUCKETS_DUR = BLOCKBREAK_FREQUENCY_BUCKETS + "duration";
public static final String BLOCKBREAK_FREQUENCY_BUCKETS_FACTOR = BLOCKBREAK_FREQUENCY_BUCKETS + "factor";
@GlobalConfig
public static final String BLOCKBREAK_FREQUENCY_BUCKETS_N = BLOCKBREAK_FREQUENCY_BUCKETS + "number";
private static final String BLOCKBREAK_FREQUENCY_SHORTTERM = BLOCKBREAK_FREQUENCY + "shortterm.";
public static final String BLOCKBREAK_FREQUENCY_SHORTTERM_LIMIT = BLOCKBREAK_FREQUENCY_SHORTTERM + "limit";
public static final String BLOCKBREAK_FREQUENCY_SHORTTERM_TICKS = BLOCKBREAK_FREQUENCY_SHORTTERM + "ticks";
public static final String BLOCKBREAK_FREQUENCY_ACTIONS = BLOCKBREAK_FREQUENCY + "actions";
private static final String BLOCKBREAK_FREQUENCY = BLOCKBREAK + "frequency.";
public static final String BLOCKBREAK_FREQUENCY_CHECK = BLOCKBREAK_FREQUENCY + "active";
public static final String BLOCKBREAK_FREQUENCY_MOD_CREATIVE = BLOCKBREAK_FREQUENCY + "intervalcreative";
public static final String BLOCKBREAK_FREQUENCY_MOD_SURVIVAL = BLOCKBREAK_FREQUENCY + "intervalsurvival";
private static final String BLOCKBREAK_FREQUENCY_BUCKETS = BLOCKBREAK_FREQUENCY + "buckets.";
@GlobalConfig
public static final String BLOCKBREAK_FREQUENCY_BUCKETS_DUR = BLOCKBREAK_FREQUENCY_BUCKETS + "duration";
public static final String BLOCKBREAK_FREQUENCY_BUCKETS_FACTOR = BLOCKBREAK_FREQUENCY_BUCKETS + "factor";
@GlobalConfig
public static final String BLOCKBREAK_FREQUENCY_BUCKETS_N = BLOCKBREAK_FREQUENCY_BUCKETS + "number";
private static final String BLOCKBREAK_FREQUENCY_SHORTTERM = BLOCKBREAK_FREQUENCY + "shortterm.";
public static final String BLOCKBREAK_FREQUENCY_SHORTTERM_LIMIT = BLOCKBREAK_FREQUENCY_SHORTTERM + "limit";
public static final String BLOCKBREAK_FREQUENCY_SHORTTERM_TICKS = BLOCKBREAK_FREQUENCY_SHORTTERM + "ticks";
public static final String BLOCKBREAK_FREQUENCY_ACTIONS = BLOCKBREAK_FREQUENCY + "actions";
private static final String BLOCKBREAK_NOSWING = BLOCKBREAK + "noswing.";
public static final String BLOCKBREAK_NOSWING_CHECK = BLOCKBREAK_NOSWING + "active";
@ -151,11 +150,11 @@ public abstract class ConfPaths {
private static final String BLOCKBREAK_REACH = BLOCKBREAK + "reach.";
public static final String BLOCKBREAK_REACH_CHECK = BLOCKBREAK_REACH + "active";
public static final String BLOCKBREAK_REACH_ACTIONS = BLOCKBREAK_REACH + "actions";
private static final String BLOCKBREAK_WRONGBLOCK = BLOCKBREAK + "wrongblock.";
public static final String BLOCKBREAK_WRONGBLOCK_CHECK = BLOCKBREAK_WRONGBLOCK + "active";
public static final String BLOCKBREAK_WRONGBLOCK_LEVEL = BLOCKBREAK_WRONGBLOCK + "level";
public static final String BLOCKBREAK_WRONGBLOCK_ACTIONS = BLOCKBREAK_WRONGBLOCK + "actions";
public static final String BLOCKBREAK_WRONGBLOCK_CHECK = BLOCKBREAK_WRONGBLOCK + "active";
public static final String BLOCKBREAK_WRONGBLOCK_LEVEL = BLOCKBREAK_WRONGBLOCK + "level";
public static final String BLOCKBREAK_WRONGBLOCK_ACTIONS = BLOCKBREAK_WRONGBLOCK + "actions";
public static final String BLOCKINTERACT = CHECKS + "blockinteract.";
@ -166,27 +165,27 @@ public abstract class ConfPaths {
private static final String BLOCKINTERACT_REACH = BLOCKINTERACT + "reach.";
public static final String BLOCKINTERACT_REACH_CHECK = BLOCKINTERACT_REACH + "active";
public static final String BLOCKINTERACT_REACH_ACTIONS = BLOCKINTERACT_REACH + "actions";
private static final String BLOCKINTERACT_SPEED = BLOCKINTERACT + "speed.";
public static final String BLOCKINTERACT_SPEED_CHECK = BLOCKINTERACT_SPEED + "active";
public static final String BLOCKINTERACT_SPEED_INTERVAL = BLOCKINTERACT_SPEED + "interval";
public static final String BLOCKINTERACT_SPEED_LIMIT = BLOCKINTERACT_SPEED + "limit";
public static final String BLOCKINTERACT_SPEED_ACTIONS = BLOCKINTERACT_SPEED + "actions";
public static final String BLOCKINTERACT_SPEED_CHECK = BLOCKINTERACT_SPEED + "active";
public static final String BLOCKINTERACT_SPEED_INTERVAL = BLOCKINTERACT_SPEED + "interval";
public static final String BLOCKINTERACT_SPEED_LIMIT = BLOCKINTERACT_SPEED + "limit";
public static final String BLOCKINTERACT_SPEED_ACTIONS = BLOCKINTERACT_SPEED + "actions";
private static final String BLOCKINTERACT_VISIBLE = BLOCKINTERACT + "visible.";
public static final String BLOCKINTERACT_VISIBLE_CHECK = BLOCKINTERACT_VISIBLE + "active";
public static final String BLOCKINTERACT_VISIBLE_ACTIONS = BLOCKINTERACT_VISIBLE + "actions";
public static final String BLOCKINTERACT_VISIBLE_CHECK = BLOCKINTERACT_VISIBLE + "active";
public static final String BLOCKINTERACT_VISIBLE_ACTIONS = BLOCKINTERACT_VISIBLE + "actions";
// BLOCKPLACE
public static final String BLOCKPLACE = CHECKS + "blockplace.";
private static final String BLOCKPLACE_AGAINST = BLOCKPLACE + "against.";
public static final String BLOCKPLACE_AGAINST_CHECK = BLOCKPLACE_AGAINST + "active";
public static final String BLOCKPLACE_AGAINST_ACTIONS = BLOCKPLACE_AGAINST + "actions";
public static final String BLOCKPLACE_AGAINST_ACTIONS = BLOCKPLACE_AGAINST + "actions";
private static final String BLOCKPLACE_AUTOSIGN = BLOCKPLACE + "autosign.";
public static final String BLOCKPLACE_AUTOSIGN_CHECK = BLOCKPLACE_AUTOSIGN + "active";
public static final String BLOCKPLACE_AUTOSIGN_ACTIONS = BLOCKPLACE_AUTOSIGN + "actions";
public static final String BLOCKPLACE_AUTOSIGN_CHECK = BLOCKPLACE_AUTOSIGN + "active";
public static final String BLOCKPLACE_AUTOSIGN_ACTIONS = BLOCKPLACE_AUTOSIGN + "actions";
private static final String BLOCKPLACE_DIRECTION = BLOCKPLACE + "direction.";
public static final String BLOCKPLACE_DIRECTION_CHECK = BLOCKPLACE_DIRECTION + "active";
@ -194,10 +193,10 @@ public abstract class ConfPaths {
private static final String BLOCKPLACE_FASTPLACE = BLOCKPLACE + "fastplace.";
public static final String BLOCKPLACE_FASTPLACE_CHECK = BLOCKPLACE_FASTPLACE + "active";
public static final String BLOCKPLACE_FASTPLACE_LIMIT = BLOCKPLACE_FASTPLACE + "limit";
private static final String BLOCKPLACE_FASTPLACE_SHORTTERM = BLOCKPLACE_FASTPLACE + "shortterm.";
public static final String BLOCKPLACE_FASTPLACE_SHORTTERM_TICKS = BLOCKPLACE_FASTPLACE_SHORTTERM + "ticks";
public static final String BLOCKPLACE_FASTPLACE_SHORTTERM_LIMIT = BLOCKPLACE_FASTPLACE_SHORTTERM + "limit";
public static final String BLOCKPLACE_FASTPLACE_LIMIT = BLOCKPLACE_FASTPLACE + "limit";
private static final String BLOCKPLACE_FASTPLACE_SHORTTERM = BLOCKPLACE_FASTPLACE + "shortterm.";
public static final String BLOCKPLACE_FASTPLACE_SHORTTERM_TICKS = BLOCKPLACE_FASTPLACE_SHORTTERM + "ticks";
public static final String BLOCKPLACE_FASTPLACE_SHORTTERM_LIMIT = BLOCKPLACE_FASTPLACE_SHORTTERM + "limit";
public static final String BLOCKPLACE_FASTPLACE_ACTIONS = BLOCKPLACE_FASTPLACE + "actions";
private static final String BLOCKPLACE_NOSWING = BLOCKPLACE + "noswing.";
@ -224,11 +223,11 @@ public abstract class ConfPaths {
public static final String CHAT_CAPTCHA_SUCCESS = CHAT_CAPTCHA + "success";
public static final String CHAT_CAPTCHA_TRIES = CHAT_CAPTCHA + "tries";
public static final String CHAT_CAPTCHA_ACTIONS = CHAT_CAPTCHA + "actions";
private static final String CHAT_COLOR = CHAT + "color.";
public static final String CHAT_COLOR_CHECK = CHAT_COLOR + "active";
public static final String CHAT_COLOR_ACTIONS = CHAT_COLOR + "actions";
private static final String CHAT_COMMANDS = CHAT + "commands.";
public static final String CHAT_COMMANDS_CHECK = CHAT_COMMANDS + "active";
@GlobalConfig
@ -240,77 +239,77 @@ public abstract class ConfPaths {
public static final String CHAT_COMMANDS_SHORTTERM_TICKS = CHAT_COMMANDS_SHORTTERM + "ticks";
public static final String CHAT_COMMANDS_SHORTTERM_LEVEL = CHAT_COMMANDS_SHORTTERM + "level";
public static final String CHAT_COMMANDS_ACTIONS = CHAT_COMMANDS + "actions";
// Text
private static final String CHAT_TEXT = CHAT + "text.";
public static final String CHAT_TEXT_CHECK = CHAT_TEXT + "active";
public static final String CHAT_TEXT_DEBUG = CHAT_TEXT + "debug";
public static final String CHAT_TEXT_ENGINE_MAXIMUM = CHAT_TEXT + "maximum";
public static final String CHAT_TEXT_ALLOWVLRESET = CHAT_TEXT + "allowvlreset";
public static final String CHAT_TEXT_DEBUG = CHAT_TEXT + "debug";
public static final String CHAT_TEXT_ENGINE_MAXIMUM = CHAT_TEXT + "maximum";
public static final String CHAT_TEXT_ALLOWVLRESET = CHAT_TEXT + "allowvlreset";
public static final String CHAT_TEXT_FREQ = CHAT_TEXT + "frequency.";
public static final String CHAT_TEXT_FREQ_NORM = CHAT_TEXT_FREQ + "normal.";
public static final String CHAT_TEXT_FREQ_NORM_FACTOR = CHAT_TEXT_FREQ_NORM + "factor";
public static final String CHAT_TEXT_FREQ_NORM_LEVEL = CHAT_TEXT_FREQ_NORM + "level";
public static final String CHAT_TEXT_FREQ_NORM_WEIGHT = CHAT_TEXT_FREQ_NORM + "weight";
public static final String CHAT_TEXT_FREQ_NORM_MIN = CHAT_TEXT_FREQ_NORM + "minimum";
public static final String CHAT_TEXT_FREQ_NORM_FACTOR = CHAT_TEXT_FREQ_NORM + "factor";
public static final String CHAT_TEXT_FREQ_NORM_LEVEL = CHAT_TEXT_FREQ_NORM + "level";
public static final String CHAT_TEXT_FREQ_NORM_WEIGHT = CHAT_TEXT_FREQ_NORM + "weight";
public static final String CHAT_TEXT_FREQ_NORM_MIN = CHAT_TEXT_FREQ_NORM + "minimum";
public static final String CHAT_TEXT_FREQ_NORM_ACTIONS = CHAT_TEXT_FREQ_NORM + "actions";
private static final String CHAT_TEXT_FREQ_SHORTTERM = CHAT_TEXT_FREQ + "shortterm.";
private static final String CHAT_TEXT_FREQ_SHORTTERM = CHAT_TEXT_FREQ + "shortterm.";
public static final String CHAT_TEXT_FREQ_SHORTTERM_FACTOR = CHAT_TEXT_FREQ_SHORTTERM + "factor";
public static final String CHAT_TEXT_FREQ_SHORTTERM_LEVEL = CHAT_TEXT_FREQ_SHORTTERM + "level";
public static final String CHAT_TEXT_FREQ_SHORTTERM_WEIGHT = CHAT_TEXT_FREQ_SHORTTERM + "weight";
public static final String CHAT_TEXT_FREQ_SHORTTERM_MIN = CHAT_TEXT_FREQ_SHORTTERM + "minimum";
public static final String CHAT_TEXT_FREQ_SHORTTERM_ACTIONS = CHAT_TEXT_FREQ_SHORTTERM + "actions";
// (Some of the following paths must be public for generic config reading.)
// Per message checks.
private static final String CHAT_TEXT_MSG = CHAT_TEXT + "message.";
// (Some of the following paths must be public for generic config reading.)
// Per message checks.
private static final String CHAT_TEXT_MSG = CHAT_TEXT + "message.";
public static final String CHAT_TEXT_MSG_LETTERCOUNT = CHAT_TEXT_MSG + "lettercount";
public static final String CHAT_TEXT_MSG_PARTITION = CHAT_TEXT_MSG + "partition";
public static final String CHAT_TEXT_MSG_UPPERCASE = CHAT_TEXT_MSG + "uppercase";
public static final String CHAT_TEXT_MSG_UPPERCASE = CHAT_TEXT_MSG + "uppercase";
public static final String CHAT_TEXT_MSG_REPEATCANCEL = CHAT_TEXT_MSG + "repeatviolation";
public static final String CHAT_TEXT_MSG_AFTERJOIN = CHAT_TEXT_MSG + "afterjoin";
public static final String CHAT_TEXT_MSG_REPEATSELF = CHAT_TEXT_MSG + "repeatself";
public static final String CHAT_TEXT_MSG_REPEATGLOBAL = CHAT_TEXT_MSG + "repeatglobal";
public static final String CHAT_TEXT_MSG_NOMOVING = CHAT_TEXT_MSG + "nomoving";
private static final String CHAT_TEXT_MSG_WORDS = CHAT_TEXT_MSG + "words.";
public static final String CHAT_TEXT_MSG_WORDS_LENGTHAV = CHAT_TEXT_MSG_WORDS + "lengthav";
public static final String CHAT_TEXT_MSG_WORDS_LENGTHMSG = CHAT_TEXT_MSG_WORDS + "lengthmsg";
public static final String CHAT_TEXT_MSG_WORDS_NOLETTER = CHAT_TEXT_MSG_WORDS + "noletter";
private static final String CHAT_TEXT_MSG_WORDS = CHAT_TEXT_MSG + "words.";
public static final String CHAT_TEXT_MSG_WORDS_LENGTHAV = CHAT_TEXT_MSG_WORDS + "lengthav";
public static final String CHAT_TEXT_MSG_WORDS_LENGTHMSG = CHAT_TEXT_MSG_WORDS + "lengthmsg";
public static final String CHAT_TEXT_MSG_WORDS_NOLETTER = CHAT_TEXT_MSG_WORDS + "noletter";
// Extended global checks.
private static final String CHAT_TEXT_GL = CHAT_TEXT + "global.";
public static final String CHAT_TEXT_GL_CHECK = CHAT_TEXT_GL + "active";
public static final String CHAT_TEXT_GL_WEIGHT = CHAT_TEXT_GL + "weight";
@GlobalConfig
public static final String CHAT_TEXT_GL_CHECK = CHAT_TEXT_GL + "active";
public static final String CHAT_TEXT_GL_WEIGHT = CHAT_TEXT_GL + "weight";
@GlobalConfig
public static final String CHAT_TEXT_GL_WORDS = CHAT_TEXT_GL + "words.";
public static final String CHAT_TEXT_GL_WORDS_CHECK = CHAT_TEXT_GL_WORDS + "active";
@GlobalConfig
public static final String CHAT_TEXT_GL_PREFIXES = CHAT_TEXT_GL + "prefixes.";
public static final String CHAT_TEXT_GL_PREFIXES_CHECK = CHAT_TEXT_GL_PREFIXES + "active";
@GlobalConfig
public static final String CHAT_TEXT_GL_SIMILARITY = CHAT_TEXT_GL + "similarity.";
public static final String CHAT_TEXT_GL_SIMILARITY_CHECK = CHAT_TEXT_GL_SIMILARITY + "active";
// Extended per player checks.
private static final String CHAT_TEXT_PP = CHAT_TEXT + "player.";
public static final String CHAT_TEXT_PP_CHECK = CHAT_TEXT_PP + "active";
public static final String CHAT_TEXT_PP_WEIGHT = CHAT_TEXT_PP + "weight";
@GlobalConfig
public static final String CHAT_TEXT_PP_PREFIXES = CHAT_TEXT_PP + "prefixes.";
public static final String CHAT_TEXT_PP_PREFIXES_CHECK = CHAT_TEXT_PP_PREFIXES + "active";
@GlobalConfig
public static final String CHAT_TEXT_PP_WORDS = CHAT_TEXT_PP + "words.";
public static final String CHAT_TEXT_PP_WORDS_CHECK = CHAT_TEXT_PP_WORDS + "active";
@GlobalConfig
public static final String CHAT_TEXT_PP_SIMILARITY = CHAT_TEXT_PP + "similarity.";
public static final String CHAT_TEXT_PP_SIMILARITY_CHECK = CHAT_TEXT_PP_SIMILARITY + "active";
public static final String CHAT_TEXT_GL_WORDS_CHECK = CHAT_TEXT_GL_WORDS + "active";
@GlobalConfig
public static final String CHAT_TEXT_GL_PREFIXES = CHAT_TEXT_GL + "prefixes.";
public static final String CHAT_TEXT_GL_PREFIXES_CHECK = CHAT_TEXT_GL_PREFIXES + "active";
@GlobalConfig
public static final String CHAT_TEXT_GL_SIMILARITY = CHAT_TEXT_GL + "similarity.";
public static final String CHAT_TEXT_GL_SIMILARITY_CHECK = CHAT_TEXT_GL_SIMILARITY + "active";
// Extended per player checks.
private static final String CHAT_TEXT_PP = CHAT_TEXT + "player.";
public static final String CHAT_TEXT_PP_CHECK = CHAT_TEXT_PP + "active";
public static final String CHAT_TEXT_PP_WEIGHT = CHAT_TEXT_PP + "weight";
@GlobalConfig
public static final String CHAT_TEXT_PP_PREFIXES = CHAT_TEXT_PP + "prefixes.";
public static final String CHAT_TEXT_PP_PREFIXES_CHECK = CHAT_TEXT_PP_PREFIXES + "active";
@GlobalConfig
public static final String CHAT_TEXT_PP_WORDS = CHAT_TEXT_PP + "words.";
public static final String CHAT_TEXT_PP_WORDS_CHECK = CHAT_TEXT_PP_WORDS + "active";
@GlobalConfig
public static final String CHAT_TEXT_PP_SIMILARITY = CHAT_TEXT_PP + "similarity.";
public static final String CHAT_TEXT_PP_SIMILARITY_CHECK = CHAT_TEXT_PP_SIMILARITY + "active";
private static final String CHAT_WARNING = CHAT + "warning.";
public static final String CHAT_WARNING_CHECK = CHAT_WARNING + "active";
public static final String CHAT_WARNING_LEVEL = CHAT_WARNING + "level";
public static final String CHAT_WARNING_MESSAGE = CHAT_WARNING + "message";
public static final String CHAT_WARNING_TIMEOUT = CHAT_WARNING + "timeout";
// NOT YET IN USE
private static final String CHAT_LOGINS = CHAT + "logins.";
public static final String CHAT_LOGINS_CHECK = CHAT_LOGINS + "active";
@ -319,7 +318,7 @@ public abstract class ConfPaths {
public static final String CHAT_LOGINS_LIMIT = CHAT_LOGINS + "limit";
public static final String CHAT_LOGINS_KICKMESSAGE = CHAT_LOGINS + "kickmessage";
public static final String CHAT_LOGINS_STARTUPDELAY = CHAT_LOGINS + "startupdelay";
private static final String CHAT_RELOG = CHAT + "relog.";
public static final String CHAT_RELOG_CHECK = CHAT_RELOG + "active";
public static final String CHAT_RELOG_KICKMESSAGE = CHAT_RELOG + "kickmessage";
@ -334,27 +333,27 @@ public abstract class ConfPaths {
* Combined !
*/
public static final String COMBINED = CHECKS + "combined.";
private static final String COMBINED_BEDLEAVE = COMBINED + "bedleave.";
public static final String COMBINED_BEDLEAVE_CHECK = COMBINED_BEDLEAVE + "active";
public static final String COMBINED_BEDLEAVE_ACTIONS = COMBINED_BEDLEAVE + "actions";
private static final String COMBINED_ENDERPEARL = COMBINED + "enderpearl.";
public static final String COMBINED_ENDERPEARL_CHECK = COMBINED_ENDERPEARL + "active";
public static final String COMBINED_ENDERPEARL_PREVENTCLICKBLOCK = COMBINED_ENDERPEARL + "preventclickblock";
public static final String COMBINED_BEDLEAVE_ACTIONS = COMBINED_BEDLEAVE + "actions";
private static final String COMBINED_ENDERPEARL = COMBINED + "enderpearl.";
public static final String COMBINED_ENDERPEARL_CHECK = COMBINED_ENDERPEARL + "active";
public static final String COMBINED_ENDERPEARL_PREVENTCLICKBLOCK = COMBINED_ENDERPEARL + "preventclickblock";
private static final String COMBINED_IMPROBABLE = COMBINED + "improbable.";
public static final String COMBINED_IMPROBABLE_CHECK = COMBINED_IMPROBABLE + "active";
public static final String COMBINED_IMPROBABLE_LEVEL = COMBINED_IMPROBABLE + "level";
// private static final String COMBINED_IMPROBABLE_CHECKS = COMBINED_IMPROBABLE + "options.";
// public static final String COMBINED_IMPROBABLE_FASTBREAK_CHECK = COMBINED_IMPROBABLE_CHECKS + "fastbreak";
public static final String COMBINED_IMPROBABLE_ACTIONS = COMBINED_IMPROBABLE + "actions";
private static final String COMBINED_INVULNERABLE = COMBINED + "invulnerable.";
public static final String COMBINED_INVULNERABLE_CHECK = COMBINED_INVULNERABLE + "active";
private static final String COMBINED_INVULNERABLE_INITIALTICKS = COMBINED_INVULNERABLE + "initialticks.";
public static final String COMBINED_IMPROBABLE_CHECK = COMBINED_IMPROBABLE + "active";
public static final String COMBINED_IMPROBABLE_LEVEL = COMBINED_IMPROBABLE + "level";
// private static final String COMBINED_IMPROBABLE_CHECKS = COMBINED_IMPROBABLE + "options.";
// public static final String COMBINED_IMPROBABLE_FASTBREAK_CHECK = COMBINED_IMPROBABLE_CHECKS + "fastbreak";
public static final String COMBINED_IMPROBABLE_ACTIONS = COMBINED_IMPROBABLE + "actions";
private static final String COMBINED_INVULNERABLE = COMBINED + "invulnerable.";
public static final String COMBINED_INVULNERABLE_CHECK = COMBINED_INVULNERABLE + "active";
private static final String COMBINED_INVULNERABLE_INITIALTICKS = COMBINED_INVULNERABLE + "initialticks.";
public static final String COMBINED_INVULNERABLE_INITIALTICKS_JOIN = COMBINED_INVULNERABLE_INITIALTICKS + "join";
public static final String COMBINED_INVULNERABLE_IGNORE = COMBINED_INVULNERABLE + "ignore";
public static final String COMBINED_INVULNERABLE_MODIFIERS = COMBINED_INVULNERABLE + "modifiers"; // no dot !
@ -363,21 +362,21 @@ public abstract class ConfPaths {
public static final String COMBINED_INVULNERABLE_TRIGGERS_FALLDISTANCE = COMBINED_INVULNERABLE_TRIGGERS + "falldistance";
public static final String COMBINED_MUNCHHAUSEN = COMBINED + "munchhausen.";
public static final String COMBINED_MUNCHHAUSEN_CHECK = COMBINED_MUNCHHAUSEN + "active";
public static final String COMBINED_MUNCHHAUSEN_ACTIONS = COMBINED_MUNCHHAUSEN + "actions";
private static final String COMBINED_YAWRATE = COMBINED + "yawrate.";
public static final String COMBINED_YAWRATE_RATE = COMBINED_YAWRATE + "rate";
public static final String COMBINED_YAWRATE_IMPROBABLE = COMBINED_YAWRATE + "improbable";
private static final String COMBINED_YAWRATE_PENALTY = COMBINED_YAWRATE + "penalty.";
public static final String COMBINED_MUNCHHAUSEN_CHECK = COMBINED_MUNCHHAUSEN + "active";
public static final String COMBINED_MUNCHHAUSEN_ACTIONS = COMBINED_MUNCHHAUSEN + "actions";
private static final String COMBINED_YAWRATE = COMBINED + "yawrate.";
public static final String COMBINED_YAWRATE_RATE = COMBINED_YAWRATE + "rate";
public static final String COMBINED_YAWRATE_IMPROBABLE = COMBINED_YAWRATE + "improbable";
private static final String COMBINED_YAWRATE_PENALTY = COMBINED_YAWRATE + "penalty.";
public static final String COMBINED_YAWRATE_PENALTY_FACTOR = COMBINED_YAWRATE_PENALTY + "factor";
public static final String COMBINED_YAWRATE_PENALTY_MIN = COMBINED_YAWRATE_PENALTY + "minimum";
public static final String COMBINED_YAWRATE_PENALTY_MAX = COMBINED_YAWRATE_PENALTY + "maximum";
public static final String FIGHT = CHECKS + "fight.";
public static final String FIGHT_CANCELDEAD = FIGHT + "canceldead";
public static final String FIGHT_TOOLCHANGEPENALTY = FIGHT + "toolchangepenalty";
public static final String FIGHT_CANCELDEAD = FIGHT + "canceldead";
public static final String FIGHT_TOOLCHANGEPENALTY = FIGHT + "toolchangepenalty";
private static final String FIGHT_ANGLE = FIGHT + "angle.";
public static final String FIGHT_ANGLE_CHECK = FIGHT_ANGLE + "active";
@ -391,22 +390,22 @@ public abstract class ConfPaths {
private static final String FIGHT_DIRECTION = FIGHT + "direction.";
public static final String FIGHT_DIRECTION_CHECK = FIGHT_DIRECTION + "active";
public static final String FIGHT_DIRECTION_STRICT = FIGHT_DIRECTION + "strict";
public static final String FIGHT_DIRECTION_STRICT = FIGHT_DIRECTION + "strict";
public static final String FIGHT_DIRECTION_PENALTY = FIGHT_DIRECTION + "penalty";
public static final String FIGHT_DIRECTION_ACTIONS = FIGHT_DIRECTION + "actions";
private static final String FIGHT_FASTHEAL = FIGHT + "fastheal.";
public static final String FIGHT_FASTHEAL_CHECK = FIGHT_FASTHEAL + "active";
public static final String FIGHT_FASTHEAL_INTERVAL = FIGHT_FASTHEAL + "interval";
public static final String FIGHT_FASTHEAL_BUFFER = FIGHT_FASTHEAL + "buffer";
public static final String FIGHT_FASTHEAL_ACTIONS = FIGHT_FASTHEAL + "actions";
public static final String FIGHT_FASTHEAL_INTERVAL = FIGHT_FASTHEAL + "interval";
public static final String FIGHT_FASTHEAL_BUFFER = FIGHT_FASTHEAL + "buffer";
public static final String FIGHT_FASTHEAL_ACTIONS = FIGHT_FASTHEAL + "actions";
private static final String FIGHT_GODMODE = FIGHT + "godmode.";
public static final String FIGHT_GODMODE_CHECK = FIGHT_GODMODE + "active";
public static final String FIGHT_GODMODE_LAGMINAGE = FIGHT_GODMODE + "minage";
public static final String FIGHT_GODMODE_LAGMAXAGE = FIGHT_GODMODE + "maxage";
public static final String FIGHT_GODMODE_LAGMINAGE = FIGHT_GODMODE + "minage";
public static final String FIGHT_GODMODE_LAGMAXAGE = FIGHT_GODMODE + "maxage";
public static final String FIGHT_GODMODE_ACTIONS = FIGHT_GODMODE + "actions";
private static final String FIGHT_KNOCKBACK = FIGHT + "knockback.";
public static final String FIGHT_KNOCKBACK_CHECK = FIGHT_KNOCKBACK + "active";
public static final String FIGHT_KNOCKBACK_INTERVAL = FIGHT_KNOCKBACK + "interval";
@ -418,17 +417,17 @@ public abstract class ConfPaths {
private static final String FIGHT_REACH = FIGHT + "reach.";
public static final String FIGHT_REACH_CHECK = FIGHT_REACH + "active";
public static final String FIGHT_REACH_SURVIVALDISTANCE = FIGHT_REACH + "survivaldistance";
public static final String FIGHT_REACH_SURVIVALDISTANCE = FIGHT_REACH + "survivaldistance";
public static final String FIGHT_REACH_PENALTY = FIGHT_REACH + "penalty";
public static final String FIGHT_REACH_PRECISION = FIGHT_REACH + "precision";
public static final String FIGHT_REACH_REDUCE = FIGHT_REACH + "reduce";
public static final String FIGHT_REACH_REDUCEDISTANCE = FIGHT_REACH + "reducedistance";
public static final String FIGHT_REACH_REDUCESTEP = FIGHT_REACH + "reducestep";
public static final String FIGHT_REACH_PRECISION = FIGHT_REACH + "precision";
public static final String FIGHT_REACH_REDUCE = FIGHT_REACH + "reduce";
public static final String FIGHT_REACH_REDUCEDISTANCE = FIGHT_REACH + "reducedistance";
public static final String FIGHT_REACH_REDUCESTEP = FIGHT_REACH + "reducestep";
public static final String FIGHT_REACH_ACTIONS = FIGHT_REACH + "actions";
public static final String FIGHT_SELFHIT = FIGHT + "selfhit.";
public static final String FIGHT_SELFHIT_CHECK = FIGHT_SELFHIT + "active";
public static final String FIGHT_SELFHIT_ACTIONS = FIGHT_SELFHIT + "actions";
public static final String FIGHT_SELFHIT_ACTIONS = FIGHT_SELFHIT + "actions";
private static final String FIGHT_SPEED = FIGHT + "speed.";
@ -436,17 +435,17 @@ public abstract class ConfPaths {
public static final String FIGHT_SPEED_LIMIT = FIGHT_SPEED + "limit";
private static final String FIGHT_SPEED_BUCKETS = FIGHT_SPEED + "buckets.";
@GlobalConfig
public static final String FIGHT_SPEED_BUCKETS_N = FIGHT_SPEED_BUCKETS + "number";
public static final String FIGHT_SPEED_BUCKETS_N = FIGHT_SPEED_BUCKETS + "number";
@GlobalConfig
public static final String FIGHT_SPEED_BUCKETS_DUR = FIGHT_SPEED_BUCKETS + "duration";
public static final String FIGHT_SPEED_BUCKETS_FACTOR = FIGHT_SPEED_BUCKETS + "factor";
private static final String FIGHT_SPEED_SHORTTERM = FIGHT_SPEED + "shortterm.";
public static final String FIGHT_SPEED_SHORTTERM_LIMIT = FIGHT_SPEED_SHORTTERM + "limit";
public static final String FIGHT_SPEED_SHORTTERM_TICKS = FIGHT_SPEED_SHORTTERM + "ticks";
public static final String FIGHT_SPEED_BUCKETS_DUR = FIGHT_SPEED_BUCKETS + "duration";
public static final String FIGHT_SPEED_BUCKETS_FACTOR = FIGHT_SPEED_BUCKETS + "factor";
private static final String FIGHT_SPEED_SHORTTERM = FIGHT_SPEED + "shortterm.";
public static final String FIGHT_SPEED_SHORTTERM_LIMIT = FIGHT_SPEED_SHORTTERM + "limit";
public static final String FIGHT_SPEED_SHORTTERM_TICKS = FIGHT_SPEED_SHORTTERM + "ticks";
public static final String FIGHT_SPEED_ACTIONS = FIGHT_SPEED + "actions";
private static final String FIGHT_YAWRATE = FIGHT + "yawrate.";
public static final String FIGHT_YAWRATE_CHECK = FIGHT_YAWRATE + "active";
public static final String FIGHT_YAWRATE_CHECK = FIGHT_YAWRATE + "active";
public static final String INVENTORY = CHECKS + "inventory.";
@ -459,44 +458,44 @@ public abstract class ConfPaths {
private static final String INVENTORY_FASTCLICK = INVENTORY + "fastclick.";
public static final String INVENTORY_FASTCLICK_CHECK = INVENTORY_FASTCLICK + "active";
public static final String INVENTORY_FASTCLICK_SPARECREATIVE = INVENTORY_FASTCLICK + "sparecreative";
public static final String INVENTORY_FASTCLICK_TWEAKS1_5 = INVENTORY_FASTCLICK + "tweaks1_5";
public static final String INVENTORY_FASTCLICK_TWEAKS1_5 = INVENTORY_FASTCLICK + "tweaks1_5";
private static final String INVENTORY_FASTCLICK_LIMIT = INVENTORY_FASTCLICK + "limit.";
public static final String INVENTORY_FASTCLICK_LIMIT_SHORTTERM = INVENTORY_FASTCLICK_LIMIT + "shortterm";
public static final String INVENTORY_FASTCLICK_LIMIT_NORMAL = INVENTORY_FASTCLICK_LIMIT + "normal";
public static final String INVENTORY_FASTCLICK_LIMIT_SHORTTERM = INVENTORY_FASTCLICK_LIMIT + "shortterm";
public static final String INVENTORY_FASTCLICK_LIMIT_NORMAL = INVENTORY_FASTCLICK_LIMIT + "normal";
public static final String INVENTORY_FASTCLICK_ACTIONS = INVENTORY_FASTCLICK + "actions";
private static final String INVENTORY_FASTCONSUME = INVENTORY + "fastconsume.";
public static final String INVENTORY_FASTCONSUME_CHECK = INVENTORY_FASTCONSUME + "active";
public static final String INVENTORY_FASTCONSUME_DURATION = INVENTORY_FASTCONSUME + "duration";
public static final String INVENTORY_FASTCONSUME_WHITELIST = INVENTORY_FASTCONSUME + "whitelist";
public static final String INVENTORY_FASTCONSUME_ITEMS = INVENTORY_FASTCONSUME + "items";
public static final String INVENTORY_FASTCONSUME_ACTIONS = INVENTORY_FASTCONSUME + "actions";
public static final String INVENTORY_FASTCONSUME_CHECK = INVENTORY_FASTCONSUME + "active";
public static final String INVENTORY_FASTCONSUME_DURATION = INVENTORY_FASTCONSUME + "duration";
public static final String INVENTORY_FASTCONSUME_WHITELIST = INVENTORY_FASTCONSUME + "whitelist";
public static final String INVENTORY_FASTCONSUME_ITEMS = INVENTORY_FASTCONSUME + "items";
public static final String INVENTORY_FASTCONSUME_ACTIONS = INVENTORY_FASTCONSUME + "actions";
private static final String INVENTORY_INSTANTBOW = INVENTORY + "instantbow.";
public static final String INVENTORY_INSTANTBOW_CHECK = INVENTORY_INSTANTBOW + "active";
public static final String INVENTORY_INSTANTBOW_STRICT = INVENTORY_INSTANTBOW + "strict";
public static final String INVENTORY_INSTANTBOW_STRICT = INVENTORY_INSTANTBOW + "strict";
public static final String INVENTORY_INSTANTBOW_DELAY = INVENTORY_INSTANTBOW + "delay";
public static final String INVENTORY_INSTANTBOW_ACTIONS = INVENTORY_INSTANTBOW + "actions";
private static final String INVENTORY_INSTANTEAT = INVENTORY + "instanteat.";
public static final String INVENTORY_INSTANTEAT_CHECK = INVENTORY_INSTANTEAT + "active";
public static final String INVENTORY_INSTANTEAT_ACTIONS = INVENTORY_INSTANTEAT + "actions";
private static final String INVENTORY_ITEMS = INVENTORY + "items.";
public static final String INVENTORY_ITEMS_CHECK = INVENTORY_ITEMS + "active";
private static final String INVENTORY_OPEN = INVENTORY + "open.";
public static final String INVENTORY_OPEN_CHECK = INVENTORY_OPEN + "active";
// TODO: close and cancelother on open-section-level are temporary.
public static final String INVENTORY_OPEN_CLOSE = INVENTORY_OPEN + "close";
public static final String INVENTORY_OPEN_CANCELOTHER = INVENTORY_OPEN + "cancelother";
public static final String MOVING = CHECKS + "moving.";
private static final String MOVING_CREATIVEFLY = MOVING + "creativefly.";
public static final String MOVING_CREATIVEFLY_CHECK = MOVING_CREATIVEFLY + "active";
public static final String MOVING_CREATIVEFLY_IGNORECREATIVE = MOVING_CREATIVEFLY + "ignorecreative";
public static final String MOVING_CREATIVEFLY_IGNOREALLOWFLIGHT = MOVING_CREATIVEFLY + "ignoreallowflight";
public static final String MOVING_CREATIVEFLY_IGNORECREATIVE = MOVING_CREATIVEFLY + "ignorecreative";
public static final String MOVING_CREATIVEFLY_IGNOREALLOWFLIGHT = MOVING_CREATIVEFLY + "ignoreallowflight";
public static final String MOVING_CREATIVEFLY_HORIZONTALSPEED = MOVING_CREATIVEFLY + "horizontalspeed";
public static final String MOVING_CREATIVEFLY_MAXHEIGHT = MOVING_CREATIVEFLY + "maxheight";
public static final String MOVING_CREATIVEFLY_VERTICALSPEED = MOVING_CREATIVEFLY + "verticalspeed";
@ -506,11 +505,11 @@ public abstract class ConfPaths {
public static final String MOVING_MOREPACKETS_CHECK = MOVING_MOREPACKETS + "active";
public static final String MOVING_MOREPACKETS_SECONDS = MOVING_MOREPACKETS + "seconds";
public static final String MOVING_MOREPACKETS_EPSIDEAL = MOVING_MOREPACKETS + "epsideal";
public static final String MOVING_MOREPACKETS_EPSMAX = MOVING_MOREPACKETS + "epsmax";
private static final String MOVING_MOREPACKETS_BURST = MOVING_MOREPACKETS + "burst.";
public static final String MOVING_MOREPACKETS_BURST_PACKETS = MOVING_MOREPACKETS_BURST + "packets";
public static final String MOVING_MOREPACKETS_BURST_DIRECT = MOVING_MOREPACKETS_BURST + "directviolation";
public static final String MOVING_MOREPACKETS_BURST_EPM = MOVING_MOREPACKETS_BURST + "epmviolation";
public static final String MOVING_MOREPACKETS_EPSMAX = MOVING_MOREPACKETS + "epsmax";
private static final String MOVING_MOREPACKETS_BURST = MOVING_MOREPACKETS + "burst.";
public static final String MOVING_MOREPACKETS_BURST_PACKETS = MOVING_MOREPACKETS_BURST + "packets";
public static final String MOVING_MOREPACKETS_BURST_DIRECT = MOVING_MOREPACKETS_BURST + "directviolation";
public static final String MOVING_MOREPACKETS_BURST_EPM = MOVING_MOREPACKETS_BURST + "epmviolation";
public static final String MOVING_MOREPACKETS_ACTIONS = MOVING_MOREPACKETS + "actions";
private static final String MOVING_MOREPACKETSVEHICLE = MOVING + "morepacketsvehicle.";
@ -520,96 +519,96 @@ public abstract class ConfPaths {
private static final String MOVING_NOFALL = MOVING + "nofall.";
public static final String MOVING_NOFALL_CHECK = MOVING_NOFALL + "active";
public static final String MOVING_NOFALL_DEALDAMAGE = MOVING_NOFALL + "dealdamage";
public static final String MOVING_NOFALL_RESETONVL = MOVING_NOFALL + "resetonviolation";
public static final String MOVING_NOFALL_RESETONTP = MOVING_NOFALL + "resetonteleport";
public static final String MOVING_NOFALL_RESETONVEHICLE = MOVING_NOFALL + "resetonvehicle";
public static final String MOVING_NOFALL_ANTICRITICALS = MOVING_NOFALL + "anticriticals";
public static final String MOVING_NOFALL_RESETONVL = MOVING_NOFALL + "resetonviolation";
public static final String MOVING_NOFALL_RESETONTP = MOVING_NOFALL + "resetonteleport";
public static final String MOVING_NOFALL_RESETONVEHICLE = MOVING_NOFALL + "resetonvehicle";
public static final String MOVING_NOFALL_ANTICRITICALS = MOVING_NOFALL + "anticriticals";
public static final String MOVING_NOFALL_ACTIONS = MOVING_NOFALL + "actions";
public static final String MOVING_PASSABLE = MOVING + "passable.";
public static final String MOVING_PASSABLE_CHECK = MOVING_PASSABLE + "active";
private static final String MOVING_PASSABLE_RAYTRACING = MOVING_PASSABLE + "raytracing.";
public static final String MOVING_PASSABLE_RAYTRACING_CHECK = MOVING_PASSABLE_RAYTRACING + "active";
public static final String MOVING_PASSABLE_RAYTRACING_BLOCKCHANGEONLY= MOVING_PASSABLE_RAYTRACING + "blockchangeonly";
public static final String MOVING_PASSABLE_ACTIONS = MOVING_PASSABLE + "actions";
private static final String MOVING_SURVIVALFLY = MOVING + "survivalfly.";
public static final String MOVING_SURVIVALFLY_CHECK = MOVING_SURVIVALFLY + "active";
public static final String MOVING_SURVIVALFLY_BLOCKINGSPEED = MOVING_SURVIVALFLY + "blockingspeed";
public static final String MOVING_SURVIVALFLY_SNEAKINGSPEED = MOVING_SURVIVALFLY + "sneakingspeed";
public static final String MOVING_SURVIVALFLY_SPEEDINGSPEED = MOVING_SURVIVALFLY + "speedingspeed";
public static final String MOVING_SURVIVALFLY_SPRINTINGSPEED = MOVING_SURVIVALFLY + "sprintingspeed";
public static final String MOVING_SURVIVALFLY_SWIMMINGSPEED = MOVING_SURVIVALFLY + "swimmingspeed";
public static final String MOVING_SURVIVALFLY_WALKINGSPEED = MOVING_SURVIVALFLY + "walkingspeed";
public static final String MOVING_SURVIVALFLY_COBWEBHACK = MOVING_SURVIVALFLY + "cobwebhack";
private static final String MOVING_SURVIVALFLY_EXTENDED = MOVING_SURVIVALFLY + "extended.";
public static final String MOVING_SURVIVALFLY_EXTENDED_HACC = MOVING_SURVIVALFLY_EXTENDED + "horizontal-accounting";
public static final String MOVING_SURVIVALFLY_EXTENDED_VACC = MOVING_SURVIVALFLY_EXTENDED + "vertical-accounting";
public static final String MOVING_SURVIVALFLY_FALLDAMAGE = MOVING_SURVIVALFLY + "falldamage";
public static final String MOVING_SURVIVALFLY_VLFREEZE = MOVING_SURVIVALFLY + "vlfreeze";
public static final String MOVING_SURVIVALFLY_ACTIONS = MOVING_SURVIVALFLY + "actions";
private static final String MOVING_SURVIVALFLY_HOVER = MOVING_SURVIVALFLY + "hover.";
public static final String MOVING_SURVIVALFLY_HOVER_CHECK = MOVING_SURVIVALFLY_HOVER + "active";
@GlobalConfig
public static final String MOVING_SURVIVALFLY_HOVER_STEP = MOVING_SURVIVALFLY_HOVER + "step";
public static final String MOVING_SURVIVALFLY_HOVER_TICKS = MOVING_SURVIVALFLY_HOVER + "ticks";
public static final String MOVING_SURVIVALFLY_HOVER_LOGINTICKS = MOVING_SURVIVALFLY_HOVER + "loginticks";
public static final String MOVING_SURVIVALFLY_HOVER_FALLDAMAGE = MOVING_SURVIVALFLY_HOVER + "falldamage";
public static final String MOVING_SURVIVALFLY_HOVER_SFVIOLATION = MOVING_SURVIVALFLY_HOVER + "sfviolation";
public static final String MOVING_PASSABLE = MOVING + "passable.";
public static final String MOVING_PASSABLE_CHECK = MOVING_PASSABLE + "active";
private static final String MOVING_PASSABLE_RAYTRACING = MOVING_PASSABLE + "raytracing.";
public static final String MOVING_PASSABLE_RAYTRACING_CHECK = MOVING_PASSABLE_RAYTRACING + "active";
public static final String MOVING_PASSABLE_RAYTRACING_BLOCKCHANGEONLY= MOVING_PASSABLE_RAYTRACING + "blockchangeonly";
public static final String MOVING_PASSABLE_ACTIONS = MOVING_PASSABLE + "actions";
private static final String MOVING_SURVIVALFLY = MOVING + "survivalfly.";
public static final String MOVING_SURVIVALFLY_CHECK = MOVING_SURVIVALFLY + "active";
public static final String MOVING_SURVIVALFLY_BLOCKINGSPEED = MOVING_SURVIVALFLY + "blockingspeed";
public static final String MOVING_SURVIVALFLY_SNEAKINGSPEED = MOVING_SURVIVALFLY + "sneakingspeed";
public static final String MOVING_SURVIVALFLY_SPEEDINGSPEED = MOVING_SURVIVALFLY + "speedingspeed";
public static final String MOVING_SURVIVALFLY_SPRINTINGSPEED = MOVING_SURVIVALFLY + "sprintingspeed";
public static final String MOVING_SURVIVALFLY_SWIMMINGSPEED = MOVING_SURVIVALFLY + "swimmingspeed";
public static final String MOVING_SURVIVALFLY_WALKINGSPEED = MOVING_SURVIVALFLY + "walkingspeed";
public static final String MOVING_SURVIVALFLY_COBWEBHACK = MOVING_SURVIVALFLY + "cobwebhack";
private static final String MOVING_SURVIVALFLY_EXTENDED = MOVING_SURVIVALFLY + "extended.";
public static final String MOVING_SURVIVALFLY_EXTENDED_HACC = MOVING_SURVIVALFLY_EXTENDED + "horizontal-accounting";
public static final String MOVING_SURVIVALFLY_EXTENDED_VACC = MOVING_SURVIVALFLY_EXTENDED + "vertical-accounting";
public static final String MOVING_SURVIVALFLY_FALLDAMAGE = MOVING_SURVIVALFLY + "falldamage";
public static final String MOVING_SURVIVALFLY_VLFREEZE = MOVING_SURVIVALFLY + "vlfreeze";
public static final String MOVING_SURVIVALFLY_ACTIONS = MOVING_SURVIVALFLY + "actions";
private static final String MOVING_SURVIVALFLY_HOVER = MOVING_SURVIVALFLY + "hover.";
public static final String MOVING_SURVIVALFLY_HOVER_CHECK = MOVING_SURVIVALFLY_HOVER + "active";
@GlobalConfig
public static final String MOVING_SURVIVALFLY_HOVER_STEP = MOVING_SURVIVALFLY_HOVER + "step";
public static final String MOVING_SURVIVALFLY_HOVER_TICKS = MOVING_SURVIVALFLY_HOVER + "ticks";
public static final String MOVING_SURVIVALFLY_HOVER_LOGINTICKS = MOVING_SURVIVALFLY_HOVER + "loginticks";
public static final String MOVING_SURVIVALFLY_HOVER_FALLDAMAGE = MOVING_SURVIVALFLY_HOVER + "falldamage";
public static final String MOVING_SURVIVALFLY_HOVER_SFVIOLATION = MOVING_SURVIVALFLY_HOVER + "sfviolation";
// Special (to be sorted in or factored out).
private static final String MOVING_VELOCITY = MOVING + "velocity.";
public static final String MOVING_VELOCITY_GRACETICKS = MOVING_VELOCITY + "graceticks";
public static final String MOVING_VELOCITY_ACTIVATIONCOUNTER = MOVING_VELOCITY + "activationcounter";
public static final String MOVING_VELOCITY_ACTIVATIONTICKS = MOVING_VELOCITY + "activationticks";
public static final String MOVING_VELOCITY_STRICTINVALIDATION = MOVING_VELOCITY + "strictinvalidation";
private static final String MOVING_VELOCITY = MOVING + "velocity.";
public static final String MOVING_VELOCITY_GRACETICKS = MOVING_VELOCITY + "graceticks";
public static final String MOVING_VELOCITY_ACTIVATIONCOUNTER = MOVING_VELOCITY + "activationcounter";
public static final String MOVING_VELOCITY_ACTIVATIONTICKS = MOVING_VELOCITY + "activationticks";
public static final String MOVING_VELOCITY_STRICTINVALIDATION = MOVING_VELOCITY + "strictinvalidation";
public static final String MOVING_NOFALL_YONGROUND = MOVING_NOFALL + "yonground";
public static final String MOVING_YONGROUND = MOVING + "yonground";
public static final String MOVING_SURVIVALFLY_YSTEP = MOVING_SURVIVALFLY + "ystep";
// General.
public static final String MOVING_TEMPKICKILLEGAL = MOVING + "tempkickillegal";
private static final String MOVING_LOADCHUNKS = MOVING + "loadchunks.";
public static final String MOVING_LOADCHUNKS_JOIN = MOVING_LOADCHUNKS + "join";
public static final String MOVING_SPRINTINGGRACE = MOVING + "sprintinggrace";
public static final String MOVING_ASSUMESPRINT = MOVING + "assumesprint";
public static final String MOVING_SPEEDGRACE = MOVING + "speedgrace";
public static final String MOVING_ENFORCELOCATION = MOVING + "enforcelocation";
private static final String MOVING_VEHICLES = MOVING + "vehicles.";
public static final String MOVING_VEHICLES_ENFORCELOCATION = MOVING_VEHICLES + "enforcelocation";
public static final String MOVING_VEHICLES_PREVENTDESTROYOWN = MOVING_VEHICLES + "preventdestroyown";
private static final String MOVING_TRACE = MOVING + "trace.";
public static final String MOVING_TRACE_SIZE = MOVING_TRACE + "size";
public static final String MOVING_TRACE_MERGEDIST = MOVING_TRACE + "mergedist";
private static final String NET = CHECKS + "net.";
private static final String NET_SOUNDDISTANCE = NET + "sounddistance.";
public static final String NET_SOUNDDISTANCE_ACTIVE = NET_SOUNDDISTANCE + "active";
@GlobalConfig
public static final String NET_SOUNDDISTANCE_MAXDISTANCE = NET_SOUNDDISTANCE + "maxdistance";
private static final String NET_FLYINGFREQUENCY = NET + "flyingfrequency.";
public static final String NET_FLYINGFREQUENCY_ACTIVE = NET_FLYINGFREQUENCY + "active";
@GlobalConfig
public static final String NET_FLYINGFREQUENCY_SECONDS = NET_FLYINGFREQUENCY + "seconds";
@GlobalConfig
public static final String NET_FLYINGFREQUENCY_MAXPACKETS = NET_FLYINGFREQUENCY + "maxpackets";
public static final String MOVING_SURVIVALFLY_YSTEP = MOVING_SURVIVALFLY + "ystep";
// General.
public static final String MOVING_TEMPKICKILLEGAL = MOVING + "tempkickillegal";
private static final String MOVING_LOADCHUNKS = MOVING + "loadchunks.";
public static final String MOVING_LOADCHUNKS_JOIN = MOVING_LOADCHUNKS + "join";
public static final String MOVING_SPRINTINGGRACE = MOVING + "sprintinggrace";
public static final String MOVING_ASSUMESPRINT = MOVING + "assumesprint";
public static final String MOVING_SPEEDGRACE = MOVING + "speedgrace";
public static final String MOVING_ENFORCELOCATION = MOVING + "enforcelocation";
private static final String MOVING_VEHICLES = MOVING + "vehicles.";
public static final String MOVING_VEHICLES_ENFORCELOCATION = MOVING_VEHICLES + "enforcelocation";
public static final String MOVING_VEHICLES_PREVENTDESTROYOWN = MOVING_VEHICLES + "preventdestroyown";
private static final String MOVING_TRACE = MOVING + "trace.";
public static final String MOVING_TRACE_SIZE = MOVING_TRACE + "size";
public static final String MOVING_TRACE_MERGEDIST = MOVING_TRACE + "mergedist";
private static final String NET = CHECKS + "net.";
private static final String NET_SOUNDDISTANCE = NET + "sounddistance.";
public static final String NET_SOUNDDISTANCE_ACTIVE = NET_SOUNDDISTANCE + "active";
@GlobalConfig
public static final String NET_SOUNDDISTANCE_MAXDISTANCE = NET_SOUNDDISTANCE + "maxdistance";
private static final String NET_FLYINGFREQUENCY = NET + "flyingfrequency.";
public static final String NET_FLYINGFREQUENCY_ACTIVE = NET_FLYINGFREQUENCY + "active";
@GlobalConfig
public static final String NET_FLYINGFREQUENCY_SECONDS = NET_FLYINGFREQUENCY + "seconds";
@GlobalConfig
public static final String NET_FLYINGFREQUENCY_MAXPACKETS = NET_FLYINGFREQUENCY + "maxpackets";
public static final String STRINGS = "strings";
// Compatibility section (possibly temporary).
@GlobalConfig
public static final String COMPATIBILITY = "compatibility.";
public static final String COMPATIBILITY_MANAGELISTENERS = COMPATIBILITY + "managelisteners";
public static final String COMPATIBILITY_BUKKITONLY = COMPATIBILITY + "bukkitapionly";
public static final String COMPATIBILITY_BUKKITONLY = COMPATIBILITY + "bukkitapionly";
public static final String COMPATIBILITY_BLOCKS = COMPATIBILITY + "blocks.";
// Deprecated (don't use fields from above).
@Moved(newPath = LOGGING_BACKEND_CONSOLE_ACTIVE)
public static final String LOGGING_CONSOLE = "logging.console";
@ -621,28 +620,30 @@ public abstract class ConfPaths {
public static final String LOGGING_INGAMECHAT = "logging.ingamechat";
@Moved(newPath = LOGGING_BACKEND_INGAMECHAT_SUBSCRIPTIONS)
public static final String LOGGING_USESUBSCRIPTIONS = "logging.usesubscriptions";
@Moved(newPath = PROTECT_PLUGINS_HIDE_ACTIVE)
public static final String MISCELLANEOUS_PROTECTPLUGINS = "miscellaneous.protectplugins";
@Moved(newPath = PROTECT_CLIENTS_MOTD_ALLOWALL)
public static final String MISCELLANEOUS_ALLOWCLIENTMODS = "miscellaneous.allowclientmods";
@Moved(newPath = PROTECT_PLUGINS_HIDE_NOCOMMAND_MSG)
public static final String PROTECT_PLUGINS_HIDE_MSG_NOCOMMAND = "protection.plugins.hide.messages.unknowncommand";
@Moved(newPath = PROTECT_PLUGINS_HIDE_NOPERMISSION_MSG)
public static final String PROTECT_PLUGINS_HIDE_MSG_NOPERMISSION = "protection.plugins.hide.messages.nopermission";
@Moved(newPath = PROTECT_COMMANDS_CONSOLEONLY_ACTIVE)
public static final String MISCELLANEOUS_OPINCONSOLEONLY = "miscellaneous.opinconsoleonly";
@Moved(newPath = COMPATIBILITY_MANAGELISTENERS)
public static final String MISCELLANEOUS_MANAGELISTENERS = "miscellaneous.managelisteners";
@Moved(newPath = INVENTORY_OPEN_CHECK)
public static final String INVENTORY_ENSURECLOSE = "checks.inventory.ensureclose";
@Deprecated
public static final String MISCELLANEOUS_REPORTTOMETRICS = "miscellaneous.reporttometrics";
@Deprecated
public static final String BLOCKBREAK_FASTBREAK_MOD_CREATIVE = "checks.blockbreak.fastbreak.intervalcreative";
@Deprecated
public static final String MOVING_PASSABLE_RAYTRACING_VCLIPONLY = "checks.moving.passable.raytracing.vcliponly";
@Deprecated
public static final String FIGHT_CRITICAL_VELOCITY = "checks.fight.critical.velocity";
@Moved(newPath = PROTECT_PLUGINS_HIDE_ACTIVE)
public static final String MISCELLANEOUS_PROTECTPLUGINS = "miscellaneous.protectplugins";
@Moved(newPath = PROTECT_CLIENTS_MOTD_ALLOWALL)
public static final String MISCELLANEOUS_ALLOWCLIENTMODS = "miscellaneous.allowclientmods";
@Moved(newPath = PROTECT_PLUGINS_HIDE_NOCOMMAND_MSG)
public static final String PROTECT_PLUGINS_HIDE_MSG_NOCOMMAND = "protection.plugins.hide.messages.unknowncommand";
@Moved(newPath = PROTECT_PLUGINS_HIDE_NOPERMISSION_MSG)
public static final String PROTECT_PLUGINS_HIDE_MSG_NOPERMISSION = "protection.plugins.hide.messages.nopermission";
@Moved(newPath = PROTECT_COMMANDS_CONSOLEONLY_ACTIVE)
public static final String MISCELLANEOUS_OPINCONSOLEONLY = "miscellaneous.opinconsoleonly";
@Moved(newPath = COMPATIBILITY_MANAGELISTENERS)
public static final String MISCELLANEOUS_MANAGELISTENERS = "miscellaneous.managelisteners";
@Moved(newPath = INVENTORY_OPEN_CHECK)
public static final String INVENTORY_ENSURECLOSE = "checks.inventory.ensureclose";
@Deprecated
public static final String MISCELLANEOUS_REPORTTOMETRICS = "miscellaneous.reporttometrics";
@Deprecated
public static final String BLOCKBREAK_FASTBREAK_MOD_CREATIVE = "checks.blockbreak.fastbreak.intervalcreative";
@Deprecated
public static final String MOVING_PASSABLE_RAYTRACING_VCLIPONLY = "checks.moving.passable.raytracing.vcliponly";
@Deprecated
public static final String FIGHT_CRITICAL_VELOCITY = "checks.fight.critical.velocity";
@Deprecated
public static final String BLOCKBREAK_FASTBREAK_DEBUG = "checks.blockbreak.fastbreak.debug";
}

View File

@ -1034,7 +1034,7 @@ public class NoCheatPlus extends JavaPlugin implements NoCheatPlusAPI {
// Debug information about unknown blocks.
// (Probably removed later.)
ConfigFile config = ConfigManager.getConfigFile();
BlockProperties.dumpBlocks(config.getBoolean(ConfPaths.BLOCKBREAK_FASTBREAK_DEBUG, config.getBoolean(ConfPaths.BLOCKBREAK_DEBUG, config.getBoolean(ConfPaths.CHECKS_DEBUG, false))));
BlockProperties.dumpBlocks(config.getBoolean(ConfPaths.BLOCKBREAK_DEBUG, config.getBoolean(ConfPaths.CHECKS_DEBUG, false)));
}
});
}