CombatAnalyzer 1.0.5

Find cheaters; deep neural networks to analyze player combats

  1. sander2798
    Native Minecraft Version:
    Legacy (< 1.13)
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Source Code:


    We are getting a lot of negative feedback about the fact that our software is not a good anti-cheat due to detection rates and manual checks being a requirement. The fact is, this is not an anti-cheat on its own. Normal anti-cheats detect 95% of the cheaters, which is completely what most servers want. Our software attempts to flag the leftover 5% using deep learning models that analyze the combats thoroughly. The problem is that these models require lots of computational power, which makes manual requesting a must. You can let only staff use the check command, or also allow your players / donators to use it. CombatAnalyzer should be an expansion to your current anti-cheat setup, but at no means a replacement.

    Please read before making any posts on accuracy and detection rates. There was an issue that when a player was kicked, the data about the combat was not sent to us. This meant that all players that were kicked by AC's running on the server, never had their data sent to us. This obviously has strong implications on detection rates, as we currently do not have data from players that were obviously cheating. We are working on this, and will post an update once this is resolved.

    Important: Even though this plugin is a free "GNU General Public V3 License" licensed plugin, this plugin is only a way of gathering data! Actual processing of data has to happen on an external server that accepts the CombatAnalyzer data format. Our own processing server can be found at but requires a payment as we need high-end GPU servers to do our processing. The data endpoint is configurable in the config however, so feel free to replace it with your own deep learning back-end.

    Important: At current time, our CombatAnalyzer backend at only supports traditional 1.8 combat! We are still looking for servers running 1.9 to collect data from to train our 1.9 combat models. If you are a sufficiently large server, please feel free to contact us by emailing [email protected] about your server. Spigot 1.9+ servers with 1.8 combat are however supported.

    Important: Both the plugin and our own back-end at are in BETA, there are absolutely no guarantees made on a problem-less deployment, even though we of course hope it is for you! Please use our issue tracker on GitHub to stay up to date on the latest issues and their status.

    Looking for a state of the art automated way to analyze the combat behavior of your players? Staff teams are maybe the most important thing for any server, but the bad thing for your players is that good staff members are hard to find, and the ones you have are often busy! Being able to detect a cheating player seems like a trivial task; look at some statistics, calculate some features of a combat and filter out the ones that do not match that of non-cheating players. Every server owner knows that current day anti-cheats often do a reasonable job, but are nowhere near detecting most of the cheating players. Machine learning and especially deep learning have made a big name for themselves in the last decade. The idea here is to simply collect enough data and run analysis on this data to perform tasks like outlier detection; the task of being able to detect cheating players within a larger collection of all players.

    However, most of these deep learning models require high end hardware, and do not run on anything less than a high-end GPU (graphical processing unit, something most dedicated Minecraft hosting servers probably never have). The problem, processing all the combat data of all players (the way traditional anti-cheats do) is impossible. Our complex deep learning models take up to a whole second to process a single player, while traditional anti-cheats are theoretically capable of processing thousands of players per second. There obviously is a weigh-off here, use state of the art detection rates of a complex deep learning model, or choose for a faster alternative like traditional anti-cheats, but cut short on detection rates. With CombatAnalyzer, there is no need to make a choice at all. Keep your current anti-cheat in-place, and deploy CombatAnalyzer next to it.

    CombatAnalyzer will simply record players in-combat and send this data to a different server for processing. We cannot simply process all data, so data is stored on this external server for a certain time until it might be needed. Whenever a normal in-game player thinks a player might be cheating, they can simply run the command /ca check [name], this will request the high-end GPU server to process the data for this player. Who and how often you allow your players to use the /ca check command is entirely up to you. You could even make it a donator-only extra. Several moments after running the command, a response will come back with the category of the player's combat. This can either be NONE (good, not cheating), LOW, MEDIUM or HIGH (the probability of cheating). In the config of CombatAnalyzer, the server owner can configure the exact actions to take depending on what the category of the analyzed player was.

    The installation of CombatAnalyzer is the most important part so handle it with care! Incorrect installation will make CombatAnalyzer FAIL on your server and possibly take actions against non-cheating players or staff. Steps 6 and higher are the most important!
    1. Download the plugin from this page and put it in your /plugins/ folder.
    2. Start your server once and shutdown again to create the default config file.
    3. Go to /plugins/CombatAnalyzer/config.yml and change whatever you want.
    4. Find a back-end to send your data to, if you wish to use ours, follow the steps below.
      1. Go to and create an account.
      2. Sign in and copy the verification key from the control panel.
      3. Paste this key in the config file at /plugins/CombatAnalyzer/config.yml.
      4. Save the configuration file.
      5. Purchase any of the packages available in the same control panel.
    5. Next are the most important steps!
    6. Start your server.
    7. Give the permission combatanalyzer.staffmember to all staff members on all of your servers within the network that have CombatAnalyzer installed.
    8. Give permission combatanalyzer.donator to all players with paid ranks on all of your servers within the network that have CombatAnalyzer installed.
    9. Make sure normal players do not have the combatanalyzer.staffmember nor the combatanalyzer.donator permission. These permissions are used to determine the likeliness of cheating beforehand. For example; staff players are far less likely to cheat than donators, and even less likely than normal players!
    10. Start your server, do some testing, and enjoy!

    Configuration Section
    Below is an example of the default CombatAnalyzer config. The first section simply describes the processing server to use. Our own models require data to be send to and more information about that can be found here The verification key should be provided by the processing server so that servers can identify themselves. In case of using the official CombatAnalyzer back-end, a key is provided via the configuration overview after you have created an account.
    Code (Text):

    verification_key: insert-key-here
    The section below describes which actions to take depending on which category a player ends up in. None means that our models were not able to find anything suspicious. The low, medium and high categories are cheating probabilities. The exact implementation of these categories depends on the processing server used. In the default config, we simply tell the player that did the request the result, and take action accordingly (nothing, kick or ban).
    Code (Text):

      - ca say %requester% The player %player% was not using combat cheats according to our models. No actions were taken against this player.
      - kick %player% You were kicked by CombatAnalyzer, illegal client modifications are not allowed.
      - ca say %requester% Thank you for checking %player%! According to our models, this player might indeed be cheating with risk LOW, so the player was kicked from the server.
      - ban %player% 1H You were temporarily banned by CombatAnalyzer, illegal client modifications are not allowed.
      - ca say %requester% Thank you for checking %player%! According to our models, this player might indeed be cheating with risk MEDIUM, so the player was banned from the server.
      - ban %player% 4H You were temporarily banned by CombatAnalyzer, illegal client modifications are not allowed.
      - ca say %requester% Thank you for checking %player%! According to our models, this player might indeed be cheating with risk HIGH, so the player was banned from the server.
    The next section of the config simply allows the messages of CombatAnalyzer to be customized.
    Code (Text):

      no_permissions: Insufficient permissions, this is a donator and staff command only.
      wait: Your request to analyze the combats of %player% was done, you can expect the results shortly...
      insufficient: Failed to analyze player %player%, having at least %min% combats for this player in our database is required. Currently, there are only %current% combat(s) found, please try again later.
      error: Something went wrong doing your request, please ask your server administrator to check the server logs.
      timeout: You have to wait %seconds% second(s) until you can use this command again.
      already: You already have a request running, please first wait for the result of that one.
    The final section of the configuration file allows the server owner to configure permissions, each having a different timeout interval between successful requests.
    Code (Text):

        permission: combatanalyzer.check.0
        secondstimeout: -1
        permission: combatanalyzer.check.1
        secondstimeout: 20
        permission: combatanalyzer.check.2
        secondstimeout: 240
    • Spigot 1.8 or higher.
    • Connection to the internet.
    • At least two cores so the main thread won’t suffer from the CombatAnalyzer threads.
    • Java 8 or higher.
    CombatAnalyzer as you can download from this page is a free plugin and can be downloaded here under the GNU General Public License V3. However, the backend processing server that this plugin sends its data to is likely not free! In case of our own deep learning backends, we require a small per-combat fee, more info at Note that this plugin is licensed under GNU General Public License V3, but the backends are likely not. This data providing plugin is stand-alone and is thus NOT part of the CombatAnalyzer ScriptAndHands back-end found at

    If you believe to have found an actual issue, that is, a problem that needs to be solved on our side, please create an issue on our Github page at with all the information. For support, please contact me via email at [email protected] and provide as much information as possible. You can also join our Discord at but note that we are still working on setting up our Discord server.

    Please be reasonable about reviews. Only review once you have actually tested the plugin with a working back-end. We understand that placing reviews complaining that the plugin itself is free but the back-end is not could happen, but we ask you kindly to consider our position regarding costs and development. If you want to do the back-end development of a deep learning model yourself, this is of course an open option and allows you to completely free of charge use our front-end plugin. Are you about to place a review? Thank you! Is something wrong? Please contact support first. We will not give you any support in the review section.

Recent Reviews

  1. NealCris
    Version: 1.0.5
    Its good anti-cheat if get real cheater on server :)
    Thanks and waiting for new cool updates! I belive ^-^
  2. VaziakTouchesMe
    Version: 1.0.4
    What a stupid bullshit anticheat. "All these servers within this network run an anti-cheat (AC)" meaning that this anticheat doesn't actually work and it requires you to keep paying to check players, which is stupid. Also this anticheat does not work unless you run the command. It just doesn't work in general.
    1. sander2798
      Author's Response
      :( I think you kinda misunderstand the idea. Anti-cheats usually capture 95% of the cheaters. However, it's the leftover 5% that ruin games and make it less fun for others, while these are also the hardest to detect. Our models focus specifically on these players. CombatAnalyzer is in no means a complete replacement of your current anti-cheat, it's an expansion.
  3. Elevated
    Version: 1.0.4
    The whole "concept" of this plugin is fine to some extent but, after taking a look through the project, and testing it myself I am unsure if anyone should really be using this.

    The amount of none-sense that is inside this plugin is unbelievable. It makes me wonder really to if the person who coded / structured this plugin even knew what he was doing both code and anticheat wise. The code is absolutely hideous and is not structured properly, especially for a project that tries to mess with machine learning and large data processing.

    Check wise, the anticheat detects absolutely nothing. I tried a few open source clients and it had troubles detecting them whatsoever, but I got false banned just with me changing my aim constantly from consistent to inconsistent, which honestly was expected as the type of data that's read from the client is completely useless especially when it comes to any killauras that are coded half-way properly. Liquid bounce for instance was able to completely bypass their checks without changing almost anything in the settings from default.

    To anyone who's trying to get an anticheat that's "machine learning", just don't. You can patch whatever a machine learning anticheat could patch with a hard coded anticheat since Minecraft is 95% predictable with some small exceptions (that 5%).
    1. sander2798
      Author's Response
      Thank you for the feedback. I feel like for some reason this idea makes a lot of people angry, but I really cannot see why.

      About the way the plugin is coded, its a super simple plugin that collects some data from fights, nothing special. I wouldn't expect tons of complex well-structured code in the recording plugin while all the complex things happen on the back-end side... Calling it "nonsense" is somewhat extreme I believe.

      Check-wise we are working hard on improving detection rates, but our main point of focus is keeping false positives low. Our models were validated on thousands of players, and were verified to hardly ever flag a legit player. I really wonder how you managed to trigger a flag so easily then, but I think its because you do not understand the inner workings. Data is recorder from a player and stored for several minutes; if you cheat, stop cheating, cheat, stop cheating (as you claim you are) it is very well possible to get banned while you were no longer cheating, but were in the past.

      I really find it difficult to continue this project when everybody seems to test it with the intention of "oh no another machine learning anti-cheat lets find something bad and let everyone know it in the most extreme ways". Allow us some time to improve. Feedback is more than welcome, but I do not understand the hate involved.

      Thank you, Sander.
  4. brs73
    Version: 1.0.4
    Very good, no problems :)
    80 characters -..................................-
  5. GladUrBad
    Version: 1.0.4
    After finally getting this anticheat to "work", after the servers went down, it's been a horrible experience.

    Someone on my server was using 6 block reach with very blatant killaura settings, and said there were no cheats detected. Literal garbage and a scam of an anticheat.

    This anticheat does not work whatsoever, you also need to pay extra to use the plugin and it has no capability.

    Not only this, but only working for combat leaves your server quite vulnerable.
    1. sander2798
      Author's Response
      *EDIT* The fact that we currently do not detect 6 block reach makes sense. We have trained our models on data from JartexNetwork, which has an anti-cheat on its own. Any player using 6 block reach would have been kicked/banned by the that anti-cheat before collecting any useful data. We focus on the players that are on the line of cheating vs being detected. It will just be a matter of time once we collect data from other servers until this issue will fix itself. Kind regards, Sander.

      *Original Response*
      Hmpf, I give up... We are in BETA and trying to improve our service. Al you do is instantly place bad reviews / spread a bad reputation, without contacting us in any way. I am unsure what we did wrong in your eyes, but if you cannot work together with us instead of against, I'd rather have you just leave our service as is and let others help to improve...
  6. BestMark
    Version: 1.0.3
    Tested it, CombatAnalyzer bans absolutely all legit players with 14+ CPS. The plugin may work well in the future, but it should not be used on servers at the moment.
    1. sander2798
      Author's Response
      **EDIT** Our latest models have been deployed today and were validated on hundreds of actively playing donators and staff from the JartexNetwork server. I would like to kindly ask you to give CombatAnalyzer another chance, and maybe after that consider updating your review! In any case, be sure to reach out to us first in case you run into any issues :) Thank you!

      Original Response:
      Our current models were trained on staff samples only. We have indeed realized this is insufficient. Some changes have been made to our architecture and we expect to deploy our latest models somewhere this week, which should fix exactly this issue. Thank you for letting us know and thank you for taking the time to test :)
  7. MMmPlaunixMMm
    Version: 1.0.1
    It looks to have very big potential, making NN to detect KA is not an easy job, so I wish you best of luck. Looking forward to it.
    1. sander2798
      Author's Response
      Thank you very much MMmPlaunixMMm! We really appreciate the review and will do our best to make this product something you like :)