Spoiler: Full Information
Welcome to the overview of my plugin, AntiCheatAddition.
This anticheat is different.
It is not a comprehensive anticheat, it does not even fit the definition as a part of a pure anticheat.
But it is one of the most sophisticated addons for an anticheat existing, one which strives to support the main anticheat to a full extent, compensating weak spots of your setup, adding unique checks to protect your server and providing several utilities to make your life easier.
My plugin covers a broad range of applications which reach from convenient automation features like Log-Bot over interesting little abilities like changing the brand of your server shown in F3 mode to highly advanced checks such as Inventory, Scaffold and Tower.
AntiCheatAddition is, as the name implies, supposed to be used with a main anticheat (movement, combat, etc).
It is my hope this plugin can live up to your expectations.
~ Photon
Spoiler: Information on checks
- AutoEat: This check will try to detect AutoEat bots that time eating perfectly with inhuman speed.
- AutoFish: This check will prevent Auto-Fishing mods. It consists of 2 parts which are seperately configurable:
- Inhuman reaction: Detects robot-like reaction times after a fish bites the lure.
- Consistency: Detects consistent reaction times over many fishing events.
- AutoPotion: This check provides a very fast and reliable detection of some AutoPotion cheats.
- Fastswitch: This will detect some Autotool and Scaffold mods.
- ImpossibleChat: This check rejects a message if it was sent while the player had an open inventory, was dead or in other situations that make sending a chat message impossible. This is useful if you want to prevent players chatting with illegal client modifications. The check is disabled by default due to potential incompatibilities with some gamemodes.
- Inventory: This check covers all aspects of inventory checking with its different parts.
- AverageClickHeuristic: This part tries to detect inventory stealers, auto-armor bots and similar modifications that do not randomize their click speed.
- Hit: This part blocks the hitting of other players if an inventory is open. Many Killaura/Triggerbot and AutoArmor clients trigger this check.
- Move: This part detects player-caused movement while an inventory is open.
- MultiInteraction: This check enforces delays between the interactions of a player, thus slowing all inventory cheats down.
- PerfectExit: This part detects chest stealers which close the inventory inhumanly fast after the last item is looted
- Rotation: This part detects head movement while having an open inventory. This check detects lots of AutoArmor / AutoItem mods if those are silent.
- Sprinting: This part detects sprinting and sneaking while having an open inventory
- PacketAnalysis: This check examines the packets sent by a player to detect various modifications.
- Animation: Detects especially bad Killauras, often called Forcefield, which do not swing the players arm
- EqualRotations: Detects invalid angles sent by the client which are equivalent to the last angle. This detects some mods that modify your server-sided view, such as Tower, Scaffold, Killaura and Aimbot.
- IllegalPitch: This checks for derp cheats that send pitch values below -90 or above 90 degrees.
- Scaffold: A check designed to detect Scaffold, a building cheat popular in games like Bedwars. It consists of multiple parts which can roughly be divided into 2 categories:
- Average: This will slow down Scaffold-cheats to a speed that is achievable by legit players
- Behaviour analysis: These checks will try to detect Scaffold by analysing the behaviour of the player detecting most Scaffolds very fast
- Skinblinker: This check detects Skinblinker modifications.
- Teaming: This check alerts you of possible teamers. You can configure it to only flag teams above a certain amount of members.
- Tower: This check will prevent towering up too fast, one of the last movements that is not completely blocked by AAC. Even pretty slow tower-mods will be detected. Important for almost every server with Bedwars/Eggwars or similar.
Sentinel is a comprehensive framework for plugin messages. It allows you to register your own checks for plugin message channels so you can easily detect all mods instantly on join that send them. Writing a check is no more work than writing a few lines in the config.
If you did not understand the previous paragraph, don't worry. Sentinel comes with a wide range of predefined checks you only need to enable. A few noteworthy mentions:
Sentinel has deep integration with the LabyMod client and allows you to simply set your own server tablist banner, control the features of the client and disable voicechat for your server.
Sentinel can detect some cracked versions of the popular ghost client "Vape" upon login as of a leaked backdoor, a feature that is also used in Hypixel's Watchdog and Badlion's GCheat.
Sentinel can disable the WorldDownloader mod.
Another aspect of Sentinel is the prevention of various exploits and removal of illegal items.
Spoiler: Information on Additions
- BrandHider allows you to customize the server brand shown in the debug screen of Minecraft 1.13 clients. This can be helpful to create debug messages, greet the player or display the current server time as BrandHider works with all placeholders of AntiCheatAddition.
Spoiler: Example configuration
This is just a demonstration. In order to achieve this picture I used the following BrandHider configuration:
Code (YAML):
# BrandHider allows you to modify the brand that is shown in the debug screen of minecraft.
# This can be useful if you want to create a custom message or just hide your actual setup.
BrandHider:
# Do you want to enable the BrandHider
enabled: true
# This is the replacement text for the brand.
# You can use the character & for color codes and all placeholders that are available in normal checks
brand: "&k|||&r&d&l&nCurrent time: {time}&r&k|||"
# If you want to display attributes that update over time, e.g. TPS, Ping, Time or Date this will update the values
# in the defined interval.
# Set to 0 to disable the refreshing (recommended if you only use static text or placeholders that do not change)
# Measured in ticks
refresh_rate: 20 - DamageIndicators: This spoofs the actual health of players which is normally sent to all clients and can therefore be displayed by mods and cheat clients. With DamageIndicators enabled all players will appear to have full health for such mods and clients.
- EnchantmentHider: This obfuscates your players' enchantments to prevent players using ESP cheats or resource packs such as VisualEnchantments to correctly identify enchantments.
- Esp: Prevents clients from seeing players through solid blocks by hiding information which cannot be obtained in a legit way. It also considers 3rd person cameras and uses exact hitbox calculations.
- Even though this check is named "Esp" it will also block all other render modifications such as Tracers, Radar and Nametags.
- Sneaking-Hider: This will completely hide sneaking players when you cannot see them directly
- Equipment-Hider: This will censor the equipment of a player when you cannot see him directly, thus making it harder for cheaters to estimate the strength of a potential enemy.
- LogBot automatically deletes log files of your server and AntiCheatAddition that are older than a configurable amount of time. Each category (server, AntiCheatAddition) has its own time-span that can be configured. It also verifies that the deleted files are indeed log files to ensure no accidentially dropped files are deleted.
- AutoFish can only be used on minecraft versions above 1.8
- AutoPotion can only be used on minecraft versions above 1.8
- ESP equipment hiding can only be used on minecraft versions above 1.8
- The Animation part of PacketAnalysis can only be used on minecraft versions above 1.8
- Pingspoof cannot be used on minecraft version 1.17+
- Various exploit sentinels are not available on minecraft version 1.8 or 1.8 and 1.12.
Spoiler: Commands
- /anticheataddition main command to print the version of AntiCheatAddition
- /anticheataddition debug [on/off] toggles the debug messages in chat
- /anticheataddition info <player> prints an overview of all violations a player has.
- /anticheataddition setvl <player> <module_id> <vl> set the vl of a player for testing purposes
- /anticheataddition tablistremove <player whose tablist is affected> <player that will be removed> [ticks] removes a player from another player's tablist. Can be helpful for testing and detecting killauras.
- anticheataddition.bypass.* allows you to bypass all checks and sentinels.
- If you want to give permission to bypass a specific check, use the format given by the config (in this example the hit part of Inventory):
- anticheataddition.bypass.anticheataddition_inventory.parts.hit
- anticheataddition.bypass.sentinel.* allows you to bypass all sentinel checks.
- If you want to give permission to bypass a specific sentinel, proceed as with normal checks, eg.:
- anticheataddition.bypass.sentinel.custom.<SENTINELNAME>
- anticheataddition.debug allows for seeing debug messages in chat if enabled in the config. Also allows access to the debug command to toggle these messages.
- anticheataddition.info gives access to the info command which prints all violations a player has.
- anticheataddition.setvl allows access to the setvl command.
- anticheataddition.tablistremove allows a player access to the tablistremove command.
- For setup support, use the #anticheataddition channel on the AAC Discord
- Please use the official Issue-Tracker if you find issues in the plugin or want to request features.
- Relinquished
- Aquatrooper
Donations are always appreciated
The full list of supported mods and actions can be found on the bottom of the config-gist.
The AntiCheatAddition config is heavily commented to explain every option and configurable feature in-depth. For simplicity, AntiCheatAddition 's config has an identical layout to the AAC config and functions the same with command configuration.
Warning: AntiCheatAddition does not auto-update config values, so make sure you check the config revisions after each update and keep up with changes.
Here you can see the default config part for Inventory, the latest complete config.yml is available here.
Code (YAML):
# This check monitors inventory interactions of players.
Inventory:
# Do you want to enable the Inventory check?
enabled: true
# Control the different parts of Inventory
parts:
# This part detects bot-like behaviour with constant times between inventory clicks.
# This is supposed to detect simple chest stealer bots which do not randomize the click delays.
# NOTE: If you allow inventory sorting mods of any kind make sure to disable this part.
#
# This part will add 20-70 vl (this check is quite slow and is only processed every 16 clicks on items) depending on
# the amount of misclicks and the time between. This will ensure that players which click excessively fast - e.g. in
# the beginning of SurvivalGames will not get as many vls as they click on a lot of empty slots. Slow clicking
# also results in less vl as a slow click rate does not give you a huge advantage and is likely a false positive.
AverageHeuristic:
# Do you want to enable the AverageHeuristic part?
enabled: true
# If a player has a ping higher than this value he bypasses the check
# Please make sure that you have some pingspoof protection enabled if you use this feature
# Set this to -1 to disable
max_ping: 400
# The minimum TPS the server must have to activate this check
# Low TPS will cause an extreme amount of false positives.
min_tps: 18.5
# This part flags hitting while the inventory is open.
# This part will add 20 vl.
Hit:
# Do you want to enable the Hit part?
enabled: true
# Violation before AntiCheatAddition starts to cancel the hits.
# Set this to 0 to never cancel hits.
cancel_vl: 60
# The move part detects movement when a player is still in his inventory.
# This part will add 5 vl when a player moves illegally and 20 vl when a player jumps illegally.
Move:
# Do you want to enable the Move part?
enabled: true
# Violation before AntiCheatAddition starts to cancel the movement.
# Set this to 0 to never cancel movement.
cancel_vl: 60
# The minimum TPS the server must have to activate this check
# Low TPS will cause an extreme amount of false positives.
min_tps: 19.5
# This is the time in milliseconds in which AntiCheatAddition will not check a player after a teleport.
# Increase this if you have false positive with high-ping players after teleports.
# Please note that the definition of teleport is quite broad, including e.g. ender pearls, teleport commands,
# respawns, etc.
teleport_bypass_time: 900
# Analogous to the option above this only applies to world changes which usually take more time to process.
world_change_bypass_time: 2000
# This allows to add more lenience on servers with very high-ping players by stretching the no-punish time after
# opening an inventory (in milliseconds).
# Normal connections are already covered by the default values and are internally exempt for 240ms.
lenience_millis: 0
# The MultiInteraction part prevents players from moving items too fast.
# This part will add 1 to 8 vl, depending on the severity of the violation.
MultiInteraction:
# Do you want to enable the MultiInteraction part?
enabled: true
# Violation before AntiCheatAddition starts to cancel the inventory interactions.
# Set this to 0 to never cancel interacts.
cancel_vl: 25
# If a player has a ping higher than this value he bypasses the check
# Please make sure that you have some pingspoof protection enabled if you use this feature
# Set this to -1 to disable
max_ping: 400
# The minimum TPS the server must have to activate this check
# Low TPS will cause an extreme amount of false positives.
min_tps: 18.5
# This part will detect perfectly closed inventories to detect chest stealers which automatically close an inventory
# once it is empty.
# This part will add 20 to 40 vl depending on the severity of the violation.
PerfectExit:
# Do you want to enable the PerfectExit part?
enabled: true
# The minimum TPS the server must have to activate this check
# Low TPS will cause an extreme amount of false positives.
min_tps: 18.5
# How many suspicious interactions should Inventory count as legit?
# The value must be greater or equal to 0.
violation_threshold: 5
# The rotation part detects head movement while having an open inventory.
# This part will add 1 vl.
Rotation:
# Do you want to enable the Rotation part?
enabled: true
# This is the time in milliseconds in which AntiCheatAddition will not check a player after a teleport.
# Increase this if you have false positive with high-ping players after teleports.
# Please note that the definition of teleport is quite broad, including e.g. ender pearls, teleport commands,
# respawns, etc.
teleport_bypass_time: 900
# Analogous to the option above this only applies to world changes which usually take more time to process.
world_change_bypass_time: 2000
# This part detects inventory interactions while a player is sprinting or sneaking.
# This part will add 30 vl.
Sprinting:
# Do you want to enable the Sprinting part?
enabled: true
# Violation before AntiCheatAddition starts to cancel the inventory interactions.
# Set this to 0 to never cancel inventory interactions.
cancel_vl: 110
# Map of violation levels to command
thresholds:
110: "<YOUR_STAFFCHAT_COMMAND> {player} in {world} is suspected for inventory cheats."
160: "<YOUR_STAFFCHAT_COMMAND> {player} in {world} is highly suspected for inventory cheats."
200: "kick {player} Inventory cheats."
Spoiler: Multi-command-thresholds
You can execute multiple commands per vl, just use the same layout like in aac, i.e.:
Code (YAML):
# Map of violation levels to command
thresholds:
55: "<YOUR_STAFFCHAT_COMMAND> {player} in {world} is suspected for inventory cheats."
80: "<YOUR_STAFFCHAT_COMMAND> {player} in {world} is highly suspected for inventory cheats."
100:
- "kick {player} Inventory cheats."
- "<YOUR_STAFFCHAT_COMMAND> {player} in {world} has been kicked for inventory cheats."
Spoiler: Placeholders
- {date} will be replaced with the current date (day, month and year)
- {player} will be replaced with the affected player's name
- {ping} will be replaced with the ping of the detected player
- {server} will be replaced with the server name (helpful for cross-server notification setups)
- {time} will be replaced with the current time (hour, minutes and seconds)
- {tps} will be replaced with the current server tps
- {world} will be replaced with the world in which the violation took place
AntiCheatAddition requires ProtocolLib.
AntiCheatAddition is only compatible with the "tested versions" on top of this page. Generally, only the last sub-version (e.g. 1.16.5 for 1.16) is compatible.
This plugin is not compatible with reloads. Please restart your server.
While AntiCheatAddition will function on most major release versions of MC, more recent versions will generally run better since more tools for optimizing have become available.
Please note that AntiCheatAddition utilizes bStats metrics to see usage statistics and general trends. Its privacy policy is available here. You can opt out of bStats in its config which will be generated in the plugin's configuration folder on the first startup.
You will need at least Java 17 to run AntiCheatAddition.