Anti cheating plugin for Minecraft (Bukkit/Spigot).
Go to file
asofold 2ade022179 Change implementation of LocationTrace. No merging based on distance.
Since merging by distance only creates false positives (one would have
to increase the bounding box for an entry, but the angles would never be
100% right), we never merge, instead we don't add a new entry if the
position is the same, the time value is not updated in this case. For
validity of an entry you always have to consider the time span until the
previous (younger) entry or until now for the latest entry.

Rough changes:
* Use an interface for accessing trace entries.
* Use a linked structure for the actual trace.
* Use maximum age and size to limit the number of stored entries.
* Use a pool to somewhat limit object creation (size may need
configuration or scaling with number of players).
* Since the trace starts empty, have the field be final.
* Keep trace elements if settings are changed, cut size if necessary.
* Remove obsolete tests.

Potentially missing:
* Usage of LocationTrace has not been checked if we need to account for
the time of the latest entry not necessarily being updated (!).
* New tests, e.g. accounting for the expiration of entries.

Follow ups:
* (Extend fight/loop checks to a latency window mechanism.)
2016-05-29 19:35:52 +02:00
NCPBuildBase Set scope to provided for external jars. 2015-11-25 08:47:11 +01:00
NCPCommons Sketch a reflection based provider for IEntityAccessLastPositionAndLook. 2016-05-11 11:24:11 +02:00
NCPCompatBukkit Change IEntityAccessLastPositionAndLook to have get and set. 2016-05-16 14:04:18 +02:00
NCPCompatCB2512 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2545 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2602 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2645 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2691 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2763 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2794 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2808 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2882 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB2922 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB3026 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB3043 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCB3100 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatCBDev Change IEntityAccessLastPositionAndLook to have get and set. 2016-05-16 14:04:18 +02:00
NCPCompatGlowstone Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatProtocolLib Ignore null players in UseEntityAdaper. 2016-03-26 00:33:26 +01:00
NCPCompatSpigotCB1_8_R1 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatSpigotCB1_8_R2 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatSpigotCB1_8_R3 Set internal dependencies to provided for all the compat modules. 2015-11-25 15:26:32 +01:00
NCPCompatSpigotCB1_9_R1 Change IEntityAccessLastPositionAndLook to have get and set. 2016-05-16 14:04:18 +02:00
NCPCore Change implementation of LocationTrace. No merging based on distance. 2016-05-29 19:35:52 +02:00
NCPPlugin Change implementation of LocationTrace. No merging based on distance. 2016-05-29 19:35:52 +02:00
NoCheatPlus Set version to 3.14.0-SNAPSHOT, due to a major MC version change. 2016-03-02 18:32:43 +01:00
CONTRIBUTING.md Tickets are now on GitHub: https://github.com/NoCheatPlus/Issues/issues 2015-12-12 23:48:17 +01:00
LICENSE.txt Put license on top level. 2013-01-12 01:04:23 +01:00
pom.xml [BLEEDING] Compatibility module for Spigot/CraftBukkit on MC 1.9.4. 2016-05-11 00:58:54 +02:00
README.md Note MC versions. 2016-05-11 09:48:49 +02:00

NoCheatPlus

NoCheatPlus is a fork of the famous anti-cheat plugin [NoCheat] (http://dev.bukkit.org/server-mods/nocheat/) created by [Evenprime] (https://github.com/Evenprime). NoCheatPlus attempts to enforce "vanilla Minecraft" mechanics, as well as preventing players from abusing weaknesses in Minecraft or its protocol, making your server more safe. Organized in different sections, various checks are performed to test players doing, covering a wide range including flying and speeding, fighting hacks, fast block breaking and nukers, inventory hacks, chat spam and other types of malicious behaviour. For a more complete list have a look at the always outdated [Features Page] (https://github.com/NoCheatPlus/Docs/wiki/Features).

Installation

Tips

Compiling NoCheatPlus

  • NoCheatPlus is compiled for Java 6 (same as Minecraft/Spigot).
  • We use [Maven] (http://maven.apache.org/download.cgi) 3 to handle the dependencies.
  • You can compile it with this Maven goal: mvn clean package, if you don't want any dedicated CraftBukkit modules, or if you are lacking the jar files. If you do have all the dependencies, you can set the parameter cbdedicated to true and activate the profile all adding -P all to the goals (e.g. on Jenkins, for some setups setting the property may suffice). For more options, see the table below. If your specific needs are not met by the provided options, you can still build only using the compat module(s) that you need, e.g. by adjusting the build/dependency profiles or adding your own profile, which means changing/adding a profile both in the root pom.xml for modules to have and in NCPPlugin/pom.xml for the dependency inclusion. The preset profiles should be enough of a hint for that. If you add custom modules with a different package naming than fr.neatmonster, you might have to add the source inclusion to the NoCheatPlus/pom.xml as well.
  • Jar files for the dedicated compat modules, which your local maven repository might be missing, can be installed manually. Example for Eclipse with embedded maven: Add a new maven build run configuration, name it appropriately, e.g. Install CB 1.7.5. Set goals to: install:install-file -Dfile=<PATH TO JAR> -DgroupId=org.bukkit -DartifactId=craftbukkit -Dversion=1.7.5-R0.1-SNAPSHOT -Dpackaging=jar On Windows the might look like: X:\...\craftbukkit\3042\craftbukkit-1.7.5-R0.1-20140408.020329-16.jar To let it run you might have to set the base directory, e.g. to ${workspace_loc}, it does not seem to have significance. Do set the correct version alongside the file name. On newer version of maven, you might do with much simplified goals, because the pom files inside the jars are parsed.

All profiles for reference:

Profile Parameter set to true Description
-P minimal default Default profile without native access modules, likely problematic with moving checks.
-P all cbdedicated All compat modules.
-P spigot1_8_r3 spigot1_8_r3 Just Spigot 1.8_R3 (MC 1.8.4-1.8.8).
-P spigot1_9_r1 spigot1_9_r1 Just Spigot 1.9_R1 (MC 1.9-1.9.3).
-P spigot1_9_r2 spigot1_9_r2 Just Spigot 1.9_R2 (MC 1.9.4).
-P cbdev cbdev The latest version in development.

(On the long run, only the latest module for a major Minecraft release will be kept, such as 1_8_r3.)

Project

Download

Support and Documentation

Developers

Related