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).
@MarkElf2204
Pistons (vertical) are mostly unusable with current versions of NCP. Started to attempt to add compatibility, but it's hard to do without changing a lot of things, also to do it alongside with other necessary changes/fixes.
Ticket exists: https://github.com/NoCheatPlus/Issues/issues/5
@Sitmobedaf
Ok :). Looks like spamming sneak and throwing snowballs. Is this critical to your server concept?
I'll check weights and make more of them configurable, so it can be altered quickly.
@asofold
I put a kick on detection "Improbable". It blocks some species KillAura.
https://youtu.be/SUtXgyHxWLc
I noticed an Issue with slimeblocks - https://youtu.be/gzsFsU_Xiqw Regular players don't bounce from the piston/slime block setup which players with the bypass permission node bounce regularly.
@Sitmobedaf
'shooting' means throwing? Is there a plugin doing something on shift + snowball?
asofold, improbable triggered if player have in hand snowballs, shooting and many times presses Shift.
@vitorjordaop
Short answer: yes.
We (roughly) support past version down to CraftBukkit 1.4.5-R1.0 (!). Of course we hardly ever test the old versions, most testing is done with 1.8.x, 1.7.10 is still supported officially. We still accept bug reports for all those CraftBukkit/Spigot versions, but we only provide fixes within the latest available development branch (no branching of old versions of NoCheatPlus).
It works for 1.7?
Thanks for the update!
@MarkElf2204
Using an extra file per language has been on the lists for quite a while, just for the messages, and reference which message/blueprint to use in the normal config.
Questions may remain with per-world configurations, but i guess a default config + differently named message entries would be ok for referencing them from within different world configs. At some point we'll probably make multiple config files per world anyway (core setup, checks, model/magic, ...), but we'll try to keep it 'simple' as long as possible.
The GitHub issue mentioning the extra file is lacking title keywords, perhaps: https://github.com/NoCheatPlus/Issues/issues/46
Could happen soon-ish, generic replacement scheme (placeholders), some predefined keys, such.
@asofold
My mistake for leaving out what I was thinking specificlly. I had /ncp and /ncp info (player) in mind for the customization messages as those are the most commonly used commands in my experience. I already have modified each of the strings to preference. Perhaps a second .yml (i.e messages.yml) may be a superior way of handling these additional messages if you do happen to add them rather than shoving them into the existing config.yml however this is fully up to you.
@MarkElf2204
What exactly to show varies by preference. There exist people who want positions printed everywhere where possible (likely not in ingame chat, though). Currently the positions are even not precise, which is not so good for logging to console, some recent issues would have needed more than idk 10 digits precision. I suggest to change the (ingame) log messages to display [tags] instead of the locations (from/to). In case of false positives, you'd get a much better feeling of when/what to ask with tags on (though locations would be pretty ok to have too on reports).
Probably we should alter the default configuration to make extra shortened log entries for ingame chat, and rather more detailed ones for console and file. (Can be done easily, even without the more complex change to add on-hover stuff.)
Another thing we might do, since we have past 2/3 moves stored in more detail, would be to allow caching/logging those, possibly for selected players/contexts, thinking of trusted players. Such might allow to provide workarounds very quickly, might have to open an extra log file for such.
Now for your QUESTION :), editable messages? I don't fully understand which messages you are hinting at.
@asofold
Ah, that does seem to make sense now that you've explained it in depth. I am definitely looking forward to seeing these types of additions towards the improvement of the configuration as I've been modifying my own for months now, even prior to that spigot post if you remember, constantly making improments to generally reduce the spam created by the default configuration, and clean up the format to my liking as not too many people that I speak to constantly, want to see the cords players attempted to flyed to and from. I'll keep my eye on the jenkins page for this update.
Edit: would adding editable messages through the config be a possibility?
@MarkElf2204
The vl display in the '/ncp info PLAYERNAME' command is a little bit misleading, because it shows a history of 'added vl', with the white number being the sum of all added vls. The gray parts give more details, though still cumulative:
So the violation history does not show the current (possibly added up) violation level. The choice for this kind of display hs been made long ago, and hasn't been changed much, since the start. It might not be too well explained throughout the docs.
Unfortunately the output of that command is somewhat inconsistent with the vl>... entries in the actions lists, because the 'added vl' always is the part that is 'new' with a violation. For some checks that's the absolute vl for most checks the added vl is indeed added up and the total value may reduce with not violating the check subsequently.
To get the real VL that is used in the actions lists, the only reliable way is to use the allviolations hook, which can be activated via the configuraiton to log all violations of all players ingame or to the trace file (log file). Those log entries will show both the current and the added VL (and also other information like tags).
Currently that allviolations thing can not be selectively activated for a player, unless you create a on-the-fly debug log fro one player with '/ncp debug player PLAYERNAME', which then will output way more information, such as positions during moving. This could be feasible with testing things for one player, especially for the moving checks.
(Future plans are to make vls and actions more flexible, so you could decide for which part to run actions, giving access to added vl, sum vl, number of violations, and possibly frequency of violation and more. For the command, we might just add the current violation level to the history, so it can be displayed as 'current'. Not sure that'll exceed a line of text too often, though, it's been made pretty compact - perhaps it's time to make use of the chat features like showing text on hover for ingame display.)
I was playing around with options of he config to test why select notifications (fdirection in this case) aren't sending while others do (click) and I've noticed notifications not sending properly within build 911 and even earlier builds seem to have this issue that I've noticed as well. The 0 in log:fdirection:0:10:i should indicate the logging action as soon as the VL is greater than 5, similar to survivalfly from my understanding. Can you go into depth with a possible solution, or cause of notifications not being sent properly?
/ncp version
@ImZeta
Flying in certain regions: How do you let them fly? Do you allow cheat clients or do you use region-specific permissions or a WorldGuard add-on (e.g. WorldGuardFlyFlag)?
Moving during pvp (receiving velocity / push): Could you post the complete output of the '/ncp version' command? I assume an outdated version of NCP in use.
Hello !, I have a question, as I can be configured to the user to fly and aprentar not cancel the sprint or push back as the fly on my server is allowed in some areas ..., the other thing is, when there pvp same thing happens the users to receive damage stand still or motion were canceled, as can solve this ?.
@ninomato
Find the source of the lag! The morepackets violations are (with overwhelming probability) not the cause of the lag, but usually are themselves caused by a server-side lag spike.
Can't tell if these are players who had been lagging a bit client-side just before, so the buffering couldn't compensate the server side lag anymore, or if our server-side lag detection isn't quite working, or if the lag spike was just too big to be compensated at default settings.
In any case you need to find the source of the lag. Is there any log entries from just before the gap (server log file, but maybe also other plugins that log stuff, e.g. NoCheatPlus, WorldGuard, Factions or Essentials perhaps....). Is the save-all command used there, or anything special before such a gap? If you observed those lag spikes client-side, you could have a look at the client log file (.minecraft folder somewhere), it should show all the chat as text. That'll allow identifying points of time, which you then can look up in other server-side logs. If the server is using a different time zone, so you'd need to translate time.
Another thing is to record timings and post/pm a link, for the case the issue is permanent-ish. Catching a lag spike with start/stop would be interesting, in any case a general timings with a little more runtime.
Every 3-5 minutes the server hangs for about 5-10segundos, and when he comes out of the locked appears several MorePackets messages in chat .. What do I do? http://imgur.com/uhKFoid
@Sitmobedaf
Thank you for the quick feedback. I was just intending to ask, if you are using PaperSpigot, because this issue had been reported only for PaperSpigot in the past, and then i 'reactivated' the issue by a recent change - point being the version shows a plain/normal/ordinary Spigot (git-spigot...) , not PaperSpigot.
Now that i am looking at the version string from the log file again, it shows ProtocolLib 3.6.0 - in order to have NCP use ProtocolLib you'd need to use ProtocolLib 3.6.4!
@File14
Which version of NCP are you using, and what kind of issues are it?
Some parts of survivalfly can't (yet) be altered, if those are the issue, you might conclude that skipping low violation levels might solve it (not explained on that page, needs updating...), however not always cancelling on violations will allow some kinds of gliding cheats. So it's important to check if your issues are with stuff that's already been fixed in development builds.
@File14
https://github.com/NoCheatPlus/Docs/wiki/%5BMoving%5D-Survivalfly