s0apysfederati0n-HardAntiCheat icon

HardAntiCheat

Anti-cheat plugin for Atlyss multiplayer. (In Public Testing)

Last updated 2 weeks ago
Total downloads 582
Total rating 1 
Categories Mods Tools Tweaks
Dependency string s0apysfederati0n-HardAntiCheat-2.5.3
Dependants 1 other package depends on this package

This mod requires the following mods to function

Nessie-EasySettings-1.1.8 icon
Nessie-EasySettings

A mod API for easily adding options to the settings menu.

Preferred version: 1.1.8
BepInEx-BepInExPack-5.4.2304 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2304
Marioalexsan-PerfectGuard-1.1.0 icon
Marioalexsan-PerfectGuard

Work in progress anti-exploit plugin for Atlyss multiplayer.

Preferred version: 1.1.0
Soggy_Pancake-CodeYapper-2.2.0 icon
Soggy_Pancake-CodeYapper

A simple library to abstract away networking

Preferred version: 2.2.0

README

HardAntiCheat

A powerful, configurable, server-side anti-cheat engine for Atlyss.

Join the Discord Community

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!


✨ Key Features

  • 🔐 Server-Authoritative Verification: All checks run on the server; clients cannot bypass them.
  • 🧩 Mod List Verification: Via CodeTalker, verifies client-loaded mods against blacklists/whitelists/Thunderstore.
  • 🌩️ Thunderstore Integration: Auto-whitelists all mods published on Thunderstore; blocks deprecated/flagged mods.
  • 👤 Human-Readable Logs: Kick messages show ModName (GUID) vVersion for easy blacklisting/whitelisting.
  • 🎮 Vanilla Client Support: Players without mods can join seamlessly; only modded clients are verified.
  • ⚙️ Live Settings Reload: Change configs in-game via EasySettings—no restart required.
  • 📢 Server Broadcasts: Kick/ban announcements appear in cyan chat for all players via [HAC] prefix.
  • 🚀 Background Verification: Unknown mods are verified asynchronously after player joins—no handshake timeouts.
  • 🔤 Case-Insensitive Matching: GUID lists work regardless of capitalization in config.
  • 🛡️ Comprehensive Detections: Movement, XP, cooldowns, spam, revive, teleport, fly, and more.

Instructions

  1. Install Dependencies: This mod requires CodeTalker.
  2. Optional UI: Install EasySettings to configure the mod in-game via the "HAC Settings" tab.
  3. Run & Config: Run the game once to generate the config file at BepInEx\config\com.HardAntiCheat.sftwre.cfg, or use the in-game UI.

Dependencies & Recommendations

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.

Configuration Settings

1. General

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.

2. Mod Lists

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 EnableModWhitelist for tightly controlled servers. Use EnableThunderstoreWhitelist (below) for "allow all public mods" servers.

3. Thunderstore Integration

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:

  1. On server start, HAC fetches all packages from your Thunderstore community.
  2. When a player joins, their mods are checked against this pre-loaded cache (instant).
  3. Unknown mods are authorized first, then verified silently in the background—no handshake timeouts.
  4. Verified mods are cached for future joins.

4. Remote Database

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).

5. Movement Detections

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.

6. Stats & XP

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.

7. Combat & Spam

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).

8. Punishments

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).

9. Logging

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.

Example Config Snippets

Allow All Thunderstore Mods + Block Known Cheats

[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

Require Specific Mods + Strict Whitelist

[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

Trusted Admins + Live Reload

[1. General]
Trusted SteamIDs = 76561198012345678,76561198098765432
# Then use EasySettings UI to add/remove without restarting!

Troubleshooting

❓ "Player kicked for unknown mod but it's on Thunderstore!"

  • Ensure EnableThunderstoreWhitelist is enabled.
  • Check ThunderstoreCommunity matches your server's community (default: atlyss).
  • Wait ~30 seconds after server start for the initial cache fetch.
  • Check logs for [HAC] Thunderstore database initialized with X known packages.

❓ "Vanilla players getting kicked on timeout!"

  • Ensure EnableRequiredMods is false if you want to allow vanilla clients.
  • Vanilla clients don't respond to the mod request—they time out and are auto-authorized.

❓ "Settings not applying after edit!"

  • If using EasySettings: Click "Apply Settings" in the HAC tab.
  • If editing .cfg manually: Ensure the file is saved and not open in another program.
  • Check logs for [HAC] Settings applied and reloaded successfully.

❓ "GUID not matching even though it's in the list!"

  • All GUID lists are case-insensitive now. Com.MyMod = com.mymod.
  • Ensure no extra spaces: com.mod1, com.mod2com.mod1,com.mod2 (or trim spaces).

Log Examples

✅ Successful Join (Thunderstore Mod)

[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.

⚠️ Kick Message (Human-Readable)

[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

🎮 Vanilla Client Join

[Info   :HardAntiCheat] [HAC] Client 76561199890568449 timed out. Assumed Vanilla. Allowing join.

Contributing & Support

  • 🐛 Bug Reports: Open an issue on GitHub or join the Discord.
  • 💡 Feature Requests: We welcome suggestions—especially for new detection types!
  • 🔧 Pull Requests: Please ensure code follows the existing style and includes tests if possible.

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.