NoCheatPlus Config | Optimized And Free

Discussion in 'Server & Community Management' started by Captain_Obvious, Jun 22, 2016.

  1. Hello everyone,

    I'll be resuming work on the configuration for a little while to help fix some issues and improve the config. I want to focus on redoing the notifications of the config. I would like to integrate the idea of a color VL from the notify config to the other configurations. I would also like to change the format of the messages and add more information to each violation. Notifications will also be based on VL instead of time, so that you can tell when a players VL is rising quickly.

    Apart of configuration work, I'm working to update NoCheatPlus to be compatible with 1.13, more specifically, 1.13 swimming. I've already began work on this issue and made some decent progress. Swimming, for the most part, is working. I'm still working out some issues, like the ability to swim through 1x1 spaces flags for passable. In the future I would also like to fix some issues with NoCheatPlus that aren't because of the 1.13 update and possibly add some more checks to help combat against modern clients and cheats. I have not touched any areas yet so you will still need to use the flags in your config, but this will be fixed later on so that this will not need to be done.

    To better maintain this project, I've moved progress to GitHub, so you can see progress of the config and changes with each version. You can find both the config and an updated 1.13 NoCheatPlus.

    Download link to 1.13 NCP:
    NCP GitHub Project:

    Please feel free to message me with any issues.
  2. SpacePuppeh


    I'm going to go ahead and test this.

    One word of warning with your download, Mediafire is giving literal viruses, asking me to download fake macOS software. You may want to change where that's hosted.
  3. Sorry about that. I have an AdBlocker which usually blocks all that crap. Do you have a preferred file sharing site? I may just use DropBox or

    I’ll be working again on the fork tonight. I’ll probably be able to make the checks more strict using EntityToggleSwim. I’m also hoping this idea I have will fix issues with players using normal fly and getting flagged. As far as 1x1 swimming, I need to better understand how the check works before I can work on a fix since that check is a little more complex than SurvivalFly. Check back in a few hours and I’ll probably have an updated jar you can download. Please feel free to message me with any issues so we can work to fix them.
  4. SpacePuppeh


    I’d prefer not changing any of the other flags unless they truly do fix the issues and are not workarounds so we retain most of the plugin. All I personaly want is water all fixed somehow and then asofold to update the plugin correctly, if you’re not able to do so yourself.

    As for downloads, any direct link you like, with https sounds good. I have an adblocker but this opened a new tab with a big fake virus window… I’m very surprised that is on Mediafire. They don’t seem to care much about who is advertising there.
  5. I understand what you're saying, but I'm simply adding more arguments before a higher swimming speed is allowed to prevent abuse. It will now check if the player is actually using 1.13 swimming instead of just checking if they are in liquid before allowing the faster speed. This will prevent cheaters from being able to fly a little faster in water without having to toggle their swim.

    I'll finalize swimming before I move onto the other issues so you can choose if you would like to include the other fixes.
    • Like Like x 1
  6. So I've read, passable checks the feet of the player rather than their whole body/player model. Not sure if that snip of information is going to save you any time but I thought that I would mention it. Perhaps check the player's orientation and if it's in some way, ignore passable. This may also fix an issue with players getting stuck in trees after using a rocket boost with an elytra.

    As far as versions go, perhaps test for an entity only found in 1.13, if it's found do X, if not, do Y. I made that suggestion for EZProtecter, the dev chose dolphins, and it seems to have worked out well. Might be useful when making changes that conflict between versions.
  7. SpacePuppeh


    I've also had these issues in the end with... I think it's usually non-whole blocks. Perhaps these are relevant too.
  8. I’m just not necessarily sure what it actually counts as a violation. SurvivalFly just has preset values of allowed speed based on where they are and what they're doing. I’m probably just going to stick to something simple (Exempting the player if they’re swimming) until I can understand it better.

    NCP already has a pretty good method for adjusting things based on version, I haven’t taken a look at that yet until I finish everything that needs to be done.
    Probably the block flags haven’t been properly set yet for NCP, possibly could even be done config wise. I’ve made a project tab on my fork of the progress of each thing that needs to be fixed.

    After some testing today, I’m going to push back the stricter water checks for later since there’s still sometimes where players have faster speeds in water even if they’re not swimming. This leads to a little more work than what I thought would be necessary. Tomorrow I’m going to focus on fixing passable, and then I plan on adding a flying grace period to stop all the false positives when a player toggles fly.

    My priorities right now:
    • Make swimming completely compatible with 1.13 and make sure the faster speeds allowed can’t be abused
    • Update all blocks to 1.13 and automatically fix the block flags so you don’t have to add them to the config.
    • Fix some common issues with NCP (Just gonna run through the issues tab on the main plugin and see if anything can be fixed)
    • Lastly, make this version cross compatible with all other versions, or just make another jar for lower versions which includes all the fixes.
    There’s still a lot to do and I have very little knowledge with Java so it’s a learn as we go process. I hope you can stick with me through this process.
    • Like Like x 2
  9. SpacePuppeh


    • Like Like x 1
  10. Update for today:
    I identified another issue with swimming involving sea pickle and kelp plants. Kelp plants would flag for survival fly because NCP thinks you are climbing up or using "spider" on the plants. Sea pickle wasn't added to the materials list so it would flag when swimming or walking over them.

    Kelp plants took a little more time than intended, but I was able to fix it. Both should work now without any major issues. There's still a few false positives with both that need some more fine tuning. Swimming right above a kelp plant that touches the water will flag for survivalfly. In some cases swimming over sea pickles will flag for swim up and water walk. This will be fixed later.

    Current known issues with swimming:
    • Swimming with dolphins grace and depth strider above water flags for survivalfly (Problem: lastMove & thisMove isn't detecting a player in water when swimming above water, Solution: Add my own variable that sets a players water state to true and hold that for x amount of time, therefore it shouldn't detect a player out of water)
    • Swimming with a block at your head or in a 1x1 area flags for passable (Problem: PlayerLocation checks the players feet location so when they toggle swimming, their feet touch the block above, Solution: Exempt player while swimming(?) or adjust passable radius while player is swimming(?)
    • False positives with kelp plants and sea pickle. (This will be worked on later)
    Progress is slowly moving along. I hope to really finish all swimming issues up by this weekend.

    Edit: Link to new jar -
    • Like Like x 2
  11. Changes/Fixes for 1.13 swimming seem to be finishing up. The majority of swimming should work as intended, but there are still a few false positives in certain cases that need fixing.

    False Positives with current fixes:
    • Swimming (with no horizontal change) right above kelp plant when above water will flag
    • In some cases, swimming directly up with dolphins grace and then continuing to swim above (horizontally) water will flag
    • Swimming from the ground to a sea pickle will flag (Proper step flags are not being applied when the player is swimming?)
    • Swimming with Depth Strider and Dolphins Grace above water will flag (Swimming above water needs to be redone on how it checks)
    Things to do later once the false positives have been fixed:
    • Only allow a faster speed when the player is actually swimming and not just moving in water.
    • Find realistic speeds for dolphins grace and 1.13 swimming so the check can be more realistic
    • Find a realistic fix for swimming (and gliding) and not flagging for passable (Passable checks need to be redone and players location need to be adjusted)
    In terms of 1.13 blocks, It seems the blocks have already been added to the list of blocks used by NCP, but for some reason it may not be using the new block names. Further investigation will be needed.

    Under the projects tab, I've added some issues from the NoCheatPlus page to my list of things to do. Those will be worked on later once 1.13 has been finished. If there are any other major issues that you are experiencing, please feel free to let me know so I can add them to the list.
    #791 Captain_Obvious, Mar 9, 2019
    Last edited: Mar 13, 2019
    • Like Like x 1
    • Winner Winner x 1
  12. 1.13 Swimming has finished and has moved to testing stage. All problems I previously identified have been fixed and swimming should work without problems. Please be aware that this is not a proper fix for swimming, and you may be sacrificing cheat protection for compatibility.

    Please report any issues here:

    Download link:

    In the future I will be moving this to the resources section for easier management.
    • Like Like x 1
    • Winner Winner x 1
  13. SpacePuppeh


    What is lessened regarding cheat protection?
  14. Players may be able to move slightly faster in water since the values haven't been adjusted to be more realistic. Passable will ignore all players swimming or gliding (elytra).
  15. Here's an update of the progress of the fork:
    • 1.13 Swimming
    All movements within water should be fixed, including any extra enchantments/effects. I recently fixed using the riptide enchant for normal movement. Please report any issues if you find any.
    • 1.13 Blocks
    I've spent too much time trying to track down the issue with the blocks with little success. Now I think it would be best to manually add the block flags to each block, rather than spending more time figuring out the issue. The current block flags added in the config are okay, but they don't set the proper block flags and just simply say "players can move how ever they like on these blocks," which can open it up to being exploited. For now, I'll go though and figure out the proper block flags for each block and add them to the default config, so that users do not need to add them to the bottom of the config.
    • NoCheatPlus Issues
    I've already begun to fix some small issues with NoCheatPlus taken from NoCheatPlus/Issues. Please report any issues you have (even if they have already been reported) to the issues page. I'll be working to fix some more issues in the future
    • Added Checks
    I've added an InventoryMove check, which prevents players from interacting with their inventory if they shouldn't be allowed to (Sprinting, sneaking, swimming, etc.) This can fix some "Auto" mods such as AutoArmor, AutoPotion, AutoSoup, etc.. I've also allowed for further configuration of the fight.angle check, both to improve false positives and possibly stricter on cheaters. I'll be adding information about these values to the wiki in the future. I also want to further focus on prevent KillAura and other combat cheats that put NoCheatPlus behind. I do want to stick with asofolds main goal of preventing cheats by not posing "traps" for clients but rather use server sided detection/long term protection. I still need to do more research about preventing these cheats. If you have any ideas, feel free to share.
    • The config
    Once I finish 1.13 work I'll continue working on the config. Getting a better insight of the code has helped me figure out better values for the config. There's also many issues I encountered while running the config on my server that I never pushed the changes to this config.

    I said this before, but I'll be posting this fork to the resources section for better management. I just want to finalize everything with 1.13 before publishing.
    • Like Like x 1
  16. I've gone through all blocks that have different block margins and set new block.override flags. These flags are more realistic for the blocks, rather than just ignoring any flags while on the block. Should fix many issues with 1.13.

    Code (Text):
          LILY_PAD: default+ign_passable+ground_height
          MAGMA_BLOCK: default+ground
          ZOMBIE_HEAD: solid+ground_height+ground+ign_passable
          PLAYER_HEAD: solid+ground_height+ground+ign_passable
          CREEPER_HEAD: solid+ground_height+ground+ign_passable
          DRAGON_HEAD: solid+ground_height+ground+ign_passable
          SKELETON_SKULL: solid+ground_height+ground+ign_passable
          ZOMBIE_WALL_HEAD: solid+ground_height+ground+ground+ign_passable
          PLAYER_WALL_HEAD: solid+ground_height+ground+ign_passable
          CREEPER_WALL_HEAD: solid+ground_height+ground+ign_passable
          DRAGON_WALL_HEAD: solid+ground_height+ground+ign_passable
          SKELETON_WALL_SKULL: solid+ground_height+ground+ign_passable
          WITHER_SKELETON_WALL_SKULL: solid+ground_height+ground+ign_passable
          OAK_SLAB: default+GROUND+XZ100+ground_height
          DAYLIGHT_DETECTOR: default+GROUND+XZ100+ground_height
          SPRUCE_SLAB: default+GROUND+XZ100+ground_height
          BIRCH_SLAB: default+GROUND+XZ100+ground_height
          JUNGLE_SLAB: default+GROUND+XZ100+ground_height
          ACACIA_SLAB: default+GROUND+XZ100+ground_height
          DARK_OAK_SLAB: default+GROUND+XZ100+ground_height
          STONE_SLAB: default+GROUND+XZ100+ground_height
          SANDSTONE_SLAB: default+GROUND+XZ100+ground_height
          PETRIFIED_OAK_SLAB: default+GROUND+XZ100+ground_height
          COBBLESTONE_SLAB: default+GROUND+XZ100+ground_height
          BRICK_SLAB: default+GROUND+XZ100+ground_height
          STONE_BRICK_SLAB: default+GROUND+XZ100+ground_height
          NETHER_BRICK_SLAB: default+GROUND+XZ100+ground_height
          QUARTZ_SLAB: default+GROUND+XZ100+ground_height
          RED_SANDSTONE_SLAB: default+GROUND+XZ100+ground_height
          PURPUR_SLAB: default+GROUND+XZ100+ground_height
          PRISMARINE_SLAB: default+GROUND+XZ100+ground_height
          PRISMARINE_BRICK_SLAB: default+GROUND+XZ100+ground_height
          DARK_PRISMARINE_SLAB: default+GROUND+XZ100+ground_height
          WHITE_BED: default+ground_height
          ORANGE_BED: default+ground_height
          MAGENTA_BED: default+ground_height
          LIGHT_BLUE_BED: default+ground_height
          LIME_BED: default+ground_height
          YELLOW_BED: default+ground_height
          PINK_BED: default+ground_height
          GRAY_BED: default+ground_height
          LIGHT_GRAY_BED: default+ground_height
          CYAN_BED: default+ground_height
          PURPLE_BED: default+ground_height
          BLUE_BED: default+ground_height
          BROWN_BED: default+ground_height
          GREEN_BED: default+ground_height
          RED_BED: default+ground_height
          BLACK_BED: default+ground_height
          END_ROD: default+ign_passable
          IRON_BARS: THIN_FENCE+VARIABLE+ground_height+ground
          GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          WHITE_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          LIME_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          PINK_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          GRAY_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          CYAN_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          BLUE_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          BROWN_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          GREEN_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          RED_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          BLACK_STAINED_GLASS_PANE: THIN_FENCE+VARIABLE+ground_height+ground
          ANVIL: default+ground_height
          DAMAGED_ANVIL: default+ground_height
          CHIPPED_ANVIL: default+ground_height
          GRASS_PATH: default+ground_height
          SHULKER_BOX: default+HEIGHT150+ground
          WHITE_SHULKER_BOX: default+HEIGHT150+ground
          ORANGE_SHULKER_BOX: default+HEIGHT150+ground
          MAGENTA_SHULKER_BOX: default+HEIGHT150+ground
          LIGHT_BLUE_SHULKER_BOX: default+HEIGHT150+ground
          YELLOW_SHULKER_BOX: default+HEIGHT150+ground
          LIME_SHULKER_BOX: default+HEIGHT150+ground
          PINK_SHULKER_BOX: default+HEIGHT150+ground
          GRAY_SHULKER_BOX: default+HEIGHT150+ground
          LIGHT_GRAY_SHULKER_BOX: default+HEIGHT150+ground
          CYAN_SHULKER_BOX: default+HEIGHT150+ground
          PURPLE_SHULKER_BOX: default+HEIGHT150+ground
          BLUE_SHULKER_BOX: default+HEIGHT150+ground
          BROWN_SHULKER_BOX: default+HEIGHT150+ground
          GREEN_SHULKER_BOX: default+HEIGHT150+ground
          RED_SHULKER_BOX: default+HEIGHT150+ground
          BLACK_SHULKER_BOX: default+HEIGHT150+ground
          CHEST: ground_height+ground
          TRAPPED_CHEST: ground_height+ground
          ENDER_CHEST: ground_height+ground
          FARMLAND: default+height100+ground_height+min_height16_15
          TURTLE_EGG: ground_height+ground
          SEA_PICKLE: default+ground_height+ground
          CAULDRON: ground_height+ground
          CONDUIT: ground_height+ground

    I'll be adding this to the fork to come as default, but a some more time will be needed since I can't copy + paste this in. Please report any issues here:
    • Like Like x 1
  17. I've created a page of concepts or ideas that could be implemented into NoCheatPlus. Apart of my goal of this fork, is to help update NoCheatPlus to prevent modern clients. Again, I want to keep asofolds idea of an anticheat where "traps" are not setup where clients are meant to fail (KillAura bots).

    As for 1.13, there are still a few issues with blocks that need to be fixed. These issues have been created on the issue page.

    Please report any issues, any added checks you may want, or false positives with NoCheatPlus:

    Concept Page:
  18. SpacePuppeh


    I thought asofold didn't add those checks due to your later point that they are somewhat easily bypassed? This is the same reason he said that he doesn't add anti-knockback (yet).
  19. I'm not aware of asofold ever rejecting implementing an InventoryMove check. By "traps", I would assume it would be things that are changed with the client and seeing how the client responds to those actions. For example, KillAura Bots (A bot is sent to the client and the client should not hit this bot) or an AutoArmor check (where armor is removed or armor is placed in the inventory to see if the player apply's the armor.) His idea is that things should be done server-sided without interacting with client, by checking if an action is possible and flagging if it is not. InventoryMove is a quite simple check and could be bypassed. Just because something can be "easily bypassed" does not mean it can't be implemented. It's simply enforcing vanilla minecraft on the player.

    I'm not 100% about this, but I think a knockback check was implemented early on, but was later removed because latency was too much of a factor when trying to enforce knockback. I think this was removed shortly before I began work on a config. Looks like the check I was referring to was a "check used to verify if players aren't "knockbacking" other players when it's not technically possible." Adding an AntiKnockback check could be tricky, because latency plays a large part in this. I'll do some more further research and see if this could be somehow implemented. Here's an issue where AnitKnockback check was discussed:

    Discussion of the KillAura Bot can be found here:

    Quote from asofold: "Entites means posing traps for cheat implementations to fall for, while the principles of direction for NCP rather mean to find envelopes to fit around vanilla behavior. Reason being that we're free + open source + low resource developer-wise, so we/i prefer methods that provide some kind of lasting protection rather. There are gray zones and Minecraft keeps adding weird stuff, but that's the basic direction i took here."

    I have to say that most of NCP checks have provided long lasting protection (They protect against what they are advertised as such.) It's mostly that more needs to be done to further this protection against clients that have evolved. You can see this by comparing a client in early minecraft against clients now.
    #799 Captain_Obvious, Apr 1, 2019
    Last edited: Apr 1, 2019
    • Like Like x 1
  20. Here is an updated version of the fork. Changes are listed below.

    Download Link:
    Report any issues/features requests here:

    False Positives:
    • Feeding a parrot a cookie no longer flags for fight.noswing
    • Placing blocks against ladders and carpets will no longer flag for blockplace.direction
    • Allow use of the riptide enchant [Not Done]
    Config Changes:
    • Added KeepAlive delay, will delay checking the player for KeepAlive for x amount of seconds after login
    • Added more thresholds to fight.angle (Fine tune these via ncp debug)
    • 1.13 Blocks are automatically added for new configs. Does not add if you are already using a config. [Not Done]
    New Checks:
    • InventoryMove - Prevents players from interacting with their inventory if it isn't possible
    • FastClick.ChestLimit - Prevent players from interacting with a chest shortly after opening it (Changed via config, in ms)
    • FastClick.Exclude - Exclude inventories with names defined in the config (First attempt to prevent false positives, do not put color codes in the list)
    • SurvivalFly - Enforce a slower speed on soul sand [Not Done]
    • Gutenburg - Allow changes to max amount of pages via config
    [Not Done] - This has not been finalized and still needs more changes. Still should work as expected.

    Known Issues:
    • Jumping on/off shulker boxes cause some survivalfly issues [1.13 Issue]
    • Sprinting + Jumping on some blocks with different block margins flag survivalfly [1.13 Issue]
    • Jumping/Moving right after leaving a bed flags for survivalfly [NCP Issue]
    Once 1.13 block flags are finalized, this project will be moved to resources.
    • Like Like x 1