Detect and fight the exploitation of various flaws/bugs in Minecraft!

Main Features Permissions Commands Configuration Jenkins


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.

The following plugins might be useful to have a look at.

CompatNoCheatPlus (cncp)

Make plugins like mcMMO, Citizens, MagicSpells or MachinaCraft more compatbile with NoCheatPlus. Not all existing plugins are covered (yet), but you can leave a note or ticket request for cncp.


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".

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 EcoCityCraft.
  • Do not download from any other source, do not use jars other people send you.
  • Changes by build number can be examined in the Jenkins changes list.
  • All commits can be seen in the GitHub commit history.
  • Plugin statistics are no longer reported to


Documentation Resources

Contact us

  • Quick questions can be asked on this page,
    or on IRC (Server: | Default-Port: 6667 | SSL-Port: 6697 | Channel: #nocheat | Web client: WebIRC)
  • For real issues or feature requests please create a new ticket or add to an existing ticket.
  • To send information that is not to be seen by all, you can also reach us by PM to @asofold and @MyPictures. 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).

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of asofold asofold Apr 24, 2014 at 21:58 UTC - 0 likes

    @appletechandhelp: Go

    Not sure - what's the output of the "ncp version" command? Did you just update any plugins/server?


    Latest release (1.7.2-1.7.10, approved) NoCheatPlus 3.11.0-RC-sMD5NET-b739
    (Development builds: Jenkins)

  • Avatar of Gr0up115 Gr0up115 Apr 24, 2014 at 20:15 UTC - 0 likes


    I have NoCheatPlus & SpongeJump

    A lot of my sponges are now broken because NoCheatPlus thinks they are cheating. Is there any way to get around this without removing either of the plugins?


  • Avatar of appletechandhelp appletechandhelp Apr 24, 2014 at 16:44 UTC - 0 likes

    You told me how to hide the command - /?

    And it worked by doing - '?'

    But now it doesnt block it anymore and people can now type /?

    Is this a problem with the plugin?

  • Avatar of asofold asofold Apr 23, 2014 at 19:43 UTC - 0 likes

    @Wizel603: Go

    I just thought that this could be the case with that Minecraft feature to choose a usable spawn location: If spawn is buried, the player joins near it, say above or slightly to the side, but the location seems to be still in place.

    This could be a general issue, so maybe we want to do something. Though what... scrap precision, a config flag (maybe the least we can do), a "ncp setworldspawn" command...

    Edit: I just thought we could make a FAQ entry instead! :p

    Last edited Apr 23, 2014 by asofold
  • Avatar of asofold asofold Apr 23, 2014 at 19:38 UTC - 0 likes

    @Wizel603: Go

    Alright - now the "enforcelocation" feature is kicking in. This seems to indicate (~ rock solid) that the event is reporting exactly that location you are suffocating at.

    Edit: We might add a "workaround" that basically allows any location after respawn (risk of death-tp hacks in theory, though i hope that we some day can do without any checking, probably it is today?).

    Last edited Apr 23, 2014 by asofold
  • Avatar of Wizel603 Wizel603 Apr 23, 2014 at 19:22 UTC - 0 likes

    @asofold: Go


    Build 688 could make it better or worse or not really affect it!

    Build 688 does introduce a difference. Instead of being placed on the surface after re-spawning until any attempt to move results in NCP burying the player at Y=64, in this build the player appears to re-spawn directly at Y=64 and never appears to be on the surface. Suffocation begins immediately on its own.

  • Avatar of Wizel603 Wizel603 Apr 23, 2014 at 19:11 UTC - 0 likes

    @asofold: Go

    I don't have anything explicitly keeping spawn in memory. I believe a plugin would be required to set that? My test server on which I've been reproducing the bug is purely a craftbukkit dev build and NCP right now, all default configs.

    I think this being a CraftBukkit bug, or at least a change relating to when or with what data a particular event is firing, sounds like it makes the most sense at this point.

  • Avatar of asofold asofold Apr 23, 2014 at 18:35 UTC - 0 likes

    @Wizel603: Go

    NCP uses the location given in PlayerRespawnEvent - if that one is not right, then either CraftBukkit has a serious bug there, or a plugin violates the contract not to alter events on "monitor" level, which is how NCP is listening to that event.


    NCP sets the set-back location to the location given in the event - on a flying violation it might teleport you there.

    Is your spawn kept in memory ?

    Build 688 could make it better or worse or not really affect it!

    Last edited Apr 23, 2014 by asofold
  • Avatar of Wizel603 Wizel603 Apr 23, 2014 at 16:20 UTC - 0 likes

    @MyPictures: Go


    If its below Y=64 it wont be able to reproduce?

    I haven't been able to at least. It seems that it moves the player to whatever solid block is at height 64 or the nearest one below. I've dug out around y=64 under spawn and was able to get it to drop me into that dug out space from the surface several blocks above, no obvious damage taken. If really does seem as if NCP is 'returning' me to that location because it believes I moved myself directly upwards away from that Y position.


    Did you try to move the spawn point with a plugin and see if that fixed it?

    [brainfart on my part removed]

    EDIT: possibly related: In level.dat, minecraft sets "Data.SpawnY = 64 (int)" when creating a new world, regardless of the height of the terrain at that location. So yes, if you change the spawn using a third party tool which sets SpawnY to the terrain height, that may definitely explain why the issue goes away at that point. If NCP is initializing the player's last known position to the spawn coordinates as level.dat has them, that is a problem, but I also kinda doubt it's as simple as that.

    Last edited Apr 23, 2014 by Wizel603
  • Avatar of MyPictures MyPictures Apr 23, 2014 at 04:22 UTC - 0 likes

    @Wizel603: Go

    If its below Y=64 it wont be able to reproduce? Did you try to move the spawn point with a plugin and see if that fixed it? I experienced this problem by myself also but it was really hard to narrow down and as soon as I moved the spawn-point with something like EssentialsSpawn.jar a little it didn't happen again.



Date created
Apr 02, 2012
Last update
Aug 01, 2014
Development stage
GNU General Public License version 3 (GPLv3)
Curse link
Recent files