This mod is a server-authoritative anti-cheat designed to block common exploits by making the server the source of truth for player actions. It is highly configurable, allowing hosts to tailor the detections to their server's specific mods and balance.
All detected infractions are logged with player details in the BepInEx\plugins\HardAntiCheat\HardAntiCheat_InfractionLog.txt file for server admin review.
⚡ New in v2.0+: Thunderstore auto-whitelisting, human-readable kick messages, vanilla client support, live settings reload, and server-wide broadcast announcements!
ModName (GUID) vVersion for easy blacklisting/whitelisting.[HAC] prefix.BepInEx\config\com.HardAntiCheat.sftwre.cfg, or use the in-game UI.| Mod Name | Status | Description |
|---|---|---|
| CodeTalker | REQUIRED | Handles secure networking for mod verifications. |
| EasySettings | Recommended | Adds an in-game settings menu to configure AntiCheat on the fly. |
| PerfectGuard | Compatible | Compatible soft-dependency for additional exploit protection. |
| Setting | Default | Description |
|---|---|---|
Enable AntiCheat |
✅ | Master switch to enable or disable all anti-cheat modules. |
Disable Detections for Host |
✅ | If true, the player hosting will not be checked. |
Trusted SteamIDs |
Comma-separated list of 64-bit SteamIDs for users who are exempt from checks. | |
Banned SteamIDs |
Comma-separated list of SteamIDs that are banned from joining immediately. | |
Verification Timeout |
25.0 | Seconds the server waits for a client to send their mod list before assuming vanilla. |
Max Log File Size (MB) |
5 | Archives the infraction log on startup if it exceeds this size. |
Configure which mods are allowed, required, or forbidden. All GUIDs are case-insensitive.
| Setting | Default | Description |
|---|---|---|
Enable Required Mods |
❌ | If true, clients MUST have the mods listed in Required Mod GUIDs or be kicked. |
Required Mod GUIDs |
Comma-separated list of Mod GUIDs that clients must have (e.g. com.myserver.requiredmod). |
|
Enable Mod Blacklist |
❌ | If true, kicks clients who have specific GUIDs loaded. |
Blacklisted Mod GUIDs |
Comma-separated list of forbidden Mod GUIDs (e.g. com.cheat.menu). |
|
Enable Mod Whitelist |
❌ | If true, ONLY mods in the Whitelist are allowed. Any unknown mod causes a kick. Overrides blacklist when enabled. |
Whitelisted Mod GUIDs |
Comma-separated list of Mod GUIDs that are explicitly permitted. |
💡 Tip: Use
EnableModWhitelistfor tightly controlled servers. UseEnableThunderstoreWhitelist(below) for "allow all public mods" servers.
Automatically trust mods published on Thunderstore. Reduces manual whitelist maintenance.
| Setting | Default | Description |
|---|---|---|
Enable Thunderstore Whitelist |
❌ | Auto-whitelist all mods published on Thunderstore. Unknown/private mods require manual approval. |
Community Identifier |
atlyss |
Thunderstore community to fetch packages from. |
Block Deprecated Mods |
✅ | Automatically blacklist mods marked deprecated on Thunderstore. |
Refresh Interval (Minutes) |
30 | How often to refresh the Thunderstore package list. |
Cache Timeout (Hours) |
6 | How long to cache individual mod verification results. |
Auto-Whitelist New Mods |
✅ | Automatically add newly discovered Thunderstore mods to the runtime whitelist. |
Unknown Mod Grace Period |
30 | Seconds to wait for API lookup before kicking for unknown mods (only if Thunderstore whitelist is enabled). |
⚡ How It Works:
- On server start, HAC fetches all packages from your Thunderstore community.
- When a player joins, their mods are checked against this pre-loaded cache (instant).
- Unknown mods are authorized first, then verified silently in the background—no handshake timeouts.
- Verified mods are cached for future joins.
Fetch blacklists from external URLs for centralized management.
| Setting | Default | Description |
|---|---|---|
Enable Remote Blacklist DB |
❌ | Fetch a list of blacklisted mods from a URL. |
Remote Blacklist DB URL |
URL to a raw text file containing blacklisted Mod GUIDs (one per line, # for comments). |
Validates player position and physics to prevent speed, teleport, and fly hacking.
| Setting | Default | Description |
|---|---|---|
Enable Teleport Checks |
✅ | Checks if players move faster than physically possible based on distance/time. |
Max Effective Speed |
100.0 | The max speed used for distance calculations. Increase if legit skills cause rubberbanding. |
Movement Grace Buffer |
10.0 | Distance buffer to account for dashes, knockbacks, and lag spikes. |
Movement Time Threshold |
5.5 | Seconds between position samples for speed calculations. |
Teleport Threshold |
50.0 | Distance instantly flagged as a "Teleport" rather than a speed violation. |
Enable Fly Checks |
✅ | Detects players airborne for too long (10s limit) or exceeding max height. |
Enable Speed Stat Checks |
✅ | Prevents players from illegally modifying their base movement speed stat. |
Speed Check Cooldown |
2.0 | Seconds between logging repeated speed violations from the same player. |
Jump Check Cooldown |
2.0 | Seconds between logging repeated jump violations. |
Airborne Check Cooldown |
10.0 | Seconds between logging repeated fly violations. |
Jump Threshold |
8 | Maximum consecutive jumps allowed before needing to touch the ground. |
Validates character progression and resource gain.
| Setting | Default | Description |
|---|---|---|
Enable XP Checks |
✅ | Prevents players from gaining impossible amounts of XP. |
Max XP Gain |
1000000 | Max XP allowed in a single transaction/kill. |
Max XP Rate |
5000000 | Max total XP allowed within the defined time window. |
XP Window |
30.0 | Time window (seconds) for the XP Rate check. |
Enforces cooldowns and prevents macro-spamming of items and actions.
| Setting | Default | Description |
|---|---|---|
Enable Cooldown Checks |
✅ | Prevents using skills faster than their base cooldowns allow. |
Enable Revive Checks |
✅ | Prevents players from calling self-revive or replenish without authorization (Angela's Tear). |
Enable Spam Checks |
✅ | Master switch for input rate limiting (Items, Swaps, Blocks). |
Min Consumable Interval |
0.4 | Minimum seconds between using items (prevents potion spam macros). |
Min Weapon Swap Interval |
0.25 | Minimum seconds between weapon swaps. |
Min Block Interval |
0.1 | Minimum seconds between block inputs (Prevents "Perfect Guard" bots). |
Configure automatic server actions for players who accumulate too many infractions.
| Setting | Default | Description |
|---|---|---|
Enable Auto-Punish |
✅ | Automatically kicks or bans players after the limit is reached. |
Infractions Limit |
5 | Number of warnings allowed before action is taken. |
Action Type |
Kick |
The action to take (Kick or Ban). |
| Setting | Default | Description |
|---|---|---|
Enable Detailed Logs |
✅ | Master switch for detailed infraction logs. |
Log Player Name |
✅ | Include player nickname in logs. |
Log Player ID |
✅ | Include SteamID/netId in logs. |
Log Infraction Count |
✅ | Show warning count (e.g. Warning 3/5) in logs. |
Log Infraction Details |
✅ | Include technical details of the violation. |
[2. Mod Lists]
Enable Mod Blacklist = true
Blacklisted Mod GUIDs = com.cheat.menu,com.speedhack.mod,com.fly.hack
[4. Thunderstore]
Enable Thunderstore Whitelist = true
Community Identifier = atlyss
Block Deprecated Mods = true
Auto-Whitelist New Mods = true
[2. Mod Lists]
Enable Required Mods = true
Required Mod GUIDs = com.myserver.coremod,com.myserver.mapfix
Enable Mod Whitelist = true
Whitelisted Mod GUIDs = com.myserver.coremod,com.myserver.mapfix,com.myserver.qol
[1. General]
Trusted SteamIDs = 76561198012345678,76561198098765432
# Then use EasySettings UI to add/remove without restarting!
EnableThunderstoreWhitelist is enabled.ThunderstoreCommunity matches your server's community (default: atlyss).[HAC] Thunderstore database initialized with X known packages.EnableRequiredMods is false if you want to allow vanilla clients..cfg manually: Ensure the file is saved and not open in another program.[HAC] Settings applied and reloaded successfully.Com.MyMod = com.mymod.com.mod1, com.mod2 → com.mod1,com.mod2 (or trim spaces).[Info :HardAntiCheat] [HAC] Auto-discovered mod 'Tome (cc8615a7-47a4-4321-be79-11e36887b64a) v2.4.1' on Thunderstore and whitelisted it.
[Info :HardAntiCheat] [HAC] Player authorized. 0 mods queued for background Thunderstore verification.
[Warning:HardAntiCheat] [HAC] Kicking Brook. Reason: Unauthorized/Blacklisted Mods Detected: CheatMenu_Public (0a26c5bd-f173-47f8-8f50-006dd6806ce6) v1.4.2
[Info : Console] [17:39] [HAC]: Kicked Brook. Unauthorized/Blacklisted Mods Detected: CheatMenu_Public (0a26c5bd-f173-47f8-8f50-006dd6806ce6) v1.4.2
[Info : Chat] [HAC] Brook was kicked: Unauthorized/Blacklisted Mods Detected: CheatMenu_Public (0a26c5bd-f173-47f8-8f50-006dd6806ce6) v1.4.2
[Info :HardAntiCheat] [HAC] Client 76561199890568449 timed out. Assumed Vanilla. Allowing join.
Discord: https://discord.gg/ePhX4Fb2we
⚠️ Disclaimer: This mod is for educational and server-management purposes only. Use responsibly and respect other players' experiences. The author is not liable for misuse.