Compatibility
Minecraft: Java Edition
Platforms
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+Links
Creators
Details
This plugin only works on Minecraft versions 1.17.X, 1.18.X, 1.19.X, 1.20.X and 1.21.X!
For Bedrock support you need to install the Bukkit/Spigot version of Floodgate (both 1.0 and 2.0 are supported)!
If there are any issues, instead of leaving a bad review please join the Discord so that we can help you!
Themis is an anti cheat with a focus on accuracy, efficiency and simplicity.
I highly recommend joining the Discord server to stay up to date and get support.
Themis supports Spigot and Paper. Other forks will probably work too, but I can't guarantee it.
Also Themis has real Bedrock/Geyser support! By "real" I mean that it actually performs proper checks on Bedrock players. Some other anti cheats simply exclude Bedrock players from the checks, which means that they can fully bypass the anti cheat. With Themis this is not the case!
Note that supporting Bedrock is more difficult than Java since it's a completely different codebase and Geyser has bugs that cause random weird behaviour (Geyser is an absolutely amazing piece of software though!), so there will be false positives. Please report them on Discord to help me fix them!
Themis has a flexible config that allows you to configure an arbitrary number of actions that can consist of an arbitrary number of commands which should be run. For each action you can define a minimum score required to run, and a score and time delay for it to be run again. All of this can be configured for each check individually. You can find the config in the config section below.
Themis currently focuses on movement hacks but will expand and detect more hacks in the future.
The plugin Anti Cheat Replay supports Themis and can be used to record players when getting punished by Themis so that the recordings can be reviewed and used as evidence later.
- BHop Speed
- Blink
- Boat Fly
- Boat Speed
- Climb / Spider
- Elytra Fly
- Fly
- Jetpack
- KillAura if it uses increased Reach
- NoFall
- OnGround Speed
- Reach
- Step
- Timer
- Vanilla Speed
- WaterWalk / Jesus
Note that this list is not complete. Some checks can catch hacks they weren't even designed for, and some hacks can have many different names in different hack clients, so even if a hack is not on this list, there's a chance it's blocked anyways, especially if it's similar to the ones listed.
Themis doesn't just promise efficiency, it also delivers it. This is a timings report over an hour of a server running Themis 0.8.1 with all checks enabled and about 15 players online.
It shows that on average Themis uses 0.23% of the tick, which is about 0.015% per player. Of course this number will vary, depending on your server hardware and setup (plugins, gamemodes, ...).
For comparison, as of writing this (13th April 2021), AAC has a similar statistic on its plugin page where it uses 3.92% for 140-150 players which is about 0.026% to 0.028% per player, so Themis is almost twice as fast.
(Note that this is not at all a fair comparison since AAC has a lot more features than Themis! I didn't put this here to say Themis is better, I just think the statistic alone will be meaningless to most people, so I wanted some reference point, and I chose AAC because it's a well optimized anti cheat, it's widely known and it has a similar statistic on its plugin page.)
If you notice any mistakes in these calculations please let me know!
To install Themis, please carefully follow these steps:
- Make sure you're running version 1.17.X, 1.18.X or 1.19.X, 1.20.X or 1.21.X of Spigot or Paper. Other forks will probably work too, but I don't guarantee it.
- Download the Themis .jar file from this page and drop it in your plugins directory. (You don't need ProtocolLib anymore, starting with version 0.17.0)
- Only if your server allows Bedrock players: Install Floodgate to allow Themis to check if a player is using Bedrock and to adjust the checks accordingly (both 1.0 and 2.0 are supported). Note that you need the Bukkit version installed on every server where Themis is running, the Bungee version is not enough! If you're using Bungee, you need to set the
send-floodgate-data
option in the Bungee Floodgate option, otherwise the Floodgate API won't work. It is also highly recommended to enableforward-player-ping
in the Geyser config, otherwise Themis will not be able to measure the ping of Bedrock players. - Now restart the server, to make it load all the changes. Run /themis to check if the installation worked. If it didn't, please check the troubleshooting section below.
- Only if your server allows Bedrock players: Run
/themis info [PlayerName]
on a Bedrock player and make sure Themis correctly reports it as a Bedrock player, otherwise something with your Floodgate setup is wrong. If not, make sure you enabled thesend-floodgate-data
like mentioned above and join the Discord server for assistance.
Problem: Themis isn't working
If you installed Themis, but it didn't work, please try running /themis
to see if Themis is running. Note that you need the themis.command.info
permission, by default everyone has it but your permission plugin might be disabling it.
If it worked:
This means that Themis was loaded and is running correctly. If you're not getting any detections, first please check the "Blocked Hacks" section below make sure that the hack your testing is supported by Themis. If it is, it might not show up because you have the bypass permission. This is disabled by default (even for ops), but you might get it from your permissions plugin, e.g. if you have * perms. If you have LuckPerms, you can use /lp user [Username] permission check themis.bypass
to see if you have the permission, other permission plugins probably offer similar commands. If you're sure that Themis is running and that you don't have the bypass permission, but you're still not getting any detections, please join the Discord for assistance.
If it didn't work: This means that something went wrong while loading Themis. Try running /pl and see if Themis shows up.
- If it doesn't show up, it probably means that you didn't place the .jar file in the right directory, or you didn't restart the server after doing so. Make sure the .jar file is in the plugins directory and restart the server. If this doesn't help, please join the Discord for more information.
- If it shows up in red, this most likely means that you're not on a supported Minecraft version. If this isn't the problem, please check the logs for more information and join the Discord for assistance. When asking for support on Discord because something is not working, please directly include the log file. It contains a lot of helpful information and will make helping you easier and faster!
Problem: Bedrock players are getting flagged
Run /themis info [player name]" on a Bedrock player and check if Themis correctly detects them as a Bedrock player. If not that means you don't have Floodgate set up correctly. This is not a Themis issue! Often this can be solved by changing the "send-floodgate-data" in the Bungee/Velocity Floodgate config to true.
Problem: Bedrock players always have 0 ping
You need to enable the forward-player-ping
option in the Geyser config.
As of version 0.14.0, this is the default config:
Default Config
----------------------------------------------------------------------------------------------------
# Welcome to the Themis configuration file!
#
# This config file was generated from Themis version 0.14.0
# --> if you're using a newer version of Themis you should check the changelog to see if your config needs to be updated.
# If you want to update your config file, you can either change it manually, or rename this file which will lead to a new
# up to date one being generated on the next server restart.
#
# Important: This configuration file allows you to change every single setting for each check individually for maximum
# flexibility. Often however you'll want to use the same values for most of the checks. Because of this, there is the
# "default" section, which defines the default values for all checks, and these can then be overwritten in the check
# specific sections below.
# For example if you wanted to disable the tickrate check, you could overwrite the "enable" setting by adding it like this:
# ----------
# tickrate: <-- this should already be in the config, remove the {} at the end if it's still there
# enable: false <-- this is what you add
# ----------
#
# All values are either booleans (true / false) or doubles (1.0, 2.5, -123.456, ...).
# All time values are in seconds.
#
# If you have any questions, problems, or just generally want to stay up to date, you can join the Themis Discord:
# https://discord.gg/jjkR2EU
# However before asking questions first please read everything here carefully, this only takes a few minutes and will answer
# lots of questions. We are happy to help you on the Discord, but we often get the same questions over and over again even
# though they are already answered here.
# ----------------------------------------------------------------------------------------------------
# These are the default values which are used for all checks that don't explicitly overwrite them below
default:
# Should the check be enabled?
enable: true
# Should Themis block hacks (e.g. by dragging players back)?
block: true
# At which score should Themis start blocking the hacks?
block-threshold: 10.0
# Themis allows you to configure actions which can each run a list of arbitrary commands. You can specify exactly when
# an action should be run. Refer to the notify action below for a detailed example:
actions:
# What is the name of the action? This name needs to be unique.
notify:
# What is the minimum score for Themis to run this action?
execution-threshold: 10.0
# Which amount of new violations need to happen for this action to be repeated?
repetition-threshold: 5.0
# Which amount of time needs to pass for this action to be repeated?
repetition-delay: 10.0
# Which commands should be run? You can specify as many as you'd like which will be run in the order they're listed.
# Currently, you can use the following placeholders: %player_name%, %detection_type%, %score%, %ping%, %tps%
commands:
- "themis notify §5[Themis] §4%player_name% §cwas flagged for §4%detection_type% §chacks!\n§c[Score: §4%score% §c| Ping: §4%ping% §c| TPS: §4%tps%§c]"
# Should only Bedrock Edition players be checked and Java Edition players be ignored?
bedrock-only: false
# Until which maximum ping should Themis check players? Themis will not check player who have a higher ping than this.
# Warning: Hacked clients can fake a high ping, use this setting with caution!
# Set to -1.0 to always check
max-ping: -1.0
# Until which minimum TPS should Themis perform checks? Themis will not check any players when the server's TPS are below this value
# Set to -1.0 to always check
min-tps: -1.0
# After which amount of time should violations expire?
# Set this to -1.0 to disable this feature and store violations until the server is restarted
violation-expiration: 900.0
# Note: It is totally fine if the sections below are empty. Please refer to the third paragraph at the top of the
# configuration for the explanation. The {} marks it as an empty section, you need to remove when adding settings.
# This checks movement while in a boat
# Ingame name: Boat Movement
# Hacks that can trigger this: BoatFly, BoatSpeed, ...
boat_movement: {}
# This checks movement while flying with an elytra
# Ingame name: Elytra Flight
# Hacks that can trigger this: Elytra+, Extra Elytra, ...
elytra_flight: {}
# This checks horizontal movements (along the x- and z-axis).
# Ingame name: Speed
# Hacks that can trigger this: All types of Speed, Fly, ...
horizontal_movement: {}
# This checks for some impossible packets
# Ingame name: Illegal Packets
# Hacks that can trigger this: Fly (e.g. in Aristois or Inertia), ...
illegal_packets: {}
# This checks for a certain type of illegal packet data which is used in many movement hacks.
# Ingame name: Spoofed Packets
# Hacks that can trigger this: NoFall, WaterWalk/Jesus, some Fly and Speed hacks, ...
packet_spoof: {}
# This checks if a player is hitting entities farther away than they should be able to.
# Ingame name: Read
# Hacks that can trigger this: Reach, KillAura
reach: {}
# This check detects if a client is speeding up the time, which means it can e.g. move faster.
# Ingame name: Timer / Blink
# Hacks that can trigger this: Timer, Blink, ...
tickrate: {}
# This checks vertical movements (along the y-axis).
# Ingame name: Flight / Y-Movement
# Hacks that can trigger this: Fly, Glide, Jetpack, HighJump, Step, some Speed modes, ...
vertical_movement: {}
/themis
Shows if Themis is running and which version is installed
/themis help
Lists Themis' commands and their descriptions
/themis info <player name>
Shows violations scores and other information about a player
/themis notifications [on|off]
Toggles or shows notification settings
/themis notify <message>
Sends an anti cheat notification to everyone with the themis.notify permission, this is meant to be used in the config file, not directly ingame
/themis reload
Reloads the config to make changes take effect
themis.bypass
Bypass all of Themis' checks
default: false
themis.bypass.[checkName]
Bypass a specific Themis check, replace [checkName] with the name of a check (uses the same names as in the config, e.g. themis.bypass.vertical_movement for the fly check)
default: false
themis.silent
Make Themis' checks silent, i.e. they won't block hacks
default: false
themis.silent.[checkName]
Make a specific Themis checks silent, i.e. they won't block hacks, replace [checkName] with the name of a check (uses the same names as in the config, e.g. themis.bypass.vertical_movement
for the fly check)
default: false
themis.notifications
description: Receive detection notifications
default: op
themis.technical
description: Receive technical notifications, for example about updates or detected problems
default: op
themis.command.base
description: Use /themis to see if Themis is running and which version is installed
default: true
themis.command.help
Use /themis help
default: true
themis.command.info
Use /themis info
default: op
themis.command.notify
description: Use /themis notify
default: false
themis.command.reload
description: Use /themis reload to reload the config file
default: op