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 Nov 2, 2012@LordKainzo
These are most likely to trigger:
Also usually the yawrate checking could prevent other stuff, unfortunately it can not be completely disabled for fighting currently (subject to change) - it will not prevent fighting if FIGHT_ANGLE is not checked, but it might prevent some things after the skill use / exemption or once FIGHT_ANGLE is checked again.
These might rather not trigger:
(Knockback or critical might under rare circumstances.)
I guess i will completely bind the yawrate "feeding" to the angle check, so if a player is exempted from that yawrate can not deal any further penalties. Angle and yawrate are like relatives anyway (fast turning).
Just for reference: Build 215 binds yawrate(fight) completely to angle being enabled (includes exemption check), though that builds contains a good bit of other dev changes too.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@asofold
Alrighty, I have an issue with skills, I fixed ChaosOrb, it was a coding issue and I just assumed NoCheat was the root cause because admins could do it but players couldnt (admin class had more permissions).
Now... There's a skill called "Cleave" in Heroes. It was working fine in 1.3 / old configs of NCP. Now it is only working for admins (who have op) it is not working for players correctly.
Cleave is suppose to hit all mobs around the player for X damage. RIght now its only hitting one mob and the rest of the damage is being canceled by nocheat. What config checks are being made for this? I'd love to whitelist this or at least tone it down so they could get cleave off.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@Jamesst20
I doubt that has to do with NCP, actually. Feel free to open a ticket and please specify some more information as requested there (full versions of CB, NCP, possibly pm a plugin list).
Check for other plugins like Orebfuscator ProtocolLib DisguiseCraft and finally mind Minecraft, if you regard the change list for the pre-release for MC 1.4.3, there is some suspicious entries about the void (at least one).
But it could be indirectly related to NCP, however we can't possible judge without more information.
-
View User Profile
-
Send Message
Posted Nov 2, 2012Broken in 1.4.2 :
I have a protected region by WorldGuard. If I break the block under me, I start falling in the void even if there is like 40+blocks under me
-
View User Profile
-
Send Message
Posted Nov 2, 2012@LordKainzo
Oh, thank you very much for the timings!
I think that is not a problem, actually the timings for player move are pretty good. Could be interesting to compare to other plugins like WorldGuard, or to timings from an old version.
I would be surprised if you had constant lag by NCP because the timings hardly show any candidates.But they also can't really reveal peaks and memory related problems (all/other spots getting slower due to memory problems, like crashes :p ). That NCP uses more than other plugins is just natural, the moving checks alone take a good bit of time, because they add up given that they are the most frequent event. In addition NCP listens to a lot of events and does checks on them (permissions, violations, logging), so that the total time may be higher than that of any other plugin.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@asofold
dev build for 1.4
-
View User Profile
-
Send Message
Posted Nov 2, 2012@Asofold
Turns out the EnderPearl was my terrible coding, I was blocking teleport events in a very rare occassion.
I bring you GIFTS! Here are the timings of a server with 100+ active players.
http://pastie.org/5173670
nocheatplus is currently spending more time than any plugin right now on the cpu from our timings test.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@craftovski
The contention setting is only for the fastbreak check.
The delay setting should be directly shown in the fastbreak section, increase it by 50 for instance.
Which version of NCP exactly are you running ?
-
View User Profile
-
Send Message
Posted Nov 2, 2012@asofold
2 questions, can i put this buckets: contention: 6000 to every check, and how would i increase the delay setting .
Ty.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@MineCraftMyph
Not sure where "it says" that, but you probably want to have a look at the plugin CompatNoCheatPlus, which can make mcMMO and NCP compatible.
-
View User Profile
-
Send Message
Posted Nov 2, 2012It says it supports the use of mcMMO abilities, however the block breaking intervals are still blocked and the Mining/Excavation abilities are unusable unless the delay is around 600+.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@craftovski
Don't set contention lower than default (2000), for small lag spikes you should increase it.
6000 means that the players can mine like 6 seconds faster within 2 minutes. So they can gain six seconds while mining over two minutes which allows to break a couple of grass block instantly but not many. That might already do it if you have low vls normally (VL 1 is like 1 second too fast time accumulated...).
Another thing is if the server ticks are a bit irregular, you might in addition increase the delay setting by say 50 (in ms, i.e. one server ticks normal duration), allowing to mine each block 50 ms faster than default (should be something >100 the delay then). That could help against accumulating the very small amounts over two minutes for fast breakable blocks.
Another point is: Are the users really trusted and does it happen to many / random users? Don't get tricked into removing checks too easily, though fastbreak certainly is a good candidate to be influenced by lag. Clients update their fastbreakers to be pretty adaptive, so they will not always generate high vls.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@asofold
I will test this to see what gets logged when I use this skill ) thanks!
-
View User Profile
-
Send Message
Posted Nov 2, 2012@asofold
Server shouldnt lag at all with 24 gb of ram but i will try what u said.
Will it help if i set it to 1000 rather then 6000 to see if there is difference? Or 1000 would be too low and nothing would be different?
Ty.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@LordKainzo
I have not yet come to velocity stuff. Currently i am at performance and data cleanup questions once more.
A "simple" way to let skills be used more freely is to notice which checks exactly alert for a skill and then before skill use exempt the player for the time until the skill use is finished. This time can be the next tick for some sort of skills or skill related actions (simple way is to schedule a task to unexempt), or for flying stuff to exempt for a couple of seconds maybe. If your plugin knows exactly when a skill use ends that can help. This way is still comparably simple but allows a bit of cheat use while skill use. That might be a difficulty, but probably can be spared till a little later.
It might be useful to have a look at CompatNoCheatPlus for some API use reference. Though cncp does not use timers, it does contain some examples, also an ExemptionManager implementation that might help avoiding conflicts of skills undoing each others exemptions. Also cncp might help slightly in that it loads before NCP and allows to register listeners at lowest priority which reliably get called before NCP gets the event to be able to pinpoint exemptions (NCP should not be in dependencies, the API access happens after NCP loading, controlled by cncp).
For easier testing you could use TestNCP (https://github.com/asofold/TestNCP/downloads), adding your name (or "*" for all) to the testers list, to display all violations, regardless of if they normally would get logged or not.
Bit lengthy i guess...
No idea about ender pearls currently, would be interesting with TestNCP.
-
View User Profile
-
Send Message
Posted Nov 2, 2012@craftovski
I think you should adjust the contention and maybe delay settings rather.
Question is how your server lags, is it constant low tps, or is it longer peaks of up to seconds.
fastbreak.buckets.contention can be set to something like 6000 for starters (3 times normal value). If that is still a problem double it. That can be done a couple of times for testing. The setting is in milliseconds.
Example
-
View User Profile
-
Send Message
Posted Nov 2, 2012@asofold
Thanks for being so helpful :) you make this easier.
For Reference is my CONFIG = http://pastie.org/private/j3co95de1qilecjelrkt9q
I am having some issues with custom skills I'm creating in Heroes. Let me explain the situation and see if you have a solution.
I have created a fireball style skill that when used by a player - it shoots an ENDERPEARL (on fire) out. It is suppose to teleport the player to where it was shot at as well as damage the victim.
As an admin (with op/etc) I use the skill and it works fine.
When a player uses this skill, they do not get teleported but it does damage.
Without nocheat installed, this works without issue. I have checked to see if any errors are generated when the player uses it on NCP logs - but nothing is shown.
Is there a way to WHITELIST skills so that when they are used they dont get checked by NCP?
I'm desperate at this point and am being held back by several things in NCP when it comes to custom things we are doing in Heroes.
-
View User Profile
-
Send Message
Posted Nov 2, 2012Players are complaining that they cant break blocks sometimes and when i check the console/chat i see FastBreak: tried to break blocks faster than possible. VL 3. (usually VL 1-10) so im guessing thats cuz of little lag, so i was wondering how to allow them to break blocks if VL is not higher then lets say 50.
Ty
-
View User Profile
-
Send Message
Posted Nov 2, 2012@fungreenfox
Make a ticket and show us parts of the logs with startup errors, also which versions of ncp and cncp you are using, for 1.4.2 i would recommend to use both latest versions on bukkitdev following development builds (18 + 211 for instance, http://www.nocheatplus.org:8080/).
I assume updating both to matching versions should do it already. Not sure about the shovels, if cncp does not start up at all, mcMMO will lead to fastBreak vioaltions of course.
-
View User Profile
-
Send Message
Posted Nov 2, 2012I am using machinacraft, mcmmo and citizen and having issues with compatncp. it simply wont start but making syntax errors in console. Some players are spamming console with failed FastBreak: tried to break blocks (12) faster than possible. VL 0. Several players using a simple iron shovel is spamming the console with this. How do i adjust this?