SEARCH Anticheat 1.8 - 1.12 1.7.6

Searching, eliminating and restraining cheats/hacks

  1. Jumper251
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12

    SEARCH

    SEARCH is an addon for the plugin NoCheatPlus. It improves the checks but also comes with a lot of new modules and features like banwaves and advanced violation logging.
    It is designed to prevent false setbacks for a smoother and improved gameplay.

    Compatible with Spigot 1.8.8, 1.9.4, 1.10, 1.11, 1.12 (some checks might not work on 1.8.8)

    This Plugin needs ProtocolLib and NoCheatPlus.



    Features


    Violation logging: SEARCH is able to log all the violations into a MySQL database. With this feature you can lookup all the players data even after a long time and you can use the given ID to refer to a log in ban or kick reasons.

    Banwaves: If enabled SEARCH uses Banwaves to store all detected hackers in it. These Banwaves are executed every 30 minutes by default. With this feature it is harder for hackers to know what they were banned for.

    Configurable: Nearly everything can be configured in the config file, such as general settings (Banwaves, Messages ...) and also specific settings for the modules. Every module can be disabled and every action and command can be changed.

    Automated detections and punishments: When everything is configured SEARCH can detect and block hacks automated and is also able to kick and ban players when they reach a specific amount of violations.

    Lightweight: SEARCH is a small plugin with a lot of features. It does not use much CPU and all connections are asynchronous.

    BungeeCord support: SEARCH has a feature for BungeeCord support. It is able to synchronize the players violation data with a BungeeCord server so that all the Spigot servers have the same data. It can also send the notifications to BungeeCord or execute commands on the BungeeCord server. To use this feature you need to put the plugin in the plugins folder of your BungeeCord server.
    If you need help with the configuration of this feature take a look at the Configuration section below.

    Replays: SEARCH is able to automatically create replays when a player is suspected of hacking, these replays can be viewed later.
    Requires: https://www.spigotmc.org/resources/advancedreplay-1-9-1-12.52849/ (Only 1.9+)


    Everything that NoCheatPlus can block

    • Packet abuse hacks (Morepackets, Blink ...)
    • Waterwalk
    • Glide
    • Most types of Speed/Longjump
    • Combat Reach
    • Killaura or similar
    • Inventory Actions (Like hitting with an open inventory)
    • Multiple Actions (CivBreak, eating & hitting and more)
    • Autoclicker
    • Invalid Vehicle Movement (BoatFly ...)
    • Some types of Pingspoof
    • Can disable: Damage indicators, Labymod and Worlddownloader
    • Removes items with invalid NBT data, enchantments or potions.
    If you encounter any bypasses please report them to me.



    Configuration


    In the config.yml you can configure almost everything if you want to enable logging of violations you also need to set up the mysql.yml.
    If you want to disable a notification or message just leave it empty.

    Example config with some explanations:
    Code (Text):

    # General plugin settings
    general:

      # These points can be used to cancel a check
      # when the server or the player is lagging (tps and ping)
      # The higher the points are the more the server/player is lagging
      # Dont set the value below 10 or above 90
      cancel_points: 40
     
      # Should the plugin log violations to a mysql database?
      # If enabled you need to configure the mysql.yml
      log_violations: false
     
      # This message is displayed to a player when kicked
      # Id only works when log_violations is enabled
      kick_message: Illegal client modifications &e[{id}]
     
      # The message the staff will get when a player is kicked
      kick_notify: '&6{name} &7has been kicked for &cillegal client modifications.'
     
      # This command will be executed to ban a player
      # This can be overridden with the API
      # Id only works when log_violations is enabled
      ban_command: ban {name} Illegal client modifications &e[{id}]
     
      # After how many minutes should SEARCH reset the strikes?
      invalidate_strikes_min: 200
     
      # After how many hours should SEARCH reset the flags?
      invalidate_flaggs_hours: 12
     
      # Should SEARCH automatically create replays?
      # https://www.spigotmc.org/resources/advancedreplay-1-9-1-12.52849/
      create_replay: false

      # Should SEARCH check for new updates?
      update_notifications: true

      ban_wave:
        # Should SEARCH ban players in frequent waves?
        enabled: false
     
        # The delay between the banwaves
        interval: 30
     
        # Should every player get the message?
        broadcast: false
     
        # The message sent when the banwave is executed
        message: '&6{amount} &7players have been banned for &cillegal client modifications.'

      bungee:
        # Should SEARCH connect to a BungeeCord server?
        enabled: false
     
        # The IP of the BungeeCord server
        bungee_host: localhost
     
        # The port of the BungeeCord socket server
        # NOT the main BungeeCord port (the port in the config.txt)
        # By default this works without changes
        bungee_port: 5342
     
        # This key must match the key in the BungeeCord config.txt
        # Located in your BungeeCord plugins folder plugins/SEARCH/config.txt
        key: <Your Key>
     
        # Should SEARCH send notifications over BungeeCord?
        broadcast_message: false
     
        # Should SEARCH execute the ban command on BungeeCord?
        execute_command: true
     
        # Should SEARCH synchronize the violation data?
        synchronize_data: true

    #Configuration of the modules
    modules:
      # The Global module is striked every time another module is flagged
      # so you can define actions here if a player violates more than 1 module
      Global:
        # Enable the module?
        enabled: true
     
        # After how many flagged modules should SEARCH run the action?
        strikes: 4
     
        # What should SEARCH do after the strikes have been reached?
        # Available actions: none, kick, reset, reset_kick, ban
        action: BAN
     
      # Improvement to the NoCheatPlus module (some false positives)
      # The following basic settings are only explained once
      FlyNCP:
        # Enable the module?
        enabled: true
     
        #How many strikes does the module need to be flagged?
        strikes: 50
     
        # What should SEARCH do after the strikes have been reached?
        # Available actions: none, kick, reset, reset_kick, ban
        # Actions defined in custom_actions.yml can also be used
        action: NONE
     
        # The notification message
        message: 'Suspicious movement: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Prevents players from walking on water
      Waterwalk:
        enabled: true
        strikes: 30
        action: NONE
        message: 'Waterwalk: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Prevents some packet exploits (Blink, Morepackets ...)
      # This check might have false positives when a player is lagging
      # therefore exempt_log should stay true
      BadPackets:
        enabled: true
        strikes: 20
        action: NONE
     
        # Use this to exempt the check from logging
        exempt_log: true
     
        message: 'BadPackets (or lagging): &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # Maximum packets a player can send in 1 second
          packet_threshold: 35
     
          # Maximum packets a player can send in 1 second (when flagged)
          packet_flagged_threshold: 28
     
          # After how many packets a player gets striked
          packet_strike_threshold: 70
     
          # The maximum difference between the move and keepalive packet (seconds)
          max_movepacket_diff: 2
          max_keepalive_diff: 5
     
      # Prevents players from using glide hacks
      Glide:
        enabled: true
        strikes: 30
        action: NONE
        message: 'Glide: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Prevents some types of killaura (easy to bypass)
      Killaura:
        enabled: true
        strikes: 20
        action: NONE
        message: 'Killaura: &6{name} &7Result: &6{kills}&7/&6{max_kills} &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # Waiting time between checks (seconds)
          check_wait: 10
     
          # Needed hits to start the check
          needed_hits: 2
     
          # Maximum of bots that are spawned
          max_bots: 16
     
          # How many kills to display a notification?
          kill_threshold: 3
     
          # How many kills to flag the module?
          kill_max_threshold: 8
     
      # Checks items to prevent some types of crash items or kill potions
      ItemCheck:
        enabled: true
        strikes: 0
        action: NONE
        settings:
          # Should SEARCH check the NBT data?
          check_nbt: true
     
          # Should SEARCH check the enchantments?
          check_enchantments: true
     
          # Should SEARCH check potions?
          check_potions: true
     
          # If enabled the check only works in creative mode
          only_creative: false

          # Should the whole inventory be deleted?
          clear_inventory: true
     
      # Prevents players from clicking too fast
      Autoclicker:
        enabled: true
        strikes: 80
        action: NONE
        message: 'Autoclicker: &6{name} &7Clicks/s &6{leftclicks}&7&&6{rightclicks} &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # How many clicks to display a notification? (per second)
          click_threshold: 18
     
          # How many clicks per second to cancel the action? (when flagged)
          click_flagged_threshold: 8
     
      # Checks and manipulates some packets to disable
      # Labymod, Damage indicators and Worlddownloader
      PacketCheck:
        enabled: true
        strikes: 0
        action: NONE
        message: '&6{name} &7might be using WorldDownloader.'
        settings:
          # If set to false SEARCH will disable any type of damage indicator
          send_health: false
     
          # If enabled SEARCH can disable worlddownloader
          disable_wdl: true
     
          # If enabled SEARCH disabled minimap and radar function of labymod
          disable_labymod: true
     
          # This can confuse the killaura of some clients
          alter_playerinfo: true
     
      # Prevents players from hitting too far away
      Reach:
        enabled: true
        strikes: 10
        action: NONE
        message: 'Combat Reach: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # How far should a player be able to hit?
          # You might need to set it higher to prevent false positives
          max_distance: 3.8
     
      # Improvement to the NoCheatPlus module
      ImprobableNCP:
        enabled: true
        strikes: 30
        action: NONE
        message: 'Improbable action: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Improvement to the NoCheatPlus module
      NukerNCP:
        enabled: true
        strikes: 50
        action: NONE
        message: 'Speed interaction (Nuker): &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Improvement to the NoCheatPlus module
      FightSpeedNCP:
        enabled: true
        strikes: 20
        action: NONE
        message: 'Combat Speed: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Improvement to the NoCheatPlus module
      AttackFrequencyNCP:
        enabled: true
        strikes: 20
        action: NONE
        message: 'Attackfrequency (MultiAura): &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # Improvement to the NoCheatPlus module
      FlyingFrequencyNCP:
        enabled: true
        strikes: 20
        action: NONE
        message: 'Flyingfrequency: &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'

      # Prevents some types of Pingspoof
      # Still in progress
      PingSpoof:
        enabled: true
        strikes: 10
        action: NONE
        message: 'Suspicious Ping (PingSpoof): &6{name} &7Ping/TPS&8({ping}&8/{tps}&8)'
     
      # FrontEntity can detect killaura
      FrontEntity:
        enabled: true
        strikes: 6
        action: NONE
        message: 'FrontEntity: &6{name} &7VL: {vl} &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # Waiting time between checks
          check_wait: 10
     
          # Needed hits to start the check
          needed_hits: 2
     
          # Amount of bots that are spawned (maximum 3)
          max_bots: 3
     
          # How many hits to display a notification?
          hit_threshold: 2
     
          # Should the check only work with players?
          only_players: false
     
      # Prevents players from doing multiple actions at once
      MultipleActions:
        enabled: true
        strikes: 4
        action: NONE
        message: 'Multiple Action: &6{name} &8[&7Type={type}&8] &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # Checks if a player is eating and hitting
          check_eathit: true
     
          # Checks if a player is eating and digging
          check_eatdig: true
     
          # Checks if a player is digging and hitting
          check_dighit: true
     
          # Checks if a player is digging and placing
          check_digplace: true
     
          # Checks if the dig packets are invalid (CivBreak)
          check_invalidbreak: true
     
      # Prevents players from doing some impossible actions
      InventoryAction:
        enabled: true
        strikes: 5
        action: NONE
        message: 'Inventory Action: &6{name} &8[&7Type={type}&8] &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # Checks if a player is hitting while having the inventory open
          impossible_hit: true
     
          # Checks if a player is clicking while having the inventory closed
          impossible_click: true
     
      # Prevents abuse of Vehicle Movement in 1.9+
      VehicleMovement:
        enabled: true
        strikes: 15
        action: NONE
        message: 'Vehicle Movement: &6{name} &8[&7Entity={type}&8] &7Ping/TPS&8({ping}&8/{tps}&8)'
        settings:
          # Should horses be checked?
          check_horse: true
     
          # Should boats be checked?
          check_boat: true

     

    {tps} - The Server's TPS
    {version} - The version of the Plugin
    {name} - The name of the player
    {ping} - The ping of the player
    {vl} - The player's violation level
    {strikes} - The player's strikes
    {module} - The name of the module
    {type} - Depending on the module
    {kills} - Available in the killaura module
    {max_kills} - Available in the killaura module
    {leftclicks} - Available in the autoclicker module
    {rightclicks} - Available in the autoclicker module
    {id} - The id of the violation log


    Commands/Permissions


    /search - Overview of all commands
    /search info [Name] [-all] - Information about a player/the server
    /search reset <Name> - Resets all entries of a player
    /search modules - Shows all modules
    /search toggle <Module> - Enables/Disables a module
    /search notify - Enables/Disables the notifications
    /search reload - Reloads the configurations
    /search check <ID> - Checks a Log ID
    /search bw <List|Run|Remove> - Manages the banwaves
    /search report [Name] - Creates a log file for bug reporting
    /search watch <ID> - Watch a recorded replay

    search.command.<Command> - Permission for the specific command
    search.bypass.<Module> - Permission to bypass a check
    search.notify - Permission to get notifications



    API

    All the methods of the API can be accessed with the SEARCHAPI class.

    Code (Text):
            SEARCHAPI.registerActionHandler(new IActionHandler() {
     
                @Override
                public void onKick(PlayerData pd, ViolationLog log) {
                    Player player = pd.getPlayer();
                    // Will be called when a player should be kicked
                }
     
                @Override
                public void onBan(PlayerData pd, ViolationLog log) {
                    Player player = pd.getPlayer();
                    // Will be called when a player should be banned

                }
            });

    Code (Text):
            SEARCHAPI.registerPlayerHandler(new IPlayerHandler() {
     
                @Override
                public boolean canBypass(PlayerData pd, ModuleType type) {
                    Player player = pd.getPlayer();
                    // Return true if the player should bypass the check
                    return false;
                }
            });

    Dependencies

    ProtocolLib - https://www.spigotmc.org/resources/protocollib.1997/
    NoCheatPlus - https://ci.md-5.net/job/NoCheatPlus/
    (Optional) AdvancedReplay - https://www.spigotmc.org/resources/advancedreplay-1-9-1-12.52849/

Recent Updates

  1. 1.7.6 - Hotfix
  2. 1.7.5 - Small fixes
  3. 1.7.4 - Bug fixes

Recent Reviews

  1. Gustavo_Player
    Gustavo_Player
    5/5,
    Version: 1.7.6
    Good! <3
  2. Web44
    Web44
    5/5,
    Version: 1.7.6
    Its a very good Addon which blocks hacks very good.

    But i have a Problem with custom_actions.yml
    I dont understand how i can create my own for each check. I tried to create some, but they partly just dont get called when someone fails a check... Could you add a tutorial, how to do custom actions and use placeholders in them?


    Sorry for my bad english. I am from germany
  3. dionmanaog
    dionmanaog
    3/5,
    Version: 1.7.6
    can you fix the 1.8.8 bug thing and ok ty also i have this bug its:org.apache.commons.lang.UnhandledException: Plugin SEARCH v1.7.6 generated an exception while executing task 113
    1. Jumper251
      Author's Response
      What 1.8.8 bug thing? I also need the entire error message to help you.
  4. Powerax
    Powerax
    5/5,
    Version: 1.7.6
    Hello, how can i reset after custom example action? Because i want to repeat commands in action.
    1. Jumper251
      Author's Response
      Currently that is not possible but I might add the option in a future update.
  5. LegacyPrison
    LegacyPrison
    5/5,
    Version: 1.7.4
    Great plugin just fix the current issue where when i download it downloads 1.7.3 this might be due to the plugins watermark or obf
  6. Blazzzer
    Blazzzer
    5/5,
    Version: 1.7.3
    this plugin is amazing! Definitly worth the setup and the replays are great! Im wondering if the replays can be customized
    1. Jumper251
      Author's Response
      Thanks for the review, if you want to know something about the replays send me a private message.
  7. Aneryan
    Aneryan
    4/5,
    Version: 1.7.3
    why it cause lag?.. when i run.. then i go back again.. i use no cheat.....................
    1. Jumper251
      Author's Response
      It should not cause lags. Please provide some more details in a private message.
  8. Ridys
    Ridys
    5/5,
    Version: 1.7.3
    Great and useful plugin for minecraft servers. Excellent responsiveness of the author! Thank you!
  9. BlackHawk2306
    BlackHawk2306
    5/5,
    Version: 1.7.3
    weiterhin sehr nice, nur Schade, das das Replay-System 1.9+ braucht
    weiterhin sehr nice, nur Schade, das das Replay-System 1.9+ braucht
  10. BuiManhDuc
    BuiManhDuc
    5/5,
    Version: 1.7.2
    This plugin AMAZING! I love this plugin ^_^. I will use your plugin in my server.