[Discontinued] SoaromaSAC | Lightweight Cheat Detection System for Java & Bedrock icon

[Discontinued] SoaromaSAC | Lightweight Cheat Detection System for Java & Bedrock -----

Free simple, lightweight anti-cheat for 1.17 - 1.19 | Java & Bedrock cheat detection



[​IMG]

This resource is now discontinued, it is time to let Soaroma rest, she got sleepy - I may revamp Soaroma one day, however its not going to be updated anytime soon. Thank you to all who supported me throughout the years, see you next time.

General


SoaromaSAC is a simple anti-cheat plugin to detect and remove cheaters from your server. SAC has an extensive amount of configurable options that allow you to customize the anti-cheat that suits your server's needs. This plugin is meant to be used in passive servers such as skyblock, survival and so on. This is not a PVP anti-cheat, since this anti-cheat is more focused on movement detection and on being performance efficient and friendly. With a total of ~67 checks, ~53 for movement, ~2 for combat, ~6 for world and ~4 for other. This anti-cheat not only focused on cheat detection but also includes moderation capabilities.

[​IMG]


Cheats Detected

Movement

  • Flight A, B, C, D, E
  • Bunny Hop A, B
  • Glide A B
  • Fast Climb A
  • Fluid Walk A, B, C, D, E (Jesus)
  • NoFall A
  • Speed A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q
  • NoSlowDown A, B, C, D
  • Spider A, B
  • Step A
  • Elytra Flight A B (Using an elytra for an extended period of time without using a firework)
  • Irregular Startup A B
  • Median Speed A
  • BadPackets A
Combat
  • Reach A
  • Criticals A
World

  • Irregular Placement A (Place blocks mid-air)
  • Reach Break A
  • Reach Place A
  • Nuker A
Other

  • IrregularEventCount A B (Timer, detects >= 1.1x)
  • Regen x1 A
  • Auto Clicker A B
Experimental Checks - disabled upon default configuration
  • Step B
  • IrrMovement A B
  • Baritone A, B, C (May take a while to flag, depending on configuration)
  • GhostHand A
  • Xray A (Optional pre-done configuration in the discord server)
Experimental Checks - enabled upon default configuration
  • Semi Prediction A B
Note that checks may very well detect other cheats as well due to similar movements, there are more checks than listed above but some are not displayed due to being disabled in configuration or the check is enabled but too insensitive to be displayed on the list.


[​IMG]

Permissions

  • sac.bypass {Bypass every check} OR sac.bypass.[checkname][type] {[checkname] being speed or whatever is set inside cheat-names, and the [type] being a etc, example, sac.bypass.speede}
  • sac.notify {Violation messages}
  • sac.notifykick {Notify admins when a kick occurs}
  • sac.reload {Reload configuration}
  • sac.alertCommandGet {For the command sacnotify}
  • sac.gui.admin
  • sac.kick
  • sac.ban
  • sac.gui
  • sac.warn
  • sac.mute
  • sac.unban
  • sac.freeze
  • sac.ping
  • sac.user {For sacuser}
  • sac.hashclear
  • sac.report
  • sac.reportRecieve {When a user types a report, players with this permission get the report}
  • sac.reportList
  • sac.display.custompayload {For /sacppicp}
  • sac.punish.bypass [to bypass staff commands, such as sacfreeze, sacgui, etc]
  • sac.replay
  • sac.startup.choose for /sacconfigchoose
  • sac.history for /sachistory
  • sac.sacvio for /sacvio
Commands

  • sacreload
  • sacuser <player> {Displays certain information about the player}
  • sacnotify <disable/enable> {Violation messages}
  • sacgui <player> {Punishment GUI}
  • sacmute <player>
  • sackick <player>
  • sacwarn <player> <reason>
  • sacunban <player>
  • sacping <player>
  • sacadmin
  • sacfreeze <player>
  • sachashclear
  • sacreport <reason> {All reports are logged inside of a file}
  • sacreports <number> {View X amount of recent reports}
  • sacppicp <player>
  • sacreplay <player-uuid> <dd.mm.yyyy>
  • sacconfigchoose [ID]
  • sacvio {view max recent violations in a gui}
  • sachistory <playername> <number> {View X amount of logs}
Features

  • Receive a violation every X amount of violations (Auto Disabled)
  • Freeze System
  • Punishment GUI
  • Automatic kicking and banning (Banning Auto Disabled)
  • Report System
  • Hex colour codes
  • Ping command for a target player
  • Enable or disable violation messages with a command
  • Automatic clearing violations (Auto Disabled)
  • All messages are customizable
  • Kick Logging
  • Violation Logging
  • Report Logging
  • Cancel actions (Auto Enabled, called 'cancelEventIfHacking' in configuration)
  • Severity of check flagged within violation message (low, medium, high)
  • Each check is configurable and can be easily changed or disabled if needed
  • Discord webhook integration
  • TPS Checker (Enable AC above a certain TPS or lower than certain TPS)
  • PlaceholderAPI [%current-violations% %total-violations% %warns%]
  • GUI Configuration
  • Asynchronous checks
  • No dependencies
  • Blacklisted worlds option
  • Specific check permissions
  • Can ignore java/bedrock players of your choosing inside config.yml
[​IMG]

Extra Information


Here is a timings report - 60 players were online [1.16.5, version 1.0.01]
All checks listed in detected were enabled + configuration options checking for item attributes (This is a severely outdated version, and chances are it takes even less of tick now-versions)
[​IMG]
It used 0.17% of tick, around 0.002% ~ 0.003% per player, so in short, incredibly lightweight

Code (Java):
import me.korbsti.soaromaac.api ;

//Register the events as you would for a normal event
//enableAPI in config has to be set to true to use the API
//p.setDisabler(x) is for disabling the AC for a player x amount of ticks

@EventHandler
public void onFlag (SoaromaFlagEvent event ) {
     Player p = event. getFlaggedPlayer ( ) ;
}

// This event is only fires when a player gets froze/kicked/muted/banned by an admin
@EventHandler
public void onPunish (SoaromaAdminPunish event ) {
      String punishType = event. returnType ( ) ;
}


// Wait a second  how do I use the p.setDisabler outside of the soaroma flag event?
// Well heres how
// Add SoaromaSAC to your BUILD PATH
// No there is no maven, so you have to add it to your build path
// Oh and don't forget to add 'SoaromaSAC' to your softdepend or depend

import me.korbsti.soaromaac.Main ;
import me.korbsti.soaromaac.api.SoaromaAPI ;

public class YourClass extends JavaPlugin {


public SoaromaAPI api ;

@Override
public void onEnable ( ) {
            if (Bukkit. getPluginManager ( ). getPlugin ( "SoaromaSAC" ). isEnabled ( ) ) {
               soaromaAPI = new SoaromaAPI ( (Main ) (Bukkit. getPluginManager ( ). getPlugin ( "SoaromaSAC" ) ) ) ;
            }
 
}

@Override
public void onDisable ( ) {

}

@EventHandler
public void soemRandomEventThing (SomeRandomEvent e ) {
        api. setDisabler (e. getPlayer ( ), 100 ) ;
    // now for 100 ticks the player wont be checked for cheats at all
}

@EventHandler
public void soaromaAutoKick (SoaromaAutoKick e ) {

}


}




 
Turn 'cancelEventIfHacking' in config to false
Yes
Either make the check to be more insensitive in config or report to me in the discord server
Make sure you are using a 1.17 or 1.18 server and put the jar file inside the /plugins folder, restart the server and now the anti-cheat is enabled, there are no dependencies
Yep, but make sure to keep forward-player-ping set to true in geysers configuration
Make sure the server is 1.17 and the AC is enabled, default kick occurs at 50 violations. Also make sure you don't have the permission sac.bypass and you're in survival
Turn 'spacedViolationMessages' to true in configuration
Make sure it isn't a false, if it is not a false, report to the discord server
Turn checkServerTPS and invertTPS to true
Turn checkServerTPS to true
Set the OPS permission of sac.bypass to false, it is recommended you use LuckPerms
Go into config and enable it
I have no idea, thats up to you
Nein
Yes
In short: no
Increase these numbers in config by 1 or 2
inAirJumpUntilHackingA: 4.0
inAirUpwardUntilHackingB: 11.0
As not many people know how to configure the checks and first impressions are important so, I disabled the checks that were more or less iffy
If you found a bypass, report it to the discord server and cause me many hours of pain to patch the bypass
You need to have the permission sac.notify, with a permissions plugin to handle permissions
flight (E), noSlowDown (C) and nuker (A) will never false due to the circumstances these are made to detect
Read startup messages
You are met with startup messages from the plugin, follow them
Code (YAML):

You will be prompted with a message in-game when using this anti-cheat, it will instruct you on how to get it
 

Pre-configured configs are in the plugin itself using the command /saconfigchoose, as you will be prompted with a message in-game. You can adjust any config to your own liking, this AC is heavily based on per-server-customization

Discord server: https://discord.gg/GK3rmrze2Q <-- Support, False flags can be reported here

Few checks are open-sourced, you can find them here: checks

SAC replay addon -> sacaddons

Soft depend -> Floodgate [For bedrock players]


You may upload this resource on other websites without my permission if you desire, you do not need to credit me


[​IMG]

Disclaimers

This plugin may not be compatible with other plugins that alter player movement or actions too much, by default this anti-cheat is suited towards vanilla player movement only. For example, if you want this to be compatible with mcMMO, variable changes would have to occur - for more information about that there is a FAQ channel in discord. Players are given grace for a certain amount of time upon teleporting and logging in for a few seconds to prevent false flags from occurring. I won't say this anti-cheat is perfect because it is not, bypasses, false flags and bugs may occur. If any of those occur, it would be appreciated if you told me so I can patch/fix them, but the majority of this AC is on the more stable side now.

Note if you use any plugins that break trees entirely ex. Timber or mcMMO, the variable reachBlockBreakNum in configuration has to be increased to 200.0 to stop falses occurring.

The "Recommended" & "Movement" config will NOT work on a local server, do not use the "Recommended" & "Movement" config to test the AC on a local server it is only meant for servers that are NOT locally hosted, use any other config if it is a local hosted server


[​IMG]
Resource Information
Author:
----------
Total Downloads: 54,189
First Release: Jan 10, 2021
Last Update: Apr 17, 2023
Category: ---------------
All-Time Rating:
87 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings