Anti cheating plugin for Minecraft (Bukkit/Spigot).
Go to file
asofold 97d59045ae [BLEEDING][BREAKING][INSTABLE] Swiftly throw in permission caching.
Benefits:
* Improves performance, where permission lookup has major impact, with
timeout based lookup, static permissions (skip permission check
entirely), and world/offline based invalidation. (Once fully
implemented.)
* Hopefully more efficient: use Bukkit Permission for faster defaults.
* (Allows control over how which permission is to be
updated/invalidated, which is useful per se.)

Risks:
* Complex changes yield bugs.
* Other plugins depending on NCP might break.
* Cache incoherence might happen (permissions are changed dynamically +-
unintended malconfiguration, or in case of bugs).
* (Endless loops certainly have all been fixed.)

Breaking:
* Lots of more or less internal API has been changed or removed: Check,
CheckType, CheckUtils, TickTask, ...
* Permission checking behavior has been altered.

Rough points:
* Implement a permission cache within PlayerData.
* Remove the player tasks and permission updates in favour of handling
those within DataManager and PlayerData.
* Adjust everything else to it (partly TBD).
* Updating sets of permissions (e.g. for CHAT) is done more lazily now,
i.e. one per 10 ticks). An actual permission check would still yield an
update next tick (asynchronous).
* Fixed/extended random spots (DualCollection, MiniListener registration
support, StringUtil).

Missing:
* Basic implementation
  * Cleanup after logout (stages: 1. non-essential like permissions,
2. unrecoverable like set-back location, 3. complete data removal).
* Coverage
  * Might have missed spots.
  * NoCheatPlus.nameSetPerms should be replaced by caching + default
config for world-wise updating.
  * Command permissions are always checked. At least for players,
cache based lookup should get implemented.
  * More unit tests.
* Extended configurability: Per-world settings/policies.
* Efficiency
  * Not all parts of the implementation are 100%/optimal yet.
2018-01-30 23:09:34 +01:00
NCPBuildBase More space available! 2017-04-13 21:24:53 +02:00
NCPCommons [BLEEDING][BREAKING][INSTABLE] Swiftly throw in permission caching. 2018-01-30 23:09:34 +01:00
NCPCompatBukkit Remove warning message of cbreflect up to 1.12.2. 2018-01-04 23:47:58 +01:00
NCPCompatNonFree Add a cblegacy profile. 2018-01-10 02:02:05 +01:00
NCPCompatNonFreeJar Obtain the "non free" modules via a pre-built jar by default. 2018-01-10 01:54:08 +01:00
NCPCompatProtocolLib [BLEEDING][BREAKING][INSTABLE] Swiftly throw in permission caching. 2018-01-30 23:09:34 +01:00
NCPCore [BLEEDING][BREAKING][INSTABLE] Swiftly throw in permission caching. 2018-01-30 23:09:34 +01:00
NCPPlugin [BLEEDING][BREAKING][INSTABLE] Swiftly throw in permission caching. 2018-01-30 23:09:34 +01:00
NoCheatPlus Set version to 3.16.1-SNAPSHOT for the next iteration of development. 2018-01-14 13:44:14 +01:00
add_gplv3_header.py Add GPLv3 headers where missing. 2018-01-17 23:52:50 +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 Obtain the "non free" modules via a pre-built jar by default. 2018-01-10 01:54:08 +01:00
README.md Update links. 2018-01-10 12:50:51 +01:00

NoCheatPlus

NoCheatPlus is a fork of the famous anti-cheat plugin NoCheat created by 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.

Installation

  • Install a Spigot server
  • Download NoCheatPlus
  • Drop the NoCheatPlus.jar in to the plugins folder.
  • Start your Spigot/CraftBukkit server. (Using /reload can have unwanted side effects with players still online, but also with complex plugins and cross-plugin dependencies, so we don't recommend it. Usually it should work with NCP.)

Hints

  • Be sure that your Spigot/CraftBukkit and NoCheatPlus versions match together. The latest version of NCP is compatible with a wide range of CraftBukkit/Spigot versions (See the notable builds page for a quick overview.).
  • Don't use tabs in the config.yml file.
  • Use ProtocolLib for full efficiency of the fight checks and other. Using a version of ProtocolLib that is supported by NCP is essential, as otherwise some checks will be disabled.
  • For compatibility with other plugins such as mcMMO, citizens and more check out CompatNoCheatPlus.
Project
Download
Support and Documentation
Developers
Obtain a build of Spigot

Compiling NoCheatPlus

  • NoCheatPlus used to be compiled with java 6 compliance (note OpenJDK, possibly we'll switch to 8 directly, once appropriate, e.g. with ProtocolLib dropping support for 7.).
  • We use Maven 3 to handle the dependencies. Tested both with Eclipse and Jenkins is Maven 3.3.9.
  • You can compile with this Maven goal: mvn clean package, for a build without any of the "non free" modules, which depened on not publicly downloadable resources, such as the CraftBukkit/Spigot server jar - the reflection based compatibility module is still contained.
  • In order to include a pre-built jar with the "non free" modules contained, use -P nonfree_include.
  • To also (re-) build "non free" compatibility modules, use -P nonfree_build as well as activating the appropriate module to build via a profile such as -P cbdev - see the tables below for reference.
  • Have a look at the NCPCompatNonFree sub module for reference on how to add custom compatibility modules. If you add custom modules with a different package naming than fr.neatmonster, you might have to update the includes section within NCPCompatNonFreeJar as well. The related factories are located within the NCPPlugin module (e.g. MCAccessFactory).
  • "Non free" jar file dependencies needed 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.
    • The latest versions of BuildTools.jar will automatically install the created server jars into the local .m2 repository (e.g. on linux) - provided configuration paths are standard. Thus you don't need to do this manually anymore, if you then build NCP with the specific profile, if you have run BuildTools.jar to generate the server jars on that machine/environment.

Options and profiles related to enabling/disabling including/building "non free" compatibility modules.

Profile Parameter Description
-P nonfree_include none The "non free" modules are included via a pre-built jar file from the repository.
-P nonfree_build none Enable building "non free" compatibility modules. The NCPCompatNonFree jar file is built/installed/(deployed).
none none The "non free" modules are neither built, nor included via a pre-built jar file.

Profiles for choice of "non free" compatibility modules to build:

Profile Description
none Default build without any of the native access modules, might pose compatibility issues with latest Minecraft versions. The reflection based module is included here.
-P all All compatibility modules.
-P cbdev The latest version in development.
-P spigot1_12_r1 Spigot 1.12 R1 (MC 1.12-1.12.2).
-P spigot1_11_r1 Spigot 1.11 R1 (MC 1.11-1.11.2).
-P spigot1_10_r1 Spigot 1.10 R1 (MC 1.10-1.10.2).
-P spigot1_9_r2 Spigot 1.9 R2 (MC 1.9.4).
-P spigot1_8_r3 Spigot 1.8 R3 (MC 1.8.4-1.8.8).
-P spigot1_7_r4 Spigot 1.7 R4 (MC 1.7.10).
-P cblegacy The pre-DMCA CraftBukkit builds.

(On the long run, only the latest module for a major Minecraft release may be be kept, such as 1_8_r3 for all of 1.8.x.)