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 Jun 10, 2014I'm running into issues with fastbreak again using the newest version of NoCheatPlus on CraftBukkit 1.7.9-R0.1 BETA.
I recorded a video displaying the issue:
https://www.youtube.com/watch?v=BNOuP5UKgbM
Basically, sometimes a player will try to break a block and NO MATTER WHAT, it refuses to break. The only way that they can break a block in that space again is to restart the server.
-
View User Profile
-
Send Message
Posted Jun 7, 2014@Nickbbeezy
No new permissions, but Minecraft/CB changed on that.
-
View User Profile
-
Send Message
Posted Jun 7, 2014Tested build #702, non-ops are unable to use flint & steel. Were there new permissions added for that?
-
View User Profile
-
Send Message
Posted Jun 7, 2014@bobthehalfdead
It depends what you want.
Everything right of "vl>10" is only executed if the violation level is greater than 10, if the level is 20 an there is another "vl>15" or so entry, the highest would be used.
The "cancel" entries always mean that NCP attempts to cancel the action of the player or somehow prevent something, so if you want NCP to never prevent anything you have to remove all cancel entries - in this case it would end up being "vl>10 log:bdirection:0:3:if", which means below vl 10 nothing is done, but above vl 10 the "bdirection" log message is sent to ingame chat and nocheatplus.log (provided those are not deactivated globally).
-
View User Profile
-
Send Message
Posted Jun 6, 2014@asofold
So for cancel vl>10 log:bdirection:0:3:if cancel would it be:
vl>10 log:bdirection:0:3:if cancel
or:
cancel vl>10 log:bdirection:0:3:if ?
-
View User Profile
-
Send Message
Posted Jun 6, 2014@bobthehalfdead
For most aspects you just remove the cancel (and command actions like cmd:kickflyshort or similar) actions. There are rare things like "place against air", which can only be done via command or permission, though.
-
View User Profile
-
Send Message
Posted Jun 5, 2014First of all, thanks for the great plugin and hard work. You plugin has help us catch many the cheater!
Now, a quick question, now would I make it so that NCP only logs/reports violations in chat? For instance the blockinteract VL:
actions: cancel vl>10 log:bdirection:0:3:if cancel
Thanks for any info on this!
-
View User Profile
-
Send Message
Posted Jun 4, 2014@rfsantos1996
I added back some instant-break compatibility code in development build 701. Maybe that works without cncp now (could not yet test it).
-
View User Profile
-
Send Message
Posted Jun 4, 2014@rfsantos1996
Great - on the long term this will be either fixed in NCP or a compatibility hook in NCP, because this does not need any plugin dependencies.
You should not force changes on other plugins configs, unless maybe if the server would crash otherwise. Rather check their settings and warn on the console and add a notice to enable those hooks. EDIT: Maybe i misunderstood your question there, cncp mostly tries to "pinpoint" exemption, by wrapping around NCP events and if not possible unexempt automatically, if it's not the same tick. Such things - in any case a notice to the users to enable the HookInstaBreak should be a good thing.
Actually i should make an extra section on the cncp project pages, so other plugins can be mentioned including necessary settings.
-
View User Profile
-
Send Message
Posted Jun 3, 2014@asofold
I understood what you meant by setInstantBreak... It'll override other plugin's config or something like that (when should be enabled, it won't or vice versa)..
I'll test that... Also {CheckType[] checkTypes = {CheckType.BLOCKBREAK_FASTBREAK}; HookInstaBreak.addExemptNext(checkTypes);} is right? O.o
Worked, thank you for your pacience (;
-
View User Profile
-
Send Message
Posted Jun 3, 2014@marubal21
You can disable many things on a world-specific basis, thoug not all effects.
There is the bypass permissions on the one hand, and the world-specific configs. Those are like WorldName_config.yml - you just create the file next to the config.yml and do "ncp reload", it should populate the file.
The global/default-config (config.yml) always exists, you can use it to disable most checks or you disable in the world-specific config, which would override the default one.
I would suggest rather to disable needs-based, because some checks do have a protective function.
@rfsantos1996
I think you should confine that by "if (CustomServer.getJogador(e.getPlayer()).isInstantBreak()) {event.setInstantBreak(true); HookInstaBreak.addExemptNext(...);}", in the BlockDamageEvent handler. Then you might do without the permissions. I personally would not call setInstantBreak(configValue), but use if (.configValue) setInstantBreak(true), because it prevents some errors, like resetting other plugins effects (now i read your comment ...).
-
View User Profile
-
Send Message
Posted Jun 3, 2014@asofold
How does this work? (addExemptNext), I add this on the event, or when the player toggle the instant break? (sorry for this question, I wouldn't ask but I don't really got it)
(some code that I used to try to enable instabreak)
-
View User Profile
-
Send Message
Posted Jun 3, 2014Is it possible to set this plugin to take effect in one world only? I saw the world-specific configuration wiki page, but im a bit confused. If i make a world-specific config, will there also still be a global config? Reason i ask, i have a separate minigames server with skyblock, creative and minigames worlds, and i only want to have NCP work on the skyblock world without effecting the other worlds in the same server. Is that possible? Or at least possible to minimize the effects of NCP on the non skyblock worlds?
-
View User Profile
-
Send Message
Posted Jun 2, 2014@rfsantos1996
Seems the previous attempts to use that failed, but it could be that i just failed to make mcMMO work with that attempts, but mcMMO was more complicated (throwing extra events), so there is a chance that we might fix it.
Until then you might have to exempt them from BLOCKBREAK_FASTBREAK (permisison or exemption). You could exempt them only temporarily wrapping around the events, however the difficulty is that the block break event follows the block damage event directly, so you would need to wait for that one. You might also use HookInstaBreak.addExemptNext(final CheckType[] types) from CompatNoCheatPlus, for the case you are already using cncp - there you can register BLOCKBREAK_FASTBREAK so cncp might do the accounting. Best would be if a simple fix worked on NCP side.
-
View User Profile
-
Send Message
Posted Jun 2, 2014@asofold
Yeah, I can't allow them to do it when I have NCP on my server (it isn't a great issue, but it would be a lot easier to me calling the event than just setting the block to Material.AIR)
-
View User Profile
-
Send Message
Posted Jun 2, 2014@rfsantos1996
So you want them to break blocks instantly only after having BlockDamageEvent.setInstantBreak(true) called?
-
View User Profile
-
Send Message
Posted Jun 1, 2014(about this comment - page 2)
No, they're not OPs, I want to moderators have permission to instant break blocks (even with "-nocheatplus.checks.blockbreak.*", they aren't allowed to break blocks instantly (using BlockDamageEvent's setInstantBreak)
-
View User Profile
-
Send Message
Posted Jun 1, 2014@jhezreel708
We don't check for illegal enchanting, such as creative mode exploits do. We might such in the future, but for now you would have to search for other plugins, one promising candidate might be found here: http://dev.bukkit.org/bukkit-plugins/nogodtools/
-
View User Profile
-
Send Message
Posted Jun 1, 2014Does NCP disable the functions of All - u - want mod? Our creative server recently had a huge harming potion [insta kill even in creative] war. those potions were made by all u want moded clients.
-
View User Profile
-
Send Message
Posted Jun 1, 2014@GodsDead
Re-opened Ticket 716 for further discussion.