Anti-Cheese ServerConfig
Is an experience abuse control system. Anti-Cheese allows you to control certain exploitable elements of XP gains to reduce the xp gained when using exploits. This system is intended to be open and flexible to allow you as the configurator flexible control.
Anti-Cheese has 3 types of trackers:
- AFK Tracking
- Diminuation Tracking
- Normalization Tracking
All tracker types are Event-based. this means that you control how certain events are dealt with. This also means you can have different configuration for each event type and each event type will have its own tracker to manage that player's restrictions.
AFK Tracking
When players are not moving, they will begin to accrue AFK time. when that time reaches the configured threshold, they are considered AFK and will be penalized accordingly. The longer they remain AFK, the greater the penalty.
[AntiCheese]#if set to true, being AFK can take away XP. Otherwise, the player eventually earns nothing.AFK_Can_Subtract = false[AntiCheese.AFK][AntiCheese.AFK.EVENT_TYPE]#if an event passes an xp source, you can use this to filter the#configuration to only this item/block/entitysource = ["some:thing"]#How long must a player be AFK before this starts to reduce xpmin_time_to_apply = 200#what percent of xp is reduced per half-second spent afkreduction = 0.1#when the player is not afk, how much of their accrued time#is reduced each half-second they are not afk.cooloff_amount = 10#tolerance determines how far from their last position a player#must be to no longer be considered AFK. zero means they are#only considered AFK if in the exact same locationtolerance_flat = 0#Determines if the player's facing is factored into whether they#are AFK. If set to false, a player can stand in one place but#move their camera angle and still be considered AFK. If true,#moving the camera is considered not AFK.strict_tolerance = true[AntiCheese.AFK.OTHER_EVENT_TYPE]min_time_to_apply = 20 #one secondreduction = 1.0 #immediate complete loss of xpcooloff_amount = 1 #2 seconds of afk time reduced every second
Heads up!
Note: RECIEVE_DAMAGE and DEAL_DAMAGE events will only work with damage from entities. Damage from other sources such as cactus or drowning will not be detected by AFK anti-cheese.
Diminuation Tracking
Is when a player earns the same type of xp in rapid succession. Common examples include riding, and submersion. When configured, diminishing xp causes xp to become less and less, over time. Additionally, the reduction will persist for a set duration so the user has to wait before gaining that xp at full strength again. This can be used in a similar fashion to AFK tracking but does not require the user to be still. Both can be used together if needed.
[AntiCheese][AntiCheese.DiminishingXP][AntiCheese.DiminishingXP.EVENT_TYPE]#if an event passes an xp source, you can use this to filter the#configuration to only this item/block/entitysource = ["some:thing"]#How long without triggering the same event before the#player earns full xp again. 1 = 0.5 secondsretention_duration = 200#what percent of xp is reduced per half-second each event procreduction = 0.1[AntiCheese.DiminishingXP.OTHER_EVENT_TYPE]retention_duration = 200reduction = 0.5 #half xp on second proc and no xp on the next
Normalization Tracking
Is the prevention of extreme values. Examples include sprinting and swimming where rapid acceleration can cause huge spikes in xp. Normalization creates tolerance thresholds for how quickly xp can grow and keeps xp earned within those ranges. Much like diminuation, there is a retention time for how long a normalized value is retained before being reset. Normalization uses both a flat and percentage tolerance to handle extreme values. for example a 10% increase tolerance on 10 is 1, but 20 on 200. A flat tolerance of 15 would permit the 10 on 100, but limit the 200 xp to 15. In this sense, flat tolerance is the max increase in a single proc, whereas percent scales with the value.
[AntiCheese][AntiCheese.Normalization][AntiCheese.Normalization.EVENT_TYPE]#if an event passes an xp source, you can use this to filter the#configuration to only this item/block/entitysource = ["some:thing"]#How long without triggering the same event before the#player earns full xp again. 1 = 0.5 secondsretention_duration = 200#the maximum flat increase in xp allowedtolerance_flat = 10#the maximum percent increase in xp allowedtolerance_percent = 0.1[AntiCheese.Normalization.OTHER_EVENT_TYPE]retention_duration = 200tolerance_flat = 15tolerance_percent = 0.1