Minecraft anticheat guide
Attribute Changes and Anticheat Reach and Speed Checks
How plugins, datapacks, and effects change player attributes, why hardcoded defaults cause reach and speed false flags, and how to map your server's values.
Short answer: match the anticheat to your real values
Attributes are the numbers that control stats such as movement speed, attack damage, and interaction range. Vanilla, plugins, datapacks, and status effects can change them. An anticheat that assumes default values can flag a legal player as fast or long-reaching after a change. List every source that edits attributes on your server, then confirm that the anticheat reads the values you actually use.
What attributes control
Attributes are base values that the game combines with modifiers. A modifier can come from an item, an enchantment, a potion effect, or a plugin. The final value is what the game uses when it moves a player or resolves an attack.
Two players with the same item can therefore have different values. When you read an alert, check the effects and equipment the player had at that timestamp, next to the position data. Without that context, the alert cannot be explained.
Recent Minecraft versions also include attributes for how far a player can reach to interact with blocks and entities. Confirm the attribute names and default values for your version on the Minecraft wiki, and in the release notes that describe the change.
Where server values come from
Most server owners see attribute changes from four sources. The table lists each source and why it matters to checks. Start with the sources you can list from your plugin folder and datapack folder, then add effects that players can receive during play.
| Source | Example | Why it matters to checks |
|---|---|---|
| Vanilla default | Base movement speed for a player | Baseline that speed and reach checks may assume |
| Status effect | Speed or Slowness changes movement while active | Movement changes without a matching input change |
| Item or enchantment | Armor or a weapon with an attribute modifier | Can change reach or damage for one player only |
| Plugin or datapack | Custom values per world, gamemode, or rank | Checks may use hardcoded defaults and misread the change |
Map and test each custom value
Map the values before you change the anticheat. The goal is a written list that matches the server, so the anticheat's assumptions and the server's real values agree. Test each profile in staging with a test account, and keep the anticheat in alert-only mode during the test.
Use the mapping in your change log
A short example shows why the mapping matters. Suppose a kit gives players a larger interaction range, but the reach check still uses the default value. Legal interactions at the edge of the new range would look like reach cheating. The fix is to match the check to the value the kit sets, or to exempt that item, and then test the kit in staging.
Keep the mapping next to your anticheat change log.Include the attribute name, the source, the world or gamemode, and the test result. When a player disputes a reach or speed alert, you can check the mapping and the logged value on the same page.
Avoid raising a threshold because one player complained. Set thresholds from logged data that includes known values, and recheck them after any attribute change.
What we have not verified
This article does not list the attribute values for any specific Minecraft version, and it does not state how any particular anticheat reads attributes. Those details come from the Minecraft wiki, the release notes for your version, and your anticheat's documentation. Run the mapping on your own server before you rely on it.
FAQ
Why did speed alerts start after we installed a kit plugin?
The kit plugin may have set movement or interaction attributes when items were equipped. Check its configuration for attribute entries, then compare the alert time with the equip event in your logs.
Do potion effects count as attribute changes?
Effects change the modifiers applied to attribute values while they are active. Test Speed and Slowness on staging and confirm that the anticheat handles both the start and the end of each effect.
If we change attributes in one world, do other worlds change too?
Only if the plugin or datapack applies the value globally. Read the scope setting in the plugin documentation, then test one player in each world to confirm the result.
Can we raise the reach threshold to stop these alerts?
You can, but a higher threshold also hides real reach cheats. Set the value from logged data with known attributes, and recheck it after each attribute change.