NoCheatPlus

Detect and fight the exploitation of various flaws/bugs in Minecraft!
Introduction
NoCheatPlus attempts to prevent cheat clients from exploiting weaknesses of Minecraft or its protocol, making your server more safe. Checks cover a wide range of issues 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 Features Page.
NoCheatPlus puts emphasis on configurability and allows you to customize actions that are carried out when a player fails a check (e.g. silent cancelling, executing commands, just logging). Bypass permissions allow to control what check to apply for which players, all checks can be deactivated in the configuration, also having the option for world-specific configuration files. Many checks allow more detailed configuration to adjust sensitivity.
Certainly NoCheatPlus is not a magical bullet, it uses a lot of heuristics and even guessing, so you will encounter false positives here and there and also not catch every single violation. Example video of how NoCheatPlus blocks cheats (outdated plugin version).
NoCheatPlus was introduced by NeatMonster, building on the code base of NoCheat by Evenprime.
Recommended
The following plugins might be useful to have a look at.
ProtocolLib
Allows NoCheatPlus to activate packet-level checks, covering a range of exploits that can't be monitored using ordinary means. Since roughly Minecraft 1.7.10, the fight.speed check can't work as expected anymore, due to changes in CraftBukkit. With ProtocolLib this can be repaired.
CompatNoCheatPlus (cncp)
Make plugins like mcMMO or MachinaCraft more compatbile with NoCheatPlus. Not all existing plugins are covered (yet), but you can leave a note or create an issue/ticket request for cncp. Phasing out: Citizens 2 should work with NCP out of the box, MagicSpells are working on compatibility too - rest will be integrated into NCP.
Orebfuscator
Orebfuscator fights all sorts of X-ray-hacks by altering the map information that is sent to the players, such that they have to mine blocks to actually reveal what is behind. Virtually a "must have". (Latest versions of Spigot contain features of Orebfuscator.)
Downloads and History of Changes
- Download officially approved versions on the Files page at BukkitDev.
- Development builds have been moved over to the Jenkins at md-5.net.
- Do not download from any other source, do not use jars other people send you.
- Change lists: Wiki (digest) | Jenkins (by build number) | GitHub (all commits).
- Source code
Plugin statistics are no longer reported to mcstats.org.
Support
Documentation Resources
- Consider first: Frequently asked Questions and Known Issues.
- Wiki (Configuration, Permissions, Commands)
- Developers might have a look at the page describing the API of NoCheatPlus.
Contact us
- Quick questions can be asked on this page,
or on IRC (Server: irc.spi.gt | Default-Port: 6667 | SSL-Port: 6697 | Channel: #nocheat | Web client: WebIRC) - For real issues or feature requests please create a new issue/ticket or add to an existing issue/ticket.
- To send information that is not to be seen by all, you can also reach us by PM to @asofold and @MyPictures. @IceAP (IRC: ICE) will also help or redirect the conversation. Please do not contact the user 'NoCheatPlus', it is for administrative purposes only and will likely not be answered in time. Keep to BukkitDev and GitHub for support, do not trust users on other forums or websites, also not if their nick names are the same as NCP staff on BukkitDev.
Please always state the output of the "ncp version" command to let us know versions in use (users of cncp also the "cncp" command).
-
View User Profile
-
Send Message
Posted Jan 23, 2015How do I add colours to my kick messages?
-
View User Profile
-
Send Message
Posted Jan 22, 2015@HubToo
I also found the sentence with "generic" now - not entirely sure what i was pointing at back then, i could imagine it to be a left-over entry hinting at the actions parts and active flags which almost all checks have in them, which have been inserted into the checks page.
The consistencychecks are automatic anyway, there is some checking of internal data, to track effects by NPCs or bugs in either the server or NCP (e.g. certain events missing). I believe you set logging.debug to true, which should be the reason for the messages to appear at all.
210 blocks is a lot :) - i'd like to detect "most things" automatically, e.g. by comparing known blocks to new ones, currently we need to fill in some extra information, because the server does not always tell us correctly. Using blockbreak.debug, you can see what flags are set for typical vanilla blocks, so it should be possible to copy those for blocks that are shaped same way as vanilla blocks. Unfortunately some blocks have specific (yet hard-coded) workarounds, we will try to work around those at some point, possibly with more flags, until we run out of flags (, which will mean recoding to something more flexible).
Note that you can't change block break timings other than adding the blocks to the allowinstabreak list right now, which probably is slightly annoying (break whatever block instantly with hands).
Edit: If you succeed, we could make a wiki page for the mod, containing the necessary change (provided you want to share them).
@ggtank
Right now i would make it build 793. We will make a release somewhat soon (weekend ~ really). Until then we will go through a list of fixes and a few checks to alter/add. The latter are more prone to introduce problems, but they will be new checks (packet level, maybe one in the fight section, the fight.speed check will likely be removed for 1.8).
-
View User Profile
-
Send Message
Posted Jan 22, 2015Which development version should I use with 1.8 (spigot) ? Which one is the most stable?
-
View User Profile
-
Send Message
Posted Jan 21, 2015@asofold
Good evening Asofold, and thank you for your reply and your time.
About supporting exotic configs, i understand perfectly well. The good news being that apart from the few things i mentioned, everything else seems to work.
The clarification about the *fly config items was very welcomed. Indeed, i was a bit misled. I believe i falled in the second case: i teleported in a high tower made exclusively of mod specific blocks. Surely, this is why NCP believed i was flying.
For the block flags part, i'm not sure to have understood everything but i will experiment with blockbreak.debug=true.
In my case, there are 210 unknown blocks.
For the generic checks section, i was refering to the "data:consistencychecks:" documentation, which i believed was in the following page: https://github.com/asofold/NCPDocs/blob/master/wiki/configuration/checks%2Fchecks.creole and where the "Checks Sections" starts with some TODO lines.
This evening i found the following page: https://github.com/asofold/NCPDocs/blob/master/wiki/configuration/configuration.creole#data which is closer to what i was seeking, but i have to admit that i haven't understood what the consistencychecks item is really doing.
Best regards,
-
View User Profile
-
Send Message
Posted Jan 21, 2015@HubToo
Cauldron + xyz mod ... we can't support all mods out of the box, maybe we can help with configuration, but we can't guarantee that all checks are usable with all mods.
Some of the checks naming may be misleading.
The block flags part is part-explainen here:
https://github.com/asofold/NCPDocs/blob/master/wiki/configuration/compatibility/..%2F..%2Fdevelopment%2Fdev-pinboard.creole#overrideflags
How many blocks is it about ?
What do you mean with the "generic checks section" ? We are currently reworking the wiki in the background to bring it up to date, but what else do you need to adjust?
@chrishillz
We don't recommend banning automatically in general, thus we could only assist with questions about individual checks, probably IRC (spigot) is a better place to exchange experience with such, it's also somewhat crowded.
Concerning kicking, IRC might also be better, because checks have different kinds of false positives. It's thinkable that we provide a strict config with kicking some day, but currently too many things change, so it'll not happen soon.
-
View User Profile
-
Send Message
Posted Jan 20, 2015Would any of the developers here mind sending me a strict version of the config for my server? I would like it to kick people more strictly and ban those who are certainly hacking.
-
View User Profile
-
Send Message
Posted Jan 20, 2015Hello,
I'm testing the plugin in a Cauldron-MCPC-Plus-1.7.10-1.1236.06.212 server, using several common plugins and the following mods: Lord of the Rings b21.3 / More player models 1.7.10b
My server log contains a whole lot of missing block entries:
How can i declare them? I didn't find the place and syntax to do that?
The log also contains many messages such as:
As the generic checks section is not yet filled in the wiki, can you explain what is it about, so that i may safely ignore that, or disable it.
Thanks in advance!
-
View User Profile
-
Send Message
Posted Jan 20, 2015@edcsg
Hello,
I had a similar problem, but unrelated with water. Walking was very jerky, and after teleporting i couldn't even walk in any direction. The log had several Failed SurvivalFly messages while i was not flying, so i disabled the corresponding config item and everything went back to normal.
Curiously, i had also some complaints with CreativeFly, while i was not using a creative gamemode. I disabled that too as i don't see the point to limit players in creative mode?
For information, i'm using a Cauldron server, with the Lord of the Rings mod.
Best regards,
-
View User Profile
-
Send Message
Posted Jan 19, 2015@edcsg
You can send a PM with BukkitDev? The "ncp version" command would print output to where you run it from (e.g. console, best to copy test) - if you run the NCP development build 787, the version information will also be printed in the nocheatplus.log.
-
View User Profile
-
Send Message
Posted Jan 19, 2015@asofold
I really appreciate your extensive answer, you really are putting a lot of effort in the fight against hacks, and helping users like me understand the intricacies of your plugin.
Thanks again, your answer gives me some new directions on how to approach these issues.
-
View User Profile
-
Send Message
Posted Jan 19, 2015@asofold
As you said, should be vertical upward speed in the water. How to improve?
-
View User Profile
-
Send Message
Posted Jan 19, 2015@asofold The full output "NCP version" command? Nocheatplus\nocheatplus.log? Still? Your e-mail address? I can take it, send mail to you?
-
View User Profile
-
Send Message
Posted Jan 19, 2015@edcsg
That's because the swimmingspeed modifier is meant to modify the horizontal speed of swimming :p, not the vertical speed for jumping out of the water.
I assume there is no jump-potion effect involved, but that with Cauldron maybe the water block shape can't be interpreted by NCP.
Can you post the full output of the "ncp version" command? There is more information contained than plugin and server versions, i am interestd in the MCAccess part right now (if you post the full output. we don't need to ask back too much).
Seems there has been a ticket for Cauldron/1.7.2 already (Ticket 791). Last time we checked the moving events of Cauldron were producing totaly different output to CraftBukkit/Spigot + vanilla clients, but for jumping out of water we might examine the MCAccess version.
-
View User Profile
-
Send Message
Posted Jan 18, 2015@asofold I'm sorry, seems to set swimmingspeed is not effective. Following my problem! I can't go(Fig.)
Every time to be transferred back to the place(Fig.)
And then return to NCP news(Fig.)
I use the version is: 3.11.1
The server version: Cauldron 1.7.2
Thank you for your reply.
-
View User Profile
-
Send Message
Posted Jan 18, 2015@MasterMithrandir
Concerning tracers, i am not sure if we want to implement something there.
-
View User Profile
-
Send Message
Posted Jan 18, 2015@asofold
Would you recommend relying on other plugins which claim to have the solution for other hacks NCP does not? Like Tracers, Auras...
(Always bukkit aproved, or Spigot aproved (this last method of approvals which I do not know of the liability of))
Will NCP implement any functions against these other common server pvp hacks?
-
View User Profile
-
Send Message
Posted Jan 18, 2015@kangarkooo
I forgot to mention that Ticket 364 is meant to be the point of reference for pistons + moving (even if slime blocks are or will be a special case with pistons).
@Bobcat00
The version detection only attempts to get a result like "1.8.1" to have a rough idea of the Minecraft version in use, hard coded examples. I probably add reflection to ask Minecraft directly, also ProtocolLib.
Some features might also depend on if it is Spigot or CraftBukkit, which then will also be checked for. I rate it more important to prevent enabling of some workarounds that provide overhead or even risk for certain server versions, if the cause for the workarounds has been fixed for that server version. Have you encountered any issues with it?
@edcsg
We tried some mod(s) a while ago and found that they let the players move totally different than CB/spigot with vanilla clients. This is a big problem because our moving checks more or less pinpoint the vanilla behavior, i cannot guarantee that we will be able to fix such within some time frame. In future we might add (potentially simplified) replacement checks for anti-flying, which might then rather check the average speed instead of the exact location-to-location coordinate changes.
That being said, we first need to find out what exactly happens.
If you have time to do this (it can be done on a crafty live server with SSD):
A workaround for water can be to allow faster moving in water in general (allows a lot of speeding in water!): Add "swimmingspeed: 200" to the survivalfly section of the configuration to allow twice the speed in water (you later check if you lower it).
Sorry for the long text, i forgot about the translator :p.
-
View User Profile
-
Send Message
Posted Jan 18, 2015@ asofold Excuse me, 1.7.2 MCPC game player can not be landed in the water, how to solve this? I'm here players cheating flight. I don't want to get off the survivalfly, how to let the player cannot cheat fly and does not affect the normal walking? Sorry, the above is the translation software translation = =!
-
View User Profile
-
Send Message
Posted Jan 18, 2015@asofold
I see a recent dev build has code that does different things based on the server version. I just want to make sure you realize that there is a CraftBukkit 1.8 and that this is separate from Spigot 1.8. Both are produced by the build process created by the Spigot developers.
I'm using CraftBukkit 1.8.
I also see a specific test for a version string containing git-Spigot-081dfa5-7658819. But this is going to change with every Spigot (or CraftBukkit) build. There are already six versions after the one you are testing for, each of which has its own unique version string. For example, CraftBukkit 1.8 has over 200 unique version strings, one for each commit.
-
View User Profile
-
Send Message
Posted Jan 16, 2015@asofold
Thank you so much for answer. I am not demanding it to be implemented, take your time for important things. I am using #786 on PaperSpigot and the player is not pushed in the air by piston, getting "failed SurvivalFly" message. When I disable nocheat it works just fine. I have passable check disabled.