├── .gitignore
├── Resources
├── Icons
│ ├── PDF.gif
│ └── NoLogo.gif
├── LagMeter.gif
├── Notepad++.gif
├── Multiworld.gif
├── ActionLevels.gif
├── Installation.gif
├── ActionExplenation.gif
├── StringsExplenation.gif
├── world_nether_config.zip
└── Banners
│ ├── NoCheatPlusDefault.gif
│ └── NoCheatPlusChristmasNewYear.gif
├── Todo.md
├── _Footer.md
├── README.md
├── Tickets.creole
├── Settings
├── Configuration.md
├── Miscellaneous.md
├── Checks
│ ├── [Blockplace]-Direction.md
│ ├── [Blockplace]-Reach.md
│ ├── [Blockbreak]-Direction.md
│ ├── [Inventory]-Gutenberg.md
│ ├── [Blockplace]-Autosign.md
│ ├── [Blockinteract]-Reach.md
│ ├── [Fight]-Noswing.md
│ ├── [Blockbreak]-Noswing.md
│ ├── [Blockbreak]-Reach.md
│ ├── [Chat]-Color.md
│ ├── [Blockplace]-Against.md
│ ├── [Combined]-Munchhausen.md
│ ├── [Blockbreak]-Wrongblock.md
│ ├── [Inventory]-Items.md
│ ├── [Blockinteract]-Visible.md
│ ├── [Fight]-Angle.md
│ ├── [Fight]-Godmode.md
│ ├── [Combined]-Enderpearl.md
│ ├── [Moving]-Morepacketsvehicle.md
│ ├── [Fight]-Selfhit.md
│ ├── [Inventory]-Open.md
│ ├── [Net]-Flyingfrequency.md
│ ├── [Fight]-Criticals.md
│ ├── [Combined]-Bedleave.md
│ ├── [Net]-Sounddistance.md
│ ├── [Blockinteract]-Direction.md
│ ├── [Inventory]-Instanteat.md
│ ├── [Blockplace]-Noswing.md
│ ├── [Combined]-Improbable.md
│ ├── [Fight]-Speed.md
│ ├── [Fight]-Direction.md
│ ├── [Blockplace]-Speed.md
│ ├── [Inventory]-Instantbow.md
│ ├── [Inventory]-Drop.md
│ ├── [Blockplace]-Fastplace.md
│ ├── [Chat]-Logins.md
│ ├── [Blockinteract]-Speed.md
│ ├── [Chat]-Warning.md
│ ├── [Chat]-Relog.md
│ ├── [Fight]-General.md
│ ├── [Chat]-Commands.md
│ ├── [Combined]-Yawrate.md
│ ├── [Combined]-Invulnerable.md
│ ├── [Inventory]-Fastconsume.md
│ ├── [Inventory]-Fastclick.md
│ ├── [Fight]-Fastheal.md
│ ├── [Chat]-Captcha.md
│ ├── [Moving]-Nofall.md
│ ├── [Fight]-Reach.md
│ ├── [Blockbreak]-Frequency.md
│ ├── [Moving]-Morepackets.md
│ ├── [Blockbreak]-Fastbreak.md
│ ├── [Moving]-Creativefly.md
│ ├── [Chat]-Text.md
│ ├── _Sidebar.md
│ ├── [Moving]-Passable.md
│ ├── Checks.md
│ ├── [Moving]-General.md
│ └── [Moving]-Survivalfly.md
├── Strings.md
├── Data.creole
├── Logging.creole
├── Protection.creole
├── Multiworld.md
├── General.md
├── [Settings]-Compatibility.creole
├── Commands.md
└── Permissions.md
├── Client-Modifications.md
├── wInfos
├── Markown-Examples.md
├── Contribution-Guidelines.md
└── Alternative-Markdown.md
├── YAML.md
├── _Sidebar.md
├── Compatibility.md
├── Others
├── Backgrounds.md
└── Lag.md
├── Home.md
├── Development
├── Build-Infos.md
├── Notable-Builds.md
├── bip
│ ├── bip-3.16.1-and-later.md
│ ├── bip-3.13.7-and-later.md
│ └── bip-3.15.0-and-later.md
├── Discussion
│ ├── FakeEntities.md
│ └── ClientSideAntiCheat.md
├── API.md
├── Debugging.md
└── Roadmap.md
├── Getting-Started.md
├── Features.md
├── Fundamentals.md
├── Known-Issues.md
└── FAQ.md
/.gitignore:
--------------------------------------------------------------------------------
1 | *.db
2 | /.project
3 |
--------------------------------------------------------------------------------
/Resources/Icons/PDF.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Icons/PDF.gif
--------------------------------------------------------------------------------
/Resources/LagMeter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/LagMeter.gif
--------------------------------------------------------------------------------
/Resources/Notepad++.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Notepad++.gif
--------------------------------------------------------------------------------
/Resources/Multiworld.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Multiworld.gif
--------------------------------------------------------------------------------
/Todo.md:
--------------------------------------------------------------------------------
1 | ALL DONE.
2 |
3 | TODO: Find what to do, e.g. half of settings uncovered, use issue tracker.
--------------------------------------------------------------------------------
/_Footer.md:
--------------------------------------------------------------------------------
1 | [Home](Home) | [Permissions](Permissions) | [Commands](Commands) | [Backgrounds](Backgrounds)
--------------------------------------------------------------------------------
/Resources/ActionLevels.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/ActionLevels.gif
--------------------------------------------------------------------------------
/Resources/Icons/NoLogo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Icons/NoLogo.gif
--------------------------------------------------------------------------------
/Resources/Installation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Installation.gif
--------------------------------------------------------------------------------
/Resources/ActionExplenation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/ActionExplenation.gif
--------------------------------------------------------------------------------
/Resources/StringsExplenation.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/StringsExplenation.gif
--------------------------------------------------------------------------------
/Resources/world_nether_config.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/world_nether_config.zip
--------------------------------------------------------------------------------
/Resources/Banners/NoCheatPlusDefault.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Banners/NoCheatPlusDefault.gif
--------------------------------------------------------------------------------
/Resources/Banners/NoCheatPlusChristmasNewYear.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NoCheatPlus/Docs/HEAD/Resources/Banners/NoCheatPlusChristmasNewYear.gif
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Docs
2 |
3 | TODO: Links to project(s), wiki(s), start page(s).
4 |
5 | Suggestions:
6 | * Add a wiki here too? Allows collaborators to experiment/push to there directly and inspect changes.
--------------------------------------------------------------------------------
/Tickets.creole:
--------------------------------------------------------------------------------
1 |
2 | [[https://github.com/NoCheatPlus/Issues/issues|Tickets are now hosted on GitHub.]]
3 |
4 | TODO: Enjoy the search features. Might add direct links for typical searches here or elsewhere.
--------------------------------------------------------------------------------
/Settings/Configuration.md:
--------------------------------------------------------------------------------
1 | * [Multiworld](Multiworld)
2 | * [Data](Data)
3 | * [Logging](Logging)
4 | * [Protection](Protection)
5 | * [Checks](Checks)
6 | * [General](General)
7 | * [Strings](Strings)
8 | * [Miscellaneous](Miscellaneous)
9 | * [Compatibility](Compatibility)
--------------------------------------------------------------------------------
/Settings/Miscellaneous.md:
--------------------------------------------------------------------------------
1 | # Configversion
2 |
3 | Set `notify` to false to suppress the messages about outdated configurations. Only the main configuration file is checked at present.
4 | The other entries are not meant to be changed by hand, they indicate with which version the config was created and last saved back.
5 |
6 |
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Direction.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.direction`
2 | Permission (bypass): `nocheatplus.checks.blockplace.direction`
3 | Exemption: `BLOCKPLACE_DIRECTION`
4 |
5 | The Direction check demands players to look where they place blocks.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Reach.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.reach`
2 | Permission: `nocheatplus.checks.blockplace.reach`
3 | Exemption: `BLOCKPLACE_REACH`
4 |
5 | Here reach checks that the distance from player to the block they tried to place on was legal.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockbreak]-Direction.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockbreak.direction`
2 | Permission (bypass): `nocheatplus.checks.blockbreak.direction`
3 | Exemption: `BLOCKBREAK_DIRECTION`
4 |
5 | The Direction check forces players to look (eye location) at the block they want to break.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Gutenberg.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.gutenberg`
2 | Permission (bypass): `nocheatplus.checks.inventory.gutenberg`
3 | Exemption: `INVENTORY_GUTENBERG`
4 |
5 | Gutenberg prevents players from writing books that have more then 50 pages using a weakness in Minecraft.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Client-Modifications.md:
--------------------------------------------------------------------------------
1 | Some nice Minecraft client mod developers allow us to control their mod over a hidden motd message.
2 |
3 | Currently NoCheatPlus supports:
4 | * CJB Mods
5 | * Rei's Minimap
6 | * Smart Moving
7 | * Zombe's modpack
8 | * JourneyMap
9 |
10 | If you have another mod you want us to support then please contact us.
11 |
12 | **Related:**
13 | * [Permissions](Permissions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Autosign.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.autosign`
2 | Permission (bypass): `nocheatplus.checks.blockplace.autosign`
3 | Exemption: `BLOCKPLACE_AUTOSIGN`
4 |
5 | This check ensures that players spend a minimum amount of time per written line, after having placed a sign.
6 |
7 |
8 | **Related**
9 | * [Active](General#Active)
10 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockinteract]-Reach.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockinteract.reach`
2 | Permission (bypass): `nocheatplus.checks.blockinteract.reach`
3 | Exemption: `BLOCKINTERACT_REACH`
4 |
5 | This check makes sure that the distance from block to player is legit before that player can interact with it (open a door for example).
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Noswing.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.noswing`
2 | Permission (bypass): `nocheatplus.checks.fight.noswing`
3 | Exemption: `FIGHT_NOSWING`
4 |
5 | Players may attack entities without moving their arm. This is confusing for nearby players, as they won't see who is attacking them or the nearby creatures.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockbreak]-Noswing.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockbreak.noswing`
2 | Permission (bypass): `nocheatplus.checks.blockbreak.noswing`
3 | Exemption: `BLOCKBREAK_NOSWING`
4 |
5 | This check demands your players to swing their arm before they can break a block. The animation allows others to notice what the player is doing.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockbreak]-Reach.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockbreak.reach`
2 | Permission (bypass): `nocheatplus.checks.blockbreak.reach`
3 | Exemption: `BLOCKBREAK_REACH`
4 |
5 | Players may slightly increase the distance at which they can break blocks. This check will try to identify that by comparing player and block location.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Strings.md:
--------------------------------------------------------------------------------
1 | Strings is our elegant solution to prevent insanely long actions for every check. You can basically imagine it as redirection or alias kinda.
2 |
3 | The template:
4 | 
5 |
6 | For this to execute you would adjust your actions like this:
7 | cancel vl>1500 log:flylong:2:5:cif **cmd:baybay**
8 |
9 | **Related**
10 | * [Actions](General#actions)
11 |
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Color.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.color`
2 | Permission (bypass): `nocheatplus.checks.chat.color`
3 | Exemption: `CHAT_COLOR`
4 |
5 | Color is an obsolete check that was designed to stop players from using color in their chat messages even tho they didn't have the permissions for color. Mojang fixed this long time ago but you can still use it if you run on a very old Minecraft version.
6 |
7 |
8 | **Related**
9 | * [Active](General#Active)
10 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Against.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.against`
2 | Permission (bypass): `nocheatplus.checks.blockplace.against`
3 | Exemption: `BLOCKPLACE_AGAINST`
4 |
5 |
6 | This check prevents players to place blocks against liquids or air.
7 |
8 | **Notes**
9 | * Some mods such as IC2 (via Forge) might allow placing blocks such as cables in/against air, so this feature might conflict there.
10 |
11 | **Related**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Combined]-Munchhausen.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.combined.munchhausen`
2 | Permission (bypass): `nocheatplus.checks.combined.munchhausen`
3 | Exemption: `COMBINED_MUNCHHAUSEN`
4 |
5 | Enable this check if you see players hook themselves with a fishing rods to abuse the knockback for flying. At the moment we are speculating if it will ever be possible to do, the solution however is already here if it ever happens.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockbreak]-Wrongblock.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockbreak.wrongblock`
2 | Permission (bypass): `nocheatplus.checks.blockbreak.wrongblock`
3 | Exemption: `BLOCKBREAK_WRONGBLOCK`
4 |
5 | This check forces your players to interact with the block first before they can break it.
6 |
7 | | Option | Description |
8 | | :----- | :--------- |
9 | | level | Accumulated value after which to trigger a violation. |
10 |
11 | **Referneces**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Items.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.items`
2 | Permission (bypass): `nocheatplus.checks.inventory.items`
3 | Exemption: `INVENTORY_ITEMS`
4 |
5 | This check was a hotfix against a devastating exploit in Minecraft 1.4.5 (and lower) which allowed hackers to apply unlimited enchantments on a book without paying any exp or similar. So a book could kill players instantly or have loot X on it and drop 100 leather from a cow.
6 |
7 | **Notes**
8 | * In Minecraft 1.4.6 this exploit got fixed and the "enchanted books" got introduced into the game
--------------------------------------------------------------------------------
/Settings/Checks/[Blockinteract]-Visible.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockinteract.visible`
2 | Permission (bypass): `nocheatplus.checks.blockinteract.visible`
3 | Exemption: `BLOCKINTERACT_VISIBLE`
4 |
5 | Visible uses a simplified method of ray-tracing to prevent players from interaction with blocks trough walls.
6 |
7 | **Notes**
8 | * This check does not cover interaction with entities such as item frames, paintings, mobs in general.
9 |
10 | **Related**
11 | * [Active](General#Active)
12 | * [Actions](General#Actions)
13 | * [Ray tracing](Backgrounds#ray-tracing)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Angle.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.angle`
2 | Permission (bypass): `nocheatplus.checks.fight.angle`
3 | Exemption: `FIGHT_ANGLE`
4 |
5 | Angle prevents players from hitting multiple entities at the same time (2 or more).
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | threshold | Set the amount of penalty in ms (milliseconds) a player will have to wait before he can attack again if he/she failed the angle check once. |
10 |
11 | **Related**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Godmode.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.godmode`
2 | Permission (bypass): `nocheatplus.checks.fight.godmode`
3 | Exemption: `FIGHT_GODMODE`
4 |
5 | Godmode combines a couple of mechanisms to prevent players from abusing weakness in Bukkit/MC to completely avoid damage.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | minage | Minimal delay to count it as lagging. |
10 | | maxage | Maximal delay to count it as lagging. |
11 |
12 | **Related**
13 | * [Active](General#Active)
14 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Combined]-Enderpearl.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.combined.enderpearl`
2 | Permission (bypass): `nocheatplus.checks.combined.enderpearl`
3 | Exemption: `COMBINED_ENDERPEARL`
4 |
5 | This check aims to prevent no-clipping by abusing the teleportation of ender pearls.
6 |
7 | | Option | Description |
8 | | :-------------- | :---------- |
9 | | preventclickblock | Prevent players from throwing a ender pearl if their client has a solid block in front of them. |
10 |
11 | **Related**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
14 | * [[Moving] Passable](%5BMoving%5D-Passable)
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-Morepacketsvehicle.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.moving.morepacketsvehicle`
2 | Permission (bypass): `nocheatplus.checks.moving.morepacketsvehicle`
3 | Exemption: `MOVING_MOREPACKETSVEHICLE`
4 |
5 | The morepacketsvehicle check is complementary to the "morepackets" check. While the "morepacket" check limits the number of player-move packets send per second, this "morepacketsvehicle" limits the number of vehicle-move (minecarts, boats, ...) packets sent per second.
6 |
7 | **Related**
8 | * [Active](General#Active)
9 | * [Actions](General#Actions)
10 | * [[Moving] Morepackets](%5BMoving%5D-Morepackets)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Selfhit.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.selfhit`
2 | Permission (bypass): `nocheatplus.checks.fight.selfhit`
3 | Exemption: `FIGHT_SELFHIT`
4 |
5 | This check was designed to prevent hackers from hitting themselves, abusing that knockback effect and fly or do other illegal things. However Mojang fixed this exploit in Minecraft 1.4.5 and higher, so you can disable this without worries if you are on a up to date Minecraft version.
6 |
7 | **Notes**
8 | * Leaving selfhit enabled wont conflict with Mojangs or Spigots fix on this exploit
9 |
10 | **Related**
11 | * [Active](General#Active)
12 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Open.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.open`
2 | Permission (bypass): `nocheatplus.checks.inventory.open`
3 | Exemption: `INVENTORY_OPEN`
4 |
5 | In order to support Minecraft in preventing dupe bugs, we have come up with a simple idea to close inventories on teleports and other activities.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | close | Set to true to close inventories if conflicting other actions. |
10 | | cancelother | Cancel other actions as well that conflict with an open inventory. |
11 |
12 | **Related**
13 | * [Active](General#Active)
--------------------------------------------------------------------------------
/Settings/Checks/[Net]-Flyingfrequency.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.net.flyingfrequency`
2 | Permission (bypass): `nocheatplus.checks.net.flyingfrequency`
3 | Exemption: `NET_FLYINGFREQUENCY`
4 | Depends on: `ProtocolLib (plugin)`
5 |
6 | This check hooks into ProcolLib to prevent players from spamming packets in order to execute exploits that are devastating to your server (magnet hack and more).
7 |
8 | | Option | Description |
9 | | :------------------ | :---------- |
10 | | seconds | |
11 | | maxpackets | |
12 | | cancelredundant | |
13 |
14 | **Related**
15 | * [Active](General#Active)
16 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Criticals.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.criticals`
2 | Permission (bypass): `nocheatplus.checks.fight.criticals`
3 | Exemption: `FIGHT_CRITICALS`
4 | Better with: `[Moving] Survivalfly`
5 |
6 | This check prevents players from doing more damage to players and creatures by faking critical hits.
7 |
8 | | Option | Description |
9 | | :------------------ | :---------- |
10 | | falldistance | Jumping lower than this limit allows criticals violations. |
11 |
12 | **Notes**
13 | * In MC you need to hit someone while falling to get a critical hit.
14 |
15 | **Related**
16 | * [Active](General#Active)
17 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Combined]-Bedleave.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.combined.bedleave`
2 | Permission (bypass): `nocheatplus.checks.combined.beadleave`
3 | Exemption: `COMBINED_BEDLEAVE`
4 |
5 | This check makes sure that there has been a bed near the player if he/she tries to leave it. Without bedleave players could abuse the small "teleport" you do after exiting a bed.
6 |
7 | **Notes**
8 | * Can be used for Invalid and slow (SurvivalFly bypass) movements
9 | * Exploit opens up the possibility to create a client sided god-mode (invincible player)
10 |
11 | **Related**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
14 | * [[Moving] SurvivalFly](%5BMoving%5D-Survivalfly)
--------------------------------------------------------------------------------
/Settings/Checks/[Net]-Sounddistance.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.net.sounddistance`
2 | Permission (bypass): `nocheatplus.checks.net.sounddistance`
3 | Exemption: `NET_SOUNDDISTANCE`
4 | Depends on: `ProtocolLib (plugin)`
5 |
6 | This check prevents hackers from tracking far away players by abusing the weather mechanics in Minecraft. It needs ProtocolLib enabled and running, otherwise it wont load up.
7 |
8 | | Option | Description |
9 | | :------------------ | :---------- |
10 | | maxdistance | Limit the distance (in blocks) at which weather can be heard for each player. |
11 |
12 | **Related**
13 | * [Active](General#Active)
14 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockinteract]-Direction.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockinteract.direction`
2 | Permission (bypass): `nocheatplus.checks.blockinteract.direction`
3 | Exemption: `BLOCKINTERACT_DIRECTION`
4 |
5 | The Direction check forces players to look (eye location) at the block they want to interact with.
6 |
7 | **Notes**
8 | * The BukkitAPI throws a interaction event before the place/break events come, so the BLOCKINTERACT_DIRECTION check will pretty much always catch the cheat attempt first before the other 2 do. If you wish to only check Direction on placing/breaking then disable the interaction one first.
9 |
10 | **Related**
11 | * [Active](General#Active)
12 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Instanteat.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.instanteat`
2 | Permission (bypass): `nocheatplus.checks.inventory.instanteat`
3 | Exemption: `INVENTORY_INSTANTEAT`
4 |
5 | This check was designed to prevent players from eating food faster then usually possible.
6 |
7 | **Note**
8 | * NoCheatPlus will detect your CraftBukkit version and replace this check with "fastconsume" if your server supports the consume event
9 | * This check has been tested and doesn't cause any problems with plugins that modify eat speed such as FastEat or AutoSoup.
10 |
11 | **Related**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
14 | * [[Inventory] Fastconsume](%5BInventory%5D-Fastconsume)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Noswing.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.noswing`
2 | Permission: `nocheatplus.checks.blockplace.noswing`
3 | Exemption: `BLOCKPLACE_NOSWING`
4 |
5 | Ensures that the players swing their arm before they can place a block.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | exemptions | Add block names here that you want to not be affected by this check. |
10 |
11 | **Notes**
12 | * We put exemptions in here because of some strange Minecraft/Craftbukkit bugs where a legit player wouldn't swing his arm when placing a lily pad or trying to use a flint and steel.
13 |
14 | **Related**
15 | * [Active](General#Active)
16 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Combined]-Improbable.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.combined.improbable`
2 | Permission (bypass): `nocheatplus.checks.combined.improbable`
3 | Exemption: `COMBINED_IMPROBABLE`
4 |
5 | The Improbable check combines a couple of fight checks to ensure a more precise fight checking for low level hacks that otherwise would only trigger low violations in various fight checks.
6 |
7 | | Option | Description |
8 | | :-------------- | :---------- |
9 | | level | The required level before Improbable takes actions against those kind of hacks. |
10 |
11 | **Related**
12 | * [Active](General#Active)
13 | * [Actions](General#Actions)
14 | * [[Fight] Reach](%5BFight%5D-Reach)
15 | * [[Fight] Speed](%5BFight%5D-Speed)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Speed.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.speed`
2 | Permission (bypass): `nocheatplus.checks.fight.speed`
3 | Exemption: `FIGHT_SPEED`
4 |
5 | Minecraft doesn't restrict the amount of hits a player can do in each second so we made a check that will prevent a player from going over the allowed hit speed limit (more hits = more damage).
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | limit | How many hits should be allowed to do in each second? |
10 | | shortterm _ticks_ | |
11 | | shortterm _limit_ | |
12 |
13 | **Related**
14 | * [Active](General#Active)
15 | * [Actions](General#Actions)
16 | * [Long-term and Short-term](Backgrounds#long-term-and-short-term)
--------------------------------------------------------------------------------
/wInfos/Markown-Examples.md:
--------------------------------------------------------------------------------
1 | # Formatting
2 | **Bolt**
3 | _Italic_
4 | `Code`
5 |
6 | # Headers
7 |
8 | # 1
9 | ## 2
10 | ### 3
11 | #### 4
12 | ##### 5
13 | ###### 6
14 |
15 | # Links
16 |
17 | http://google.com
18 | [Google](http://google.com)
19 |
20 | 
21 |
22 | # References
23 |
24 | [text to link][link1]
25 |
26 | [link1]: http://where.it.links.to
27 |
28 |
29 | # Tables
30 |
31 | | Option | Description |
32 | | :------------------ | :---------- |
33 | | stuff | Tstuff |
34 |
35 | Option | Option
36 | ------ | ------
37 | Text | Text
38 |
39 | # More
40 |
41 | https://guides.github.com/features/mastering-markdown/
42 | https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
43 |
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Direction.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.direction`
2 | Permission (bypass): `nocheatplus.checks.fight.direction`
3 | Exemption: `FIGHT_DIRECTION`
4 |
5 | This check forces players to look (eye location) at creatures/players they want to hit.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | strict | Extra strict interpretation, makes close combat more difficult. |
10 | | penalty | Set the attack penalty in ms (milliseconds) that a player will receive (cant hit) if he/she fails this check. |
11 |
12 | **Notes**
13 | * Disabling this would allow players to fight entities while having their back turned on them.
14 |
15 | **Related**
16 | * [Active](General#Active)
17 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Speed.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.speed`
2 | Permission: `nocheatplus.checks.blockplace.speed`
3 | Exemption: `BLOCKPLACE_SPEED`
4 |
5 | Prevents players from throwing projectiles (experience bottles, eggs, monster eggs, eyes of ender, ender pearls) really quickly in order to crash/lag the server.
6 |
7 | | Option | Description |
8 | | :-------- | :---------- |
9 | | interval | The time (in milliseconds) between each thrown projectile. In theory it takes more than 150 ms if the player is keeping his/her right button pressed. |
10 |
11 | **Notes**
12 | * We set the default value to something lower then 150 ms in order to smooth out false positives that occur with latency
13 |
14 | **Related**
15 | * [Active](General#Active)
16 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Instantbow.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.instantbow`
2 | Permission (bypass): `nocheatplus.checks.inventory.instantbow`
3 | Exemption: `INVENTORY_INSTANTBOW`
4 |
5 | This check will make sure that your players use the proper fire speed to shoot arrows with a bow. InstantBow will take actions against players that try to go over the allowed limit.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | strict | If set to true, this monitors time from pulling to firing. If set to false, this only regards the time between shots - use for problems with lag/latency, at the cost of allowing one instant shot. |
10 | | delay | |
11 |
12 | **Related**
13 | * [Active](General#Active)
14 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/YAML.md:
--------------------------------------------------------------------------------
1 | NoCheatPlus uses YAML for the configuration which stands for "**Y**et **A**nother **M**arkdown **L**anguage"
2 |
3 |
4 | * Only use spaces and never tabs (for indentation).
5 | * Keep the indentation level: Never change the amount of white-spaces in front of options in the config file "config.yml".
6 | * Don't insert special characters. If you plan on complicated text entries, wrap them like '...' or "..." to be save.
7 | * Always refer to the default config file for reference.
8 | * You can use a [YAML Parser] to verify that your .yml is actually valid
9 | * For those that use Notepad++ to edit their YAML files we recommend to enable "Replace by space" in Settings -> Preferences -> Tab Settings
10 | 
11 |
12 |
13 | [YAML Parser]: http://yaml-online-parser.appspot.com/
--------------------------------------------------------------------------------
/_Sidebar.md:
--------------------------------------------------------------------------------
1 | ## [Home](Home)
2 | * [Getting Started](Getting-Started)
3 | * [FAQ](FAQ)
4 | * [Known Issues](Known-Issues)
5 | * [Compatibility](Compatibility)
6 | * [Features](Features)
7 | * [Commands](Commands)
8 | * [Permissions](Permissions)
9 | * [Notable Builds](Notable-Builds)
10 |
11 | ## [Configuration](Configuration)
12 | * [Multiworld](Multiworld)
13 | * [Data](Data)
14 | * [Logging](Logging)
15 | * [Protection](Protection)
16 | * [Checks](Checks)
17 | * [General](General)
18 | * [Strings](Strings)
19 | * [Miscellaneous](Miscellaneous)
20 | * [Compatibility]([Settings]-Compatibility)
21 |
22 | ## Developers
23 | * [API](API)
24 | * [Debugging](Debugging)
25 | * [Dev Pinboard](Dev-Pinboard)
26 | * [Build Infos](Build-Infos)
27 |
28 | ## Others
29 | * [Backgrounds](Backgrounds)
30 | * [Lag](Lag)
31 |
32 |
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Drop.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.drop`
2 | Permission (bypass): `nocheatplus.checks.inventory.drop`
3 | Exemption: `INVENTORY_DROP`
4 |
5 | Hackers can drop their entire inventory with 1 click to lag and crash your server, to prevent this we simply limit the amount of drops a player is allowed to do.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | limit | Set the amount of items a player can drop in one timeframe. |
10 | | timeframe | Set the limit in ms (milliseconds) when the drop check should reset and start counting from scratch. |
11 |
12 | **Notes**
13 | * If (for example) your limit is set to 100 and your timeframe to 20, will allow your players to drop 100 items in 20 milliseconds
14 |
15 | **Related**
16 | * [Active](General#Active)
17 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockplace]-Fastplace.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockplace.fastplace`
2 | Permission: `nocheatplus.checks.blockplace.fastplace`
3 | Exemption: `BLOCKPLACE_FASTPLACE`
4 |
5 | Fastplace will prevent players from placing blocks too quickly by checking the interval of time elapsed since they've placed their last block. This should prevent players from using the features called "FastPlace" and "Build" of their modified client.
6 |
7 | | Option | Description |
8 | | :-------------- | :---------- |
9 | | limit | Here you can set the maximal amount of blocks a player can place within 2 seconds. |
10 | | shortterm _ticks_ | Set the amount of server ticks that Fastplace has to wait before it checks again in short term. |
11 | | shortterm _limit_ | Set the maximal amount of blocks that a player is allowed to place in short term. |
12 |
13 |
14 | **Related**
15 | * [Active](General#Active)
16 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Logins.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.logins`
2 | Permission (bypass): `nocheatplus.checks.chat.logins`
3 | Exemption: `CHAT_LOGINS`
4 |
5 | This check limits the amount of players that can join in a short time.
6 |
7 | | Option | Description |
8 | | :----------------- | :---------- |
9 | | startupdelay | Set delay in seconds till NoCheatPlus enables this check after a server start. |
10 | | perworldcount | If set to true, the counting will be performed for each world individually and not server-wide. |
11 | | seconds | Duration in seconds before NoCheatPlus purges the login data and starts counting all over again. |
12 | | limit | Number of logins that may happen within the specified time (seconds). |
13 | | kickmessage | This message will be shown to those players that get kicked because too many other players logged in at the same time. |
14 |
15 |
16 | **Related**
17 | * [Active](General#Active)
18 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockinteract]-Speed.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockinteract.speed`
2 | Permissions: `nocheatplus.checks.blockinteract.speed`
3 | Exemption: `BLOCKINTERACT_SPEED`
4 |
5 | The speed check limits the amount of interactions a player can do within a given time frame. It was originally developed to prevent spam on blocks like noteblocks which could even crash clients with bad hardware.
6 |
7 | | Option | Description |
8 | | :-------- | :---------- |
9 | | interval | Interval in ms (milliseconds) for how long the speed check will keep the counted data before starting from 0 again. |
10 | | limit | Maximal amount of interactions that can be done in that given interval |
11 |
12 | **Notes**
13 | * Be aware that its possible to do 20-30 interactions in 2 seconds even without a modified client
14 | * Trying to constantly break grass in a protected area (WorldGuard) can create about 35-45 interactions in 2 seconds.
15 |
16 | **Related**
17 | * [Active](General#Active)
18 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Warning.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.warning`
2 | Depends on: `[Chat] Text` or `[Chat] Commands`
3 |
4 | Allows you to warn the player of the chat.text and chat.commands weight levels, possibly before a violation is triggered.
5 |
6 | | Option | Description |
7 | | :------------- | :---------- |
8 | | level | Percentage of level at which to warn. |
9 | | message | This message will be sent to all of the players that fail a chat check. |
10 | | timeout | Time in seconds before warning again. |
11 |
12 | **Notes**
13 | * Currently warning does not necessarily happen before violations are being triggered.
14 | * Color codes are supported in message config
15 | * If for example your CHAT_TEXT_SHORTTERM check has level set to 160 you calculate: (160 / 100) * level you set here in warning. Result= The level at which warning will trigger for CHAT_TEXT_SHORTTERM
16 |
17 | **Related**
18 | * [Active](General#Active)
19 | * [[Chat] Text](%5BChat%5D-Text)
20 | * [[Chat] Commands](%5BChat%5D-Commands)
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Relog.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.relog`
2 | Permission (bypass): `nocheatplus.checks.chat.relog`
3 | Exemption: `CHAT_RELOG`
4 |
5 | Relog prevents players from re-logging too fast.
6 |
7 | | Setting | Description |
8 | | :--------------------- | :---------- |
9 | | timeout | Time in ms (milliseconds) which a player has to wait before re-logging again. |
10 | | warning _message_ | Set the warning message that will get sent to all players that tried to relog too fast. |
11 | | warning _number_ | Amount of warnings that need to occur before kicking a player for "too fast re-logging". This resets after "warning timeout" executed. |
12 | | warning _timeout_ | Time in milliseconds after which the number of warnings sent resets. |
13 | | kickmessage | Message to display when a player gets kicked by relog check. |
14 |
15 | **Notes**
16 | * Warning message supports [color codes](http://minecraft.gamepedia.com/Formatting_codes)
17 |
18 | **Related**
19 | * [Active](General#Active)
20 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Compatibility.md:
--------------------------------------------------------------------------------
1 | # Plugin Compatibility
2 | This is a small list of plugins that work together with NoCheatPlus
3 |
4 | TODO:
5 | * Link further compatibility options (config).
6 |
7 |
8 | ## Officially supported
9 | Here we list all plugins that use cncp (CompatNoCheatPlus) to support other plugins and enhance compatibility.
10 | * [mcMMO]
11 | * [Citizens 2]
12 |
13 | TODO:
14 | * MachinaCraft still exists? Does anything work on that account?
15 |
16 | TODO:
17 | * Out of the box without cncp: Citizens 2
18 |
19 | ## Plugins that support NoCheatPlus
20 | Here are all plugins which either use the NC+ API or specially account for NC+ to create a smooth game experience.
21 | * [BungeeNCPNotify] hooks into NoCheatPlus and reports violations (configurable) of certain checks to staff members on other servers.
22 | * [DoubleJump4NCP] Lets you double jump.
23 |
24 | [mcMMO]:https://dev.bukkit.org/bukkit-plugins/mcmmo/
25 | [Citizens 2]:https://dev.bukkit.org/bukkit-plugins/citizens/
26 |
27 | [DoubleJump4NCP]:https://www.spigotmc.org/resources/doublejump4ncp.1519/
28 | [BungeeNCPNotify]:https://dev.bukkit.org/bukkit-plugins/bungeencpnotify/
29 |
30 | TODO:
31 | * MagicSpells
32 |
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-General.md:
--------------------------------------------------------------------------------
1 | This page lists miscellaneous config options regarding fighting.
2 |
3 | | Option | Description |
4 | | :---------------------- | :---------- |
5 | | canceldead | Prevent dead players from hitting other players/entities while being still dead. This cancels silently.|
6 | | toolchangepenalty | Set the amount of time in milliseconds a player has to wait till they will be able to hit again after switching an item in their hotbar. Might limit AutoTool and similar by a little bit.|
7 | | pvp _knockbackvelocity_ | Set if NoCheatPlus should assume velocity events to be broken, and adjust internals to cover up for false positives. Set to default, it will enable depending on the Minecraft version (currently: 1.8 and later). Force set with true/false.|
8 | | yawrate _active_ | Yawrate tracks how fast players turn sideways. Having yawrate enabled allows to prevent some types of actions such as turning instantly and hit another player or entity. Also feeds the improbable check.|
9 |
10 | **Notes**
11 | * pvp _knockbackvelocity_ has nothing to do with the already removed fight.knockback check.
12 |
13 | **Related**
14 | * Violations
15 | * [Combined] Yawrate
16 |
--------------------------------------------------------------------------------
/wInfos/Contribution-Guidelines.md:
--------------------------------------------------------------------------------
1 | If you want to contribute content to this wiki there are a few points you should pay attention on
2 |
3 | # Formats
4 | * Please only use markdown or creole, MediaWiki for your pages
5 |
6 | # Linking
7 | * Always use internal links if you want to link on something which is on this wiki with: `[[Backend|Backend]]`
8 | * If you want to link something that is external make a references in the bottom of a wiki page like `[DBO]: https://dev.bukkit.org/bukkit-plugins/nocheatplus/` and then link to that reference with `[DBO]` (Watch Home.md for examples.
9 |
10 | ## Images
11 | * If you want to link at a internal image that you created do follow steps:
12 | * Upload your image to wiki/Resources
13 | * Use `` if you are inside the Home page of the wiki and `` if you are in a sub page
14 | * If possible try to save your images in GIF using web colors only to keep the file sizes low and quick loading
15 |
16 | ## Resources
17 | * Upload your resource to wiki/Resources and point to it with `[Example](wiki/Resources/world_nether_config.zip)` (Homepage) or `[Example](Resources/world_nether_config.zip)` (sub page)
18 |
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Commands.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.commands`
2 | Permission (bypass): `nocheatplus.checks.chat.commands`
3 | Exemption: `CHAT_COMMANDS`
4 |
5 | This check aim to prevent command spamming (player chat only).
6 |
7 | | Setting | Description |
8 | | :---------------- | :---------- |
9 | | exclusions | A list of case sensitive commands to exclude from the commands check. Commands to match complete words, you cant add "/test" to allow "test123", whereas it is possible to use entries like "/region info" to exclude just that sub command. |
10 | | handleaschat | A list of commands that should be handled by the text check instead. Typically makes sense for commands like "/me". Matching is the same principle as with exclusions. |
11 | | level | Set spam level at which the commands check will throw 1 violation. |
12 | | shortterm _ticks_ | Number of server ticks to count commands for shortterm checking. |
13 | | shortterm _level_ | Level for which to generate an exception. |
14 |
15 | **Related**
16 | * [Active](General#Active)
17 | * [Actions](General#Actions)
18 | * [[Chat] Text](%5BChat%5D-Text)
19 | * [[Chat] Captcha](%5BChat%5D-Captcha)
20 | * [Long-term and Short-term](Backgrounds#long-term-and-short-term)
--------------------------------------------------------------------------------
/Settings/Checks/[Combined]-Yawrate.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.combined.yawrate`
2 | Permission (bypass): `nocheatplus.checks.combined.yawrate`
3 | Exemption: `COMBINED_YAWRATE`
4 |
5 | This check keeps track of how fast players turned around and ensures it by monitoring movement and other actions like attacking.
6 | Yawrate will prevent players from attacking for a configurable penalty value (in milliseconds) if it catches a player turning around too much in a short time.
7 |
8 | | Option | Description |
9 | | :----------------- | :---------- |
10 | | rate | Degrees per second in grad that a player is allowed to turn around without triggering a penalty. |
11 | | penalty _factor_ | How many times should the counted penalties be multiplied? 2.0 is already double. |
12 | | penalty _minimum_ | Set minimal amount of attacking penalty in milliseconds for every violation of Yawrate. |
13 | | penalty _minimum_ | Set maximum amount of attacking penalty in milliseconds for every violation of Yawrate. |
14 | | improbable | Yawrate will integrate with improbable check if this is set to true. |
15 |
16 | **Related**
17 | * [Active](General#Active)
18 | * [Actions](General#Actions)
19 | * [[Combined] Improbable](%5BCombined%5D-Improbable)
--------------------------------------------------------------------------------
/Settings/Checks/[Combined]-Invulnerable.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.combined.invulnerable`
2 | Permission (bypass): `nocheatplus.checks.combined.invulnerable`
3 | Exemption: `COMBINED_INVULNERABLE`
4 |
5 | Selectively alter or remove the initial invulnerability after login.
6 |
7 | | Option | Description |
8 | | :---------------------- | :---------- |
9 | | triggers _always_ | Always apply the alterations. |
10 | | triggers _falldistance_ | Trigger with the fall distance being greater than 0. Reduces the impact of this check, because most of the time players are not affected at all. |
11 | | initialticks _join_ | Allows to override the amount of invulnerable ticks, whatever Minecraft is using. Default is -1 and means not altering. |
12 | | ignore | Damage types for which the invulnerable ticks are to be ignored. By default FALL is set, to prevent abusing the login invulnerability to avoid fall damage. |
13 | | modifiers | Define individual modifiers per damage type (the preset is defined with 'all'). The player will stay invulnerable for this amount of ticks longer/shorter for the specified damage type, allowing for negative values as well. |
14 |
15 | **Related**
16 | * [Active](General#Active)
17 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Data.creole:
--------------------------------------------------------------------------------
1 | =Expiration=
2 |
3 | The data section allows you to specify a data expiration duration for players data in minutes. If set to something greater than 0, this will periodically remove players data if the players have been logged out for longer than the specified duration in minutes. At present this would also delete set-back locations and current violation levels, if activated, so it should not be set to a too short duration.
4 |
5 | |Duration|Time in minutes after which NoCheatPlus will start cleaning the data of players that have been offline this long|
6 | |History|Setting this to true will also clean away the violation history of those players|
7 |
8 | =Consistency Checks=
9 | **EDIT THIS:** it's doing consistency checks for some internal mappings and also might release some memory
10 | |interval|Interval in seconds at which NC+ will check for consistency|
11 | |maxtime|The maximal limit given in milliseconds that NoCheatPlus can take for a consistency check. If it exceed it will get aborted. Value has to be in range of 1 to 50.|
12 | |suppresswarnings|Setting this to true will not print any alerts in the console or nocheatplus.log|
13 |
14 |
15 | **References**\\
16 | [[Active|General#active]]\\
17 | [[Violations|Backgrounds#violations]]
18 |
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Fastconsume.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.fastconsume`
2 | Permission (bypass): `nocheatplus.checks.inventory.fastconsume`
3 | Exemption: `INVENTORY_FASTCONSUME`
4 |
5 | Fastconsume replaces the former Instanteat check and extends it by forcing vanilla consume durations on potions, water bottles and more.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | duration | Multiplier of how long it should take to consume a item. |
10 | | whitelest | True means that Fastconsume will only check the items you have added in your list. False means that Fastconsume ignores all items you added in your list (option below). |
11 | | items | You can add items here that you want to whitelist/blacklist from the Fastconsume check. |
12 |
13 | **Notes**
14 | * NoCheatPlus will automatically fallback to "Instanteat" if your server does not support the consume event which fastconsume needs to work.
15 | * Setting duration higher will require players more time to consume the item while setting it lower allows them to consume it quicker
16 |
17 | **Related**
18 | * [Active](General#Active)
19 | * [Actions](General#Actions)
20 | * [[Inventory] Instanteat](%5BInventory%5D-Instanteat)
--------------------------------------------------------------------------------
/Settings/Checks/[Inventory]-Fastclick.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.inventory.fastclick`
2 | Permission (bypass): `nocheatplus.checks.inventory.fastclick`
3 | Exemption: `INVENTORY_FASTCLICK`
4 |
5 | To prevent chest stealer's or auto armor hacks we simple limit the click speed a player is allowed to have while managing his/her inventory.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | sparecreative | Set this to true if you don't want Fastclick to check players that are in creative mode. |
10 | | tweaks1_5 | Set this to true if you want to support the new inventory tweaks that were introduce in Minecraft 1.5 (such as inventory painting). |
11 | | limit _shortterm_ | |
12 | | limit _normal_ | |
13 |
14 | **Notes**
15 | * If you run Minecraft 1.4.x and older then set tweaks1_5 to false!
16 | * This check will also prevent mods such as InvTweaks and similar ones from working right (because they give advantage compared to vanilla players), if you want your players to be able to use those mods then disable this check or give them the right exempt permission.
17 |
18 | **Related**
19 | * [Active](General#Active)
20 | * [Actions](General#Actions)
21 | * [Long-term and Short-term](Backgrounds#long-term-and-short-term)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Fastheal.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.fastheal`
2 | Permission (bypass): `nocheatplus.checks.fight.fastheal`
3 | Exemption: `FIGHT_FASTHEAL`
4 |
5 | This check prevents players from generating healthy faster then possible.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | interval | Interval in ms (milliseconds) between regaining health (from saturation). |
10 | | buffer | Fastheal will count away from the buffer to fit your set interval if a player healed up faster then usual (lag). So here you set the value in ms (milliseconds) that Fastheal is allowed to buffer. |
11 |
12 | **Notes**
13 | * In Minecraft 1.6 and older a player could faster generate health by spamming movement packets, this was later on changed in MC 1.7.x and higher to generate health based on server ticks instead. However there seem to still be some cases left where players seem to still be able to generate health faster which is the reason why we didnt remove Fastheal from NC+.
14 | * Fastheal has a buffer to prevent false positives by smoothing out lag spikes
15 | * You want to only adjust the interval if your server heals your players faster/slower for some reason (mods?)
16 |
17 | **Related**
18 | * [Active](General#Active)
19 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Logging.creole:
--------------------------------------------------------------------------------
1 | |debug|NoCheatPlus will print additional debug information in your console and log file if you set this to true.|
2 | |maxqueuesize|Maximal amount of debug info that can get queued before NoCheatPlus starts to drop them.|
3 |
4 | **Notes**:\\
5 | * The queues are used if its scheduled for the primary thread or for an asynchronous task
6 |
7 | =Backend=
8 | Here you can configure the different logging aspects of NoCheatPlus.\\
9 | |prefix|Allows you to set the prefix of the logging messages.|
10 | |asynchronous|NoCheatPlus will log asynchronously if this is set to true.|
11 | |filename|Specify an existing folder or a name without extension (must not exist as file), and NCP will create a log file for each run and reload, named by date, all within that folder.|
12 | |subscriptions|Enabling subscriptions will allow other things (IRC, plugins etc.) but players to receive ingame notifications (permission subscriptions).|
13 |
14 | **Notes**\\
15 | * Prefixes can be blank if you only want to see the messages
16 | * Color codes are supported in prefixes using &
17 | * NoCheatPlus will log in a folder if you change {{{filename: nocheatplus}}} (a new folder "nocheatplus" will be created and logs will be stored in there instead of the single nocheatplus.log file)
18 |
19 | **References**\\
20 | * [[Active|General#active]]\\
21 | * [[Asynchronous|Backgrounds#asynchronous]]\\
22 | * Color codes
23 |
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Captcha.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.captcha`
2 | Permission (bypass): `nocheatplus.checks.chat.captcha`
3 | Exemption: `CHAT_CAPTCHA`
4 | Depends on: `[Chat] Commands` or `[Chat] Text`
5 |
6 | The captcha feature can be used together with our text or commands spam check to ask players that fail one/both of those a randomly generated captcha, which needs to be answered in order to continue.
7 |
8 | | Option | Description |
9 | | :--------------- | :---------- |
10 | | characters | Which chars (numbers, letters and symbols) should be used to generate a captcha? |
11 | | length | Set amount of characters the captcha should have. |
12 | | question | How should the question be worded? Use & to create formattings. The text [captcha] will be replaced with the actual captcha. |
13 | | success | Set the message which will be shown to the player if he/she answers with the right captcha. |
14 | | tries | How many attempts will a player have to give the correct answer. A failed attempt will display the question again. Be generous here, as players may not be fast enough to read the question the first few times or be otherwise distracted. |
15 |
16 | **Related**
17 | * [Active](General#Active)
18 | * [Actions](General#Actions)
19 | * [[Chat] Text](%5BChat%5D-Text)
20 | * [[Chat] Commands](%5BChat%5D-Commands)
21 | * [Formatting codes](http://minecraft.gamepedia.com/Formatting_codes)
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-Nofall.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.moving.nofall`
2 | Permission (bypass): `nocheatplus.checks.moving.nofall`
3 | Exemption: `MOVING_NOFALL`
4 | Depends on: `[Moving] Survivalfly`
5 |
6 | This is a sub check of survivalfly, it makes sure that the player gets the damage he/she is supposed to get.
7 |
8 | | Option | Description |
9 | | :------------------ | :---------- |
10 | | dealdamage | Override fall damage so NoCheatPlus handles it to prevent additional exploits. |
11 | | resetonviolation | Clean nofall data on attempts to take fall damage while not actually having hit the ground. |
12 | | resetonteleport | Compatibility fall-back option to clean nofall data after a teleport. |
13 | | resetonvehicle | Clean the nofall data after entering a vehicle. |
14 | | anticriticals | Prevent some critical exploits by resetting small amounts of fall-distance "in time". |
15 |
16 | **Notes**
17 | * resetonvehicle was set to true because of a strange bug that killed players when they left a vehicle.
18 | * In Minecraft its possible to fake small amounts of fall damage to get fake critical hits on creatures/players. For that reason we highly recommend to let anticriticals to true unless you have no choice.
19 |
20 |
21 | **Related**
22 | * [Active](General#Active)
23 | * [Actions](General#Actions)
24 | * [[Moving] Survivalfly](%5BMoving%5D-Survivalfly)
25 | * [[Fight] Criticals](%5BFight%5D-Criticals)
--------------------------------------------------------------------------------
/Settings/Checks/[Fight]-Reach.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.fight.reach`
2 | Permission (bypass): `nocheatplus.checks.fight.reach`
3 | Exemption: `FIGHT_REACH`
4 |
5 | Players may slightly increase the distance at which they can attack enemy creatures/players. This check will try to identify that by comparing the distance between player and target location.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | survivaldistance | Maximum attack distance for survival and adventure gamemode. Statically about 3 or 3.5 applies, with latency and moving 4.5 makes sense. |
10 | | penalty | Extra attack penalty for close combat, dealt on violations. |
11 | | reduce | Enable/disable the dynamic max-distance feature: If players hit rather at the limit of distance, the dynamic maximum is reduced, so it is harder to use kill-aura. A player that hits between dynamic max and max distance gets a "silent cancel" without violation level added. |
12 | | reducedistance | Maximum amount of distance by which the max-distance (survivaldistance) can be reduced. |
13 | | reducestep | Amount to change the dynamic max-distance per long-distance or short-distance hit. |
14 |
15 | **Notes**
16 | * Because of lag the reach distance isn't a fixed value and may increase/decrease, reach is for that reason designed to be dynamic and adapt to server lag if needed.
17 |
18 | **Related**
19 | * [Active](General#Active)
20 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockbreak]-Frequency.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockbreak.frequency`
2 | Permission (bypass): `nocheatplus.checks.blockbreak.frequency`
3 | Exemption: `BLOCKBREAK_FREQUENCY`
4 |
5 | Preventing players from breaking too many blocks in no time is the job of our Frequency check. It does not account for how fast an individual block can be broken, instead the frequency check just sets an upper limit to block breaking. This way creative mode and breaking blocks that can be broken "instantly" are limited to a reasonable frequency of breaking blocks.
6 |
7 | | Option | Description |
8 | | :------------------ | :---------- |
9 | | intervalcreative | The minimally allowed time to pass between breaking blocks in creative gamemode. |
10 | | intervalsurvival | The minimally allowed time to pass between breaking blocks in survival gamemode. |
11 | | shortterm _ticks_ | Number of server ticks (50 ms each) to keep track for limiting short term bursts. |
12 | | shortterm _limit_ | Number of blocks to allow within the specified serverticks. |
13 |
14 | **Notes**
15 | * There is a general buffer counting in 2 seconds by default and allowing to accumulate as many blockbreaks as fit into the time given the intervalcreative and/or intervalsurvival settings interpreted as durations.
16 | * In addition it has a short term setting, also counting the blocks within the last n ticks and limiting the short term amount. This way players cannot break 80 blocks at once and then pause for two seconds.
17 |
18 | **Related**
19 | * [Active](General#Active)
20 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-Morepackets.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.moving.morepackets`
2 | Permission (bypass): `nocheatplus.checks.moving.morepackets`
3 | Exemption: `MOVING_MOREPACKETS`
4 | Better with: `[Moving] Survivalfly`
5 |
6 | The Morepackets check is complementary to the Survivalfly and Creativefly checks. While the other check(s) limit the actual distance a player can move with one server-side event, this check limits the number of steps/events a player may perform within certain time-frames.
7 |
8 | | Option | Description |
9 | | :---------------------- | :---------- |
10 | | seconds | The number of seconds to track. |
11 | | epsideal | The typical/ideal number of events per second, used for gaps. |
12 | | epsmax | The maximum number of events per second tolerated (in average). |
13 | | burst _packets_ | The number of events arriving within the first time window (currently half a second), to trigger increasing a (potentially excusable) burst event, e.g. with networking congestion. All packets above this count arriving within the same time window will increase the burst counting. |
14 | | burst _directviolation_ | Amount of burst packets to trigger a violation directly, without even considering to calculate any mid-term average. With burst packets set to 40 and directviolation set to 60, more than 100 packets within the first time window will trigger the direct violation. This may seem much, but 5 seconds worth of lag happen more often than expected with the client side. |
15 | | burst _epmviolation_ | Amount of burst events per minute to trigger a violation. Note that only bursts (...) get counted in here, as configured with burst.packets. |
16 |
17 | **Notes**
18 | * A normal value is 20 steps per second.
19 |
20 | **Related**
21 | * [Active](General#Active)
22 | * [Actions](General#Actions)
--------------------------------------------------------------------------------
/Settings/Checks/[Blockbreak]-Fastbreak.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.blockbreak.fastbreak`
2 | Permission (bypass): `nocheatplus.checks.blockbreak.fastbreak`
3 | Exemption: `BLOCKBREAK_FASTBREAK`
4 |
5 | Fastbreak forces players to break blocks with realistic speed when being in survival gamemode. In order to smooth out lag spikes we allow a tiny bit of faster block breaking times to avoid false positives when server or client encounter latency (be it network or CPU time-outs).
6 |
7 | | Option | Description |
8 | | :--------------- | :---------- |
9 | | strict | If set to true, fastbreak will measure the time from interaction to block break. If set to false, it will measure the time from block break to block break, which allows one cheated fast break always, but forces normal speed for sequences of block breaks, being less strict in laggy environments, or in case the server mod does the interact events differently. |
10 | | delay | Here you can give a little bit of additional per block breaking time in order to avoid false positives when events get delayed by the server tick. NoCheatPlus reads this value in milliseconds (ms). |
11 | | intervalsurvival | Modifier in % for block breaking duration in survival mode. Set to a lower value to allow faster block breaking (in per cent). |
12 | | grace | Set a value in milliseconds (ms) that players will be allowed to mine faster in each check period of fastbreak. |
13 |
14 | **Notes**
15 | * Blocks with a low breaking time could allow instant breaking if [their breaking time - set delay] results in a small value
16 | * Fastbreak combines with the frequency check: the latter will hard-limit the number of blocks regardless of type, which is important if the fastbreak check allows "instant" breaking.
17 | * Do not set intervalsurvival to something higher then 100% or all block breaking is likely to become violations.
18 |
19 | **Related**
20 | * [Active](General#Active)
21 | * [Actions](General#Actions)
22 | * [[Blockbreak] Frequency](%5BBlockbreak%5D-Frequency)
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-Creativefly.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.moving.creativefly`
2 | Permission (bypass): `nocheatplus.checks.moving.creativefly`
3 | Exemption: `MOVING_CREATIVEFLY`
4 | Better with: `[Moving] Morepackets`
5 |
6 | This check limits the flying speed for players that are playing in creative and spectator gamemode.
7 |
8 | Provided the creativefly check is activated at all, the following conditions can force use of the creativefly check, regardless of options 'ignoreallowflight' and 'ignorecreative'
9 | * The survivalfly check is not activated for the player (activation, exemption, permissions).
10 | * The player is flying.
11 | * The player is gliding with an elytra.
12 | * The player is exposed to the levitation effect.
13 |
14 | | Option | Description |
15 | | :------------------ | :---------- |
16 | | ignoreallowflight | If set to false, the creativefly check will run for players who are set to be _allowed to fly_. If set to true, the survivalfly check will be run instead, provided there are not other side conditions forcing use of the creativefly check. This does not disable the creativefly check. |
17 | | ignorecreative | If set to false, the creativefly check will run for players who are in the _creative_ game mode, regardless if they're flying or not. If set to true, the survivalfly check will run instead, provided there are not other side conditions forcing use of the creativefly check. This does not disable the creativefly check. |
18 | | horizontalspeed | Modifier for the maximally allowed horizontal speed. 100 means "normal" creative mode speed. 200 would be twice the speed. |
19 | | maxheight | This is a height limit which is counted from above the worlds maximum height (usually resulting in 256 + maxheight). |
20 | | verticalspeed | Modifier for the maximally allowed vertical speed. 100 means "normal" creative mode speed. 200 would be twice the speed. |
21 |
22 | **Related**
23 | * [Active](General#Active)
24 | * [Actions](General#Actions)
25 | * [[Moving] Survivalfly](%5BMoving%5D-Survivalfly)
--------------------------------------------------------------------------------
/Others/Backgrounds.md:
--------------------------------------------------------------------------------
1 | This page explains the "behind the scene" tricks of NoCheatPlus, how it works and more.
2 |
3 | ### Asynchronous
4 |
5 | `When you execute something synchronously, you wait for it to finish before moving on to another task. When you execute something asynchronously, you can move on to another task before it finishes....`
6 | [Adam Robinson (Stackoverflow)](http://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean?answertab=active#tab-top)
7 |
8 | NoCheatPlus does a couple of things asynchronously to improve performance on your server.
9 |
10 | ### Long-term and Short-term
11 | Some checks like BLOCKBREAK_FREQUENCY implement another checking interval (shortterm) to catch and prevent very quick cheating more smoothly then the normal (longterm) check interval.
12 |
13 | Especially checks like FIGHT_SPEED profit from this since damage to a player/creature is hard to undo. So a cheater would get instantly stopped by the shortterm interval if he/she tried to hit a creature/player 30 times in 10 server ticks.
14 |
15 | ### Ray tracing
16 |
17 | ### Violations
18 | To count cheat attempts we use "VL" which stands for violation level in NoCheatPlus and its used
19 | by Actions and Strings to punish players based on their violation level.
20 |
21 | **Notes**
22 | * Every check has its own violation levels and generates them in a different way based on how the check counts (SurvivalFly will reach much higher VLs compared to BedLeave)
23 | * Backgrounds
24 | * By default the violation will be kept till you restart your server (even on log out)
25 | * Violation levels that have been logged are different compared to those shown in the info or history command because the command ones only show the VLs that have been added
26 | * Many cheat clients are adapted to cause as small as possible levels, thus distinction of false positives and cheating becomes harder and harder.
27 | * Make use of **/ncp info ** to have a rough idea how many different checks the player triggers (also compare output for differing times).
--------------------------------------------------------------------------------
/Home.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Welcome to the wiki! This page will explain everything that you need to know about NoCheatPlus.
4 |
5 | NoCheatPlus is a Bukkit (CraftBukkit/Spigot) plugin meant to protect your server from various kinds of cheating. A wide area of cheats is covered, such as player and vehicle moving, interaction, block breaking and placing, fighting, chat and other types of areas including client behavior that might crash the server.
6 |
7 | The approach taken with NoCheatPlus is to focus on providing lasting protection, rather than detecting the 'latest cheats' with methods that are going to be bypassed the next moment. Have a look at the [Fundamentals page](Fundamentals) for more details on that approach.
8 |
9 | Mind the side bar, usually on the right, which contains a couple of quick links, as well as a search option for wiki page titles.
10 |
11 | To get started follow those instructions: [Getting Started](Getting-Started)
12 |
13 | Quickly find the appropriate build for a version of Minecraft: [Notable Builds](Notable-Builds)
14 |
15 | Report an issue, or request support: [Issues](https://github.com/NoCheatPlus/Issues/issues)
16 |
17 | Download and further project links:
18 | * [NoCheatPlus on BukkitDev - with downloads for releases approved by their staff.](https://dev.bukkit.org/projects/nocheatplus)
19 | * [NoCheatPlus on SpigotMC - also with downloads for releases.](https://www.spigotmc.org/resources/nocheatplus2015-07-25.26/)
20 | * [NoCheatPlus Jenkins on ci.md-5.net - all builds including development builds.](https://ci.md-5.net/job/NoCheatPlus/)
21 | * [NoCheatPlus Build-Infos: Orientation for development builds and releases.](https://github.com/NoCheatPlus/Docs/wiki/Build-Infos)
22 | * [CompatNoCheatPlus (phasing out) on BukkitDev - use with mcMMO, MagicSpells, ...](https://dev.bukkit.org/projects/compatnocheatplus-cncp)
23 | * [CompatNoCheatPlus Jenkins on ci.md-5.net - development builds.](https://ci.md-5.net/job/CompatNoCheatPlus/)
24 |
25 | If you prefer a full text search for any GitHub wiki, have a look at: [Github Wiki Search](https://github.com/linyows/github-wiki-search)
26 |
27 |
--------------------------------------------------------------------------------
/Development/Build-Infos.md:
--------------------------------------------------------------------------------
1 | Somewhat digested version of a changes history.
2 | * [Scroll down: Build Info Pages](https://github.com/NoCheatPlus/Docs/wiki/Build-Infos#build-info-pages)
3 | * [Scroll down: Related links](https://github.com/NoCheatPlus/Docs/wiki/Build-Infos#related-links)
4 |
5 | # Release types
6 | | Release type | Explanation |
7 | | :------------| :---------- |
8 | | **RC release** | Official stable release. The developer is somewhat convinced, that we can't do much better within short term. |
9 | | **release candidate** | Meant to become a RC release soon, waiting for last minute feedback. |
10 | | **BETA Release** | Official beta release, possibly some areas remain uncovered, or it's not been time to test further. A _mostly stable_ development build might also be released as beta (marked as recommended on Jenkins). |
11 | | **mostly stable** | A development build that has been tested a lot and appears to be good to use, or at least the best option for a specific Minecraft version. |
12 | | development | Ordinary development builds. |
13 | | [BLEEDING] | Bleeding edge development builds that contain changes, which need a lot of testing to consolidate, or which are of experimental nature, consequently running into issues with these can't be excluded. |
14 |
15 | Broken builds usually are marked as _broken_ or _deficient_ or get removed from Jenkins. They should not appear in this list, unless to indicate that people should update.
16 |
17 | # Related links
18 | * [A complete list of changes grouped by build number: Jenkins.](https://ci.md-5.net/job/NoCheatPlus/changes)
19 | * [Complete list of changes on GitHub.](https://github.com/NoCheatPlus/NoCheatPlus/commits/master)
20 | * [**Quick overview over the latest notable builds by Minecraft version.**](https://github.com/NoCheatPlus/Docs/wiki/Notable-Builds)
21 | * [What's next: development roadmap.](Roadmap)
22 |
23 | # Build Info Pages
24 | * [NoCheatPlus 3.16.1 and later](https://github.com/NoCheatPlus/Docs/wiki/bip-3.16.1-and-later)
25 | * [NoCheatPlus 3.15.0 and later](https://github.com/NoCheatPlus/Docs/wiki/bip-3.15.0-and-later)
26 | * [NoCheatPlus 3.13.7 and later](https://github.com/NoCheatPlus/Docs/wiki/bip-3.13.7-and-later)
27 | * [NoCheatPlus 3.13.6 and earlier](https://github.com/NoCheatPlus/Docs/wiki/bip-3.13.6-and-earlier)
28 |
29 |
--------------------------------------------------------------------------------
/Settings/Protection.creole:
--------------------------------------------------------------------------------
1 | =Plugins=
2 | Here you can hide your plugins from being sniffed out using some simple tricks.
3 |
4 | ==No permission==
5 | Add commands to have the configured message be sent to players, who try to use this command, but who don't have permission to use it.
6 | In order to protect commands that don't have a permission set, NCP will set a filter permission 'nocheatplus.filter.command.lc-command', with lc-command being the lower case command name.
7 |
8 | |message| The message to display, instead of the 'no permission' message. |
9 | |commands| List of commands. NoCheatPlus tries to detect aliases, but you should test them to be sure, including aliases like 'minecraft:op' and 'otherplugin.chathistory'. Currently sub-commands like 'cs reload' can not be detected.|
10 |
11 | ==Unknown Command==
12 | Add commands to have the configured message be sent to players, who try to use this command, but who don't have permission to use it.
13 | In order to protect commands that don't have a permission set, NCP will set a filter permission 'nocheatplus.filter.command.lc-command', with lc-command being the lower case command name.
14 |
15 | |message| The message to display, instead of the 'no permission' message. |
16 | |commands| List of commands. NoCheatPlus tries to detect aliases, but you should test them to be sure, including aliases like 'minecraft:op' and 'otherplugin.chathistory'. Currently sub-commands like 'cs reload' can not be detected.|
17 |
18 | =Commands=
19 |
20 | ==Console only==
21 |
22 | |message| Message to display, if a player tries to use this command in-game. This will display, regardless of the player having permissions or not. |
23 | |commands| Commands to not be run from in-game. NoCheatPlus will attempt to fetch the original command label, but you should test aliases for the commands to be sure, e.g. 'minecraft:op' \\or 'otherplugin:reload fromhttp'. |
24 |
25 | =Clients=
26 | ==Motd==
27 | |allowall| If you set this to true it will allow all client sided mods to work on your server (check Permissions page for fine tuning client modifications). |
28 |
29 | **Note**:
30 | * Use the protection bypass permission if you want curtain players/groups to bypass your plugin protection.
31 |
32 | **References**\\
33 | * [[Permissions|Permissions]]
34 | * [[Client Modifications|Client-Modifications]]
--------------------------------------------------------------------------------
/Development/Notable-Builds.md:
--------------------------------------------------------------------------------
1 | Quick overview about notable builds.
2 |
3 | ## Latest Stable Builds by Minecraft version
4 |
5 | Latest/Most stable builds ordered by the version of Minecraft. In general the latest version(s) and the most significant or popular versions are supported: 1.12.2, 1.11.2, _1.10.2_, _1.9.4_, 1.8.8, 1.7.10 (Pre-DMCA, as long as it takes less effort to keep than to remove: _1.7.2_, _1.6.4_, _1.5.2_, _1.4.5-R1.0_)
6 |
7 | For requests please use [GitHub Issues](https://github.com/NoCheatPlus/Issues/issues).
8 |
9 | | MC (focus) | MC (supported) | NoCheatPlus version | Release type |
10 | | :-------------| :------------- | :------------------ | :----------- |
11 | | 1.12.2 | 1.4.5-R1.0 - 1.12.2 | [3.16.0-RC-sMD5NET-b1134](https://github.com/NoCheatPlus/Docs/wiki/Notable-Builds#3160-rc-smd5net-b1134) | RC release |
12 | | _1.4.5_ | _1.4.2 - 1.4.5_ | _[3.10.9-SNAPSHOT-b666](https://ci.md-5.net/job/NoCheatPlus/666/)_ | _development_ |
13 | | _1.3.2_ | _1.3.1 - 1.3.2_ | _[3.7.10-RC-b201](https://dev.bukkit.org/bukkit-plugins/nocheatplus/files/33-nocheat-plus-3-7-10-rc-b201/)_ | _RC release_ |
14 | | _1.2.5_ | _1.1 - 1.2.5_ | _[3.6.1](https://dev.bukkit.org/bukkit-plugins/nocheatplus/files/23-nocheat-plus-v3-6-1-1-1-1-2-5/)_ | _RC release_ |
15 |
16 | Release types
17 | * RC release - Official stable release.
18 | * BETA release - Official beta release or a promoted development build.
19 | * mostly stable - A promoted development build.
20 | * _development_ - A development build, might contain issues.
21 |
22 | _(Italic entries indicate potentially unstable development builds or versions that are not supported anymore, in terms of developing fixes or features. In general there are no back-ports for old releases.)_
23 |
24 | ## Notable Builds in Order of Appearance
25 |
26 | Builds mentioned above, with download links and hashes for comparison.
27 |
28 | ### 3.16.0-RC-sMD5NET-b1134
29 | * Release type: **RC Release**
30 | * Supported versions of Minecraft (CraftBukkit/Spigot)
31 | * Focus: 1.12.2
32 | * Supported: 1.4.5-R1.0 - 1.12.2
33 | * Download at Jenkins: https://ci.md-5.net/job/NoCheatPlus/1134/
34 | * Hashes
35 | * MD5: b034f5d318eebc057bd331c1fe06f6c9
36 | * SHA512: 2ae947d7ef3d6c4ba2aecd7aae68c70ea64514df1b78bbaeaeef919c14d1d09fa941e1b0c253e90633a43044dd7e439a23243cba6ec601201dbe875cc8348983
37 | * File size: 1489360
38 |
--------------------------------------------------------------------------------
/Settings/Checks/[Chat]-Text.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.chat.text`
2 | Permission (bypass): `nocheatplus.checks.chat.text`
3 | Exemption: `CHAT_TEXT`
4 |
5 | This is a complex check which is designed to stop chat spamming by assigning a configured amount "weight" to every chat message. NoCheatPlus will prevent further chat activity of someone that exceeded that weight and punish him based on what is set in your actions.
6 |
7 | | Option | Description |
8 | | :--------------- | :---------- |
9 | | allowvlreset | |
10 |
11 | ## Frequency
12 | This check is split in 2 frequency's to cover both fast and slow chat spamming.
13 |
14 | ### Normal
15 | Here you can configure the long-term variant which analyses the chat from **30** seconds ago.
16 |
17 | | Option | Description |
18 | | :--------------- | :---------- |
19 | | minimum | |
20 | | factor | |
21 | | weight | |
22 | | level | |
23 |
24 | ### Shortterm
25 | Here you can configure the short-term variant which analyses the chat from **5** seconds ago.
26 |
27 | | Option | Description |
28 | | :--------------- | :---------- |
29 | | minimum | |
30 | | factor | |
31 | | weight | |
32 | | level | |
33 |
34 | ## Message
35 | This section allows to alter message-specific weights.
36 |
37 | | Option | Description |
38 | | :---------------- | :---------- |
39 | | lettercount | |
40 | | partition | |
41 | | uppercase | |
42 | | afterjoin | |
43 | | nomoving | |
44 | | repeatviolation | |
45 | | repeatglobal | |
46 | | repeatself | |
47 | | words _lengthav_ | |
48 | | words _lengthmsg_ | |
49 | | words _noletter_ | |
50 |
51 | ## Global
52 |
53 | | Option | Description |
54 | | :------------------ | :---------- |
55 | | weight | |
56 | | words _active_ | |
57 | | prefixes _active_ | |
58 | | similarity _active_ | |
59 |
60 | ## Player
61 |
62 | | Option | Description |
63 | | :------------------ | :---------- |
64 | | words _active_ | |
65 | | prefixes _active_ | |
66 | | similarity _active_ | |
67 |
68 | **Related**
69 | * [Active](General#Active)
70 | * [Actions](General#Actions)
71 | * [[Chat] Captcha](%5BChat%5D-Captcha)
72 | * [Long-term and Short-term](Backgrounds#long-term-and-short-term)
--------------------------------------------------------------------------------
/Getting-Started.md:
--------------------------------------------------------------------------------
1 | # Installation
2 | 1. Download NoCheatPlus from one of those 2 sources:
3 | * Release builds on [DBO]
4 | * Latest development build on [Jenkins]
5 |
6 | 2. Drop the NoCheatPlus.jar in your /plugins folder like this: 
7 |
8 | 3. Start-up your server
9 |
10 | # Configuration
11 | 1. [Make other plugins compatible with NoCheatPlus](Compatibility)
12 | 2. Install ProtocolLib to enable the NET checks
13 | 3. [Setup permissions](Permissions)
14 | 4. [Learn what YAML is and how to edit it](YAML)
15 | 5. [Configure NoCheatPlus](Configuration)
16 | 6. [Study the Commands](Commands)
17 |
18 | [DBO]:https://dev.bukkit.org/bukkit-plugins/nocheatplus/files/
19 | [Jenkins]:https://ci.md-5.net/job/NoCheatPlus/lastSuccessfulBuild/artifact/target/NoCheatPlus.jar
20 |
21 | # Odds and Ends
22 |
23 | There is a bunch of odds and ends to consider.
24 | TODO: Formatting with secondary headlines etc., and links to existing pages for mentioned topics.
25 |
26 | Noteworthy places where no configuration switch exists (only permission or exemption):
27 | * TODO: Place boats onto something else but liquid.
28 | * TODO: Place blocks against air or liquid.
29 | * TODO: Details
30 |
31 | Noteworthy checks/stuff for which no permission exists (config/exemption only):
32 | * TODO: Details.
33 |
34 | Noteworthy places where no exemption functionality is provided:
35 | * TODO: Details
36 |
37 | Noteworthy places where configuration is needed, extra to activating a feature:
38 | * Untracked locations, abusing with commands: In order to prevent players abusing a special case in Spigot, to be able to teleport inside of blocks or bypass plugins that check for locations otherwise, currently NCP can only attempt to correct players positions at the moment they run a command.
39 | * TODO: Details for setting up the command prefixes for untracked teleporting (passable check).
40 | * TODO: This part is pretty important.
41 | * TODO: Fly by sethome?
42 | * Piston support: Currently pistons are mostly unplayable with NCP on. Support is being implemented and reached a state where it might help with vertical pushing/pulling (since build 961, by far not finished).
43 | * TODO: Details how to a activate (set compatibility.blocks.changetracker.active to true).
44 | * Command protection features
45 | * TODO: Details on what to add.
46 | * TODO: Details
47 |
48 | TODO: More details.
49 |
--------------------------------------------------------------------------------
/wInfos/Alternative-Markdown.md:
--------------------------------------------------------------------------------
1 | # Markdown inside code blocks
2 |
3 |
4 | foo
5 |
6 |
7 |
8 | foo
9 |
10 |
11 |
12 | foo
13 |
14 |
15 |
16 | | test _emphasis_ (span) |
17 |
18 |
19 |
20 | | test _emphasis_ (span) |
21 |
22 |
23 |
24 | | test _emphasis_ (block) |
25 |
26 |
27 | ## More complicated
28 |
29 |
30 | |
31 | * this is _not_ a list item |
32 | |
33 | * this is _not_ a list item |
34 | |
35 | * this _is_ a list item
36 | |
37 |
38 |
39 | ## With indent
40 |
41 |
42 |
43 | This text is no code block: if it was, the
44 | closing `
` would be too and the HTML block
45 | would be invalid.
46 |
47 | Markdown content in HTML blocks is assumed to be
48 | indented the same as the block opening tag.
49 |
50 | **This should be the third paragraph after the header.**
51 |
52 |
53 |
54 | ## Code block with rogue `
`s in Markdown code span and block
55 |
56 |
57 |
58 |
59 | This is a code block however:
60 |
61 |
62 |
63 | Funny isn't it? Here is a code span: `
`.
64 |
65 |
66 |
67 |
68 |
69 |
70 | * List item, not a code block
71 |
72 | Some text
73 |
74 | This is a code block.
75 |
76 |
77 |
78 | ## No code block in markdown span mode
79 |
80 |
81 | This is not a code block since Markdown parse paragraph
82 | content as span. Code spans like `
` are allowed though.
83 |
84 |
85 | _Hello_ _world_
86 |
87 | ## Preserving attributes and tags on more than one line:
88 |
89 |
91 | Some _span_ content.
92 |
93 |
94 |
95 | ## Header confusion bug
96 |
97 |
98 |
99 | | Hello World!
100 | ============
101 |
102 | Hello World! |
103 |
104 |
105 |
106 | Source: https://github.com/trentm/python-markdown2/blob/master/test/php-markdown-extra-cases/Inline%20HTML%20with%20Markdown%20content.text
107 |
108 | More: http://daringfireball.net/projects/markdown/syntax#html
--------------------------------------------------------------------------------
/Settings/Checks/_Sidebar.md:
--------------------------------------------------------------------------------
1 | ## [Home](Home)
2 | * [Commands](Commands)
3 | * [Permissions](Permissions)
4 |
5 | ## [Checks](Checks)
6 | * [General](General)
7 | * [Strings](Strings)
8 | * [Miscellaneous](Miscellaneous)
9 |
10 | ## [Blockbreak]
11 | * [Direction]([Blockbreak]-Direction)
12 | * [Fastbreak]([Blockbreak]-Fastbreak)
13 | * [Frequency]([Blockbreak]-Frequency)
14 | * [Noswing]([Blockbreak]-Noswing)
15 | * [Reach]([Blockbreak]-Reach)
16 | * [Wrongblock]([Blockbreak]-Wrongblock)
17 |
18 | ## [Blockinteract]
19 | * [Direction]([Blockinteract]-Direction)
20 | * [Reach]([Blockinteract]-Reach)
21 | * [Speed]([Blockinteract]-Speed)
22 | * [Visible]([Blockinteract]-Visible)
23 |
24 | ## [Blockplace]
25 | * [Against]([Blockplace]-Against)
26 | * [Autosign]([Blockplace]-Autosing)
27 | * [Direction]([Blockplace]-Direction)
28 | * [Fastplace]([Blockplace]-Fastplace)
29 | * [Reach]([Blockplace]-Reach)
30 | * [Noswing]([Blockplace]-Noswing)
31 | * [Speed]([Blockplace]-Speed)
32 |
33 | ## [Chat]
34 | * [Captcha]([Chat]-Captcha)
35 | * [Color]([Chat]-Color)
36 | * [Commands]([Chat]-Commands)
37 | * [Logins]([Chat]-Logins)
38 | * [Relog]([Chat]-Relog)
39 | * [Text]([Chat]-Text)
40 | * [Warning]([Chat]-Warning)
41 |
42 | ## [Combined]
43 | * [Bedleave]([Combined]-Bedleave)
44 | * [Enderpearl]([Combined]-Enderpearl)
45 | * [Improbable]([Combined]-Improbable)
46 | * [Invulnerable]([Combined]-Invulnerable)
47 | * [Munchhausen]([Combined]-Munchhausen)
48 | * [Yawrate]([Combined]-Yawrate)
49 |
50 | ## [Fight]
51 | * [Angle]([Fight]-Angle)
52 | * [Criticals]([Fight]-Criticals)
53 | * [Direction]([Fight]-Direction)
54 | * [Fastheal]([Fight]-Fastheal)
55 | * [General]([Fight]-General)
56 | * [Godmode]([Fight]-Godmode)
57 | * [Noswing]([Fight]-Noswing)
58 | * [Reach]([Fight]-Reach)
59 | * [Selfhit]([Fight]-Selfhit)
60 | * [Speed]([Fight]-Speed)
61 |
62 | ## [Inventory]
63 | * [Drop]([Inventory]-Drop)
64 | * [Fastclick]([Inventory]-Fastclick)
65 | * [Fastconsume]([Inventory]-Fastconsume)
66 | * [Gutenberg]([Inventory]-Gutenberg)
67 | * [Instantbow]([Inventory]-Instantbow)
68 | * [Instanteat]([Inventory]-Instanteat)
69 | * [Items]([Inventory]-Items)
70 | * [Open]([Inventory]-Open)
71 |
72 | ## [Moving]
73 | * [Creativefly]([Moving]-Creativefly)
74 | * [Survivalfly]([Moving]-SurvivalFly)
75 | * [Morepackets]([Moving]-Morepackets)
76 | * [Morepacketsvehicle]([Moving]-Morepacketsvehicle)
77 | * [Nofall]([Moving]-Nofall)
78 | * [Passable]([Moving]-Passable)
79 | * [General]([Moving]-General)
80 |
81 | ## [Net]
82 | * [Flyingfrequency]([Net]-Flyingfrequency)
83 | * [Sounddistance]([Net]-Sounddistance)
84 |
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-Passable.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.moving.passable`
2 | Permission (bypass): `nocheatplus.checks.moving.passable`
3 | Exemption: `MOVING_PASSABLE`
4 | Better with: `[Combined] Enderpearl`
5 |
6 | Passable prevents moving into or inside of blocks (noclip).
7 |
8 | | Option | Description |
9 | | :---------------------------------------- | :---------- |
10 | | raytracing _active_ | Activate ray-tracing to prevent to move past/through blocks. |
11 | | raytracing blockchangeonly_ | Only perform ray-tracing for moving past block borders. More inaccurate, but faster in average. |
12 | | untracked _teleport active_ | This is to prevent players setting home at or teleport to another player who is at an untracked location (currently only COMMAND teleport reason). Untracked locations exist due to CraftBukkit trying to be nice to plugins, by not firing events for moves that don't cover enough distance/turning, effectively allowing to shift a tiny bit into a block without plugins being able to notice in an effective way. |
13 | | untracked _command active_ | NCP supports detecting potential abuse by detecting players running certain commands at untracked locations. Typically a cheater could try to move into a block just by a tiny bit, so plugins won't notice, then they'd set home there, move back the tiny bit and teleport into the other block in a 'legal' way. |
14 | | untracked _command tryteleport_ | Control if NCP is only to warn, or to try to teleport the player to the last tracked position. |
15 | | untracked _command prefixes_ | The commands to track. This should be all commands that let you set home/warp/back and similar locations you could teleport to. "warp" for example also includes "warp xyz ...". You can distinguish by using 'warp set' instead of covering unneeded commands with just 'warp', depends on the plugins/command syntax. |
16 |
17 | **Notes**
18 | - Passable accounts for the foot position, not for the whole bounds of the player.
19 | - Some blocks changing shape with redstone current are exempted from passable by default, in order to make them playable for higher latency players. You can remove those exceptions from the configuration under _compatibility.blocks.ignorepassable_ .
20 | - Violations might also trigger if players teleport or join and start moving while not having received or rendered the chunk they stand on. This causes the client to think that there are only air blocks around so it "falls down" and accidently clips a little into the solid blocks on your server. So please DO NOT quickly ban on Passable violations!
21 | - The more lag, the more time it takes for the world to load up and the more likely it is for Passable to throw a false positive on join/teleport.
22 |
23 | **Related**
24 | * [Active](General#Active)
25 | * [Actions](General#Actions)
26 |
--------------------------------------------------------------------------------
/Settings/Checks/Checks.md:
--------------------------------------------------------------------------------
1 | TODO: Update checks.
2 |
3 | | Blockbreak | Blockinteract | Blockplace | Chat | Combined |
4 | |-----------------------------------------|-----------------------------------------|---------------------------------------|---------------------------------------|-------------------------------------------|
5 | | [Direction]([Blockbreak]-Direction) | [Direction]([Blockinteract]-Direction) | [Against]([Blockplace]-Against) | [Captcha]([Chat]-Captcha) | [Bedleave]([Combined]-Bedleave) |
6 | | [Fastbreak]([Blockbreak]-Fastbreak) | [Reach]([Blockinteract]-Reach) | [Autosign]([Blockplace]-Autosign) | [Color]([Chat]-Color) | [Enderpearl]([Combined]-Enderpearl) |
7 | | [Frequency]([Blockbreak]-Frequency) | [Speed]([Blockinteract]-Speed) | [Direction]([Blockplace]-Direction) | [Commands]([Chat]-Commands) | [Improbable]([Combined]-Improbable) |
8 | | [Noswing]([Blockbreak]-Noswing) | [Visible]([Blockinteract]-Visible) | [Fastplace]([Blockplace]-Fastplace) | [Logins]([Chat]-Logins) | [Invulnerable]([Combined]-Invulnerable) |
9 | | [Reach]([Blockbreak]-Reach) | | [Noswing]([Blockplace]-Noswing) | [Relog]([Chat]-Relog) | [Munchhausen]([Combined]-Munchhausen) |
10 | | [Wrongblock]([Blockbreak]-Wrongblock) | | [Reach]([Blockplace]-Reach) | [Text]([Chat]-Text) | [Yawrate]([Combined]-Yawrate) |
11 | | | | [Speed]([Blockplace]-Speed) | [Warning]([Chat]-Warning) | |
12 |
13 | | Fight | Inventory | Moving | Net |
14 | |-----------------------------------------|-----------------------------------------|----------------------------------------------------|-------------------------------------------|
15 | | [Angle]([Fight]-Angle) | [Drop]([Inventory]-Drop) | [Morepackets]([Moving]-Morepackets) | [Flyingfrequency]([Net]-Flyingfrequency) |
16 | | [Criticals]([Fight]-Criticals) | [Fastclick]([Inventory]-Fastclick) | [Morepacketsvehicle]([Moving]-Morepacketsvehicle) | [Sounddistance]([Net]-Sounddistance) |
17 | | [Direction]([Fight]-Direction) | [Fastconsume]([Inventory]-Fastconsume) | [Nofall]([Moving]-Nofall) | |
18 | | [Fastheal]([Fight]-Fastheal) | [Gutenberg]([Inventory]-Gutenberg) | [Creativefly]([Moving]-Creativefly) | |
19 | | [Godmode]([Fight]-Godmode) | [Instantbow]([Inventory]-Instantbow) | [Passable]([Moving]-Passable) | |
20 | | [Noswing]([Fight]-Noswing) | [Instanteat]([Inventory]-Instanteat) | [Survivalfly]([Moving]-Survivalfly) | |
21 | | [Reach]([Fight]-Reach) | [Items]([Inventory]-Items) | | |
22 | | [Selfhit]([Fight]-Selfhit) | [Open]([Inventory]-Open) | | |
23 | | [Speed]([Fight]-Speed) | | | |
--------------------------------------------------------------------------------
/Development/bip/bip-3.16.1-and-later.md:
--------------------------------------------------------------------------------
1 | ## Build Infos Page - NoCheatPlus 3.16.1 and later.
2 |
3 | [Back to the Build-Infos overview.](https://github.com/NoCheatPlus/Docs/wiki/Build-Infos)
4 |
5 | ----
6 |
7 | ### 3.16.1-SNAPSHOT-sMD5NET-b1149(cumulative)
8 | * Release type: [BLEEDING] development
9 | * New
10 | * The void-to-void set back policy now supports dragging players downwards into the void.
11 | * Support for overriding block breaking times for specific side conditions: compatibility.blocks.breakingtime
12 | * Support permission caching (configurable).
13 | * Fight.WrongTurn: Invalid pitch (experimental).
14 | * SurvivalFly: Don't allow relaxing the VL in-air (configurable), neither allow horizontal buffer regain, if frozen.
15 | * Actions now support 'cancel with probability', e.g.: 30%cancel.
16 | * Configuration
17 | * Activation (_active_), lag adaption (_lag_) and _debug_ flags: starting from _checks_ for all sub checks, the value 'default' now means to fetch the flag state from the check/group above in the hierarchy, enabling you to turn on/off activation/lag-adaption/debug for groups of checks with one switch. Note that not all _active_ flags are actual checks with a check type (yet), best compare to the default configuration, where _default_ is set.
18 | * Fixes
19 | * Fix dealing too high amounts of damage with jump effect.
20 | * Deal fall damage from 3.5 blocks height on.
21 | * Fix passable with fences at 1.0 height.
22 | * Adjust lost-ground case to accommodate for equipped end portal frames.
23 | * Improve slime block + piston support (partial).
24 | * Fix wooden pick with iron blocks (efficiency 0 - 5).
25 | * Fight.direction (loop check): Skip if hitting from inside the box.
26 | * Fight.NoSwing: Patch up first attack always triggering.
27 | * Track trampling of soil, due to false positives with SurvivalFly (and possibly Passable).
28 | * Include soil and grass path in the multi client protocol block shape patch (blind, with lily pad).
29 | * FastClick: Fix 'continuous drop' from the player inventory and 'collect to cursor'.
30 | * Net checks: cover cases with UnsupportedOperationException better.
31 | * Attempt to skip Inventory.Open for NPCs in general.
32 | * Define all the default child permissions within plugin.yml (check .silent, command filter).
33 | * Catch a NullPointerException within the UseEntityAdapter.
34 | * Prevent NullPointerException in the "skip paper" workaround.
35 | * Incompatibilities
36 | * MC 1.6.x and older: Old versions of ProtocolLib might be incompatible (Temporary players vs. getUniqueId).
37 | * API breakage (see: Internals, below).
38 | * Internals
39 | * [BREAKING] Don't allow removal of PlayerData for online players.
40 | * Other fixes: Disable multi protocol patch with unit tests. Fix Activation return types.
41 | * [BREAKING] Slight overhaul of check type hierarchy and utilities (No freely definable check types yet.).
42 | * [BREAKING] Use a new internal event registry, to allow control of processing order, as well as unregistering events.
43 | * [BREAKING] Always use permission subscriptions for notifications. Might lead to notifications missing, if a permission plugin somehow bypasses the subscription mechanics. Removes PermStateReceiver and related internals.
44 | * [BREAKING] New implementation of exemption handling (basic internals: consistency within thread-context, thread-safe access, mimic legacy behavior).
45 | * [BREAKING] (I)WorldDataManager stores all sorts of per-world (-per-check-type) things (to be continued).
46 | * [BREAKING] (I)PlayerDataManager stores per player data (including config cache, debug flags, exemptions).
47 | * [BREAKING] (I)PlayerData holds a cache for per player configuration and data.
48 | * [BREAKING] ActionFactoryFactory API changed.
49 | * BridgeHealth (+use) changed.
50 | * Safer IPlayerData getting, pre-create during AsyncPlayerPreLogin.
51 | * (Other cleanup, fixes related to the more complex recent additions.)
52 |
--------------------------------------------------------------------------------
/Development/Discussion/FakeEntities.md:
--------------------------------------------------------------------------------
1 | # Using fake entities to detect fight-cheats
2 |
3 | ## Idea
4 | * Fake entities are placed and moved around near players.
5 | * Legitimate players are not meant to notice the fake entities in any way.
6 | * A cheat implementation might take them for real and attack them.
7 |
8 | ### Preventing false positives
9 | * Entities might be rendered invisible.
10 | * Render so shortly that players don't notice.
11 | * Moving entities around, such that the legitimate player never is able to hit them.
12 | * Tricks.
13 |
14 | ### Make the entities appear real to the cheat implementation
15 | * Render invisible.
16 | * Adjust field of view.
17 | * More tricks.
18 |
19 | ### Expected benefit of the method
20 | * Cheaters are detected almost 100% of the time.
21 | * False positives hardly exist.
22 | * Banning (almost) instantly is possible.
23 | * Positive PR due to banning real cheaters.
24 | * Performance impact is low, due to only using packet sending for faking entities, possibly run asynchronously.
25 |
26 | ## Problems
27 | Current known issues are:
28 | * Interference with game play: flickering, false positives due to latency (after all something clickable is clickable).
29 | * Easily detectable: Even without using cheats, the use of this method is certainly detectable with quite simple code. Clients could adjust on-the-fly, at least not to get banned.
30 | * Clients can emulate normal clicking. The code is on client side, it's certainly possible to just have the cheat use the vanilla code for estimating what is hit, instead of sending an attack packet for a nearby entity.
31 | * It's unthinkable that players can't see entities, but a cheat running on client code can't determine what's rendered/visible.
32 | * Same goes for bounding boxes: If a player can't click on it, why should a cheat client click on it?
33 | * If the entities are changed such that there is only a very short window to hit an entity with a certain id, you could have a legitimate player still click on it due to latency/congestion, and you will have cheat implementations that just queue the necessary actions and play them out realistically, including emulating clicking like a player.
34 | * Bypasses: Claims are bypasses exist. Very likely, and very likely it'll be bypassed in generic ways, so it won't really pay to use fake entities for direct detection at all.
35 | * You can reduce false positives by having thresholds, demanding multiple hits.
36 | * A player with networking congestion could still see a 1-tick-visible thing and run in circles and keep hitting it for 1 or 2 seconds, despite it being very improbable. This needn't be a problem, however how does the player explain not to have used cheats?
37 | * This doesn't really affect the general problems with the clients being able to bypass it.
38 |
39 | ## Outlook
40 | * What a player can click on a client can click on too. A client may not want to click on things players can't click on. A client may not want to pursue targets that haven't been rendered.
41 | * Only simplistic/old-style clients are caught. Better than nothing (see conclusion).
42 | * Obfuscating real players and entities in more complex ways as well as letting fake entities appear more realistic (don't ask me how to do so without having legitimate players see them), it'll at some point impact system performance, without much potential to actually gain ground, in terms of clients not being able to track real vs. fake.
43 | * Moving away from a more or less direct detection to posing traps for entity trackers is a different topic and has nothing to do with the current "hype".
44 |
45 | ## Conclusion
46 | * Using fake entities will catch current simple clients for a while, but it should be possible to detect and bypass that in generic ways. It's not feasible to use this method on the medium/long run.
47 | * Server side pattern detection will be similarly easy to bypass by adapting cheats, however there is a much higher chance to catch stuff after adjusting patterns to new cheats/clients than with using entities that can be ignored by cheats in generic ways.
48 |
--------------------------------------------------------------------------------
/Features.md:
--------------------------------------------------------------------------------
1 | ## Compatibility
2 | NoCheatPlus features a range of compatibility features.
3 | * Compatibility with multiple versions of Minecraft. You can rely on the latest version of NoCheatPlus still running on a range of past versions of Minecraft.
4 | * Configuration allows working around issues with specific blocks (custom mods, early adopter).
5 | * A range of API features to allow developers to make their plugins compatible (exemption API, exemption by meta data, hooks for violation processing, other).
6 | * Default exemption for NCPs, such as with Citizens.
7 | * Vanilla features. It may not seem worth mentioning, but we can't support all features to arbitrary depths. Still you will find that NoCheatPlus provides a balance between supporting vanilla features, extensions like higher level potion effects and attributes (vanilla too, but usually not encountered without command blocks or adventure maps), and finally protection from abusing those features vs. false positives. Our aim is to support all vanilla features, of course, it's a larger task than you might think.
8 |
9 | ## Movement
10 | * Prevents flying.
11 | * Limits speeding (packets and apparent speed).
12 | * Prevents speeding by sending too many packets.
13 | * Enforces fall damage.
14 | * Prevents no-clipping.
15 | * Prevent vehicle flying (1.9+)
16 | * Limit vehicle speeding (packets and extreme distances).
17 |
18 | ## Net (Require ProtocolLib)
19 | * Attacking frequency monitoring (not possible otherwise).
20 | * Prevents from spamming flying packets to nail other players down in their tracks or cause other unwanted side effects
21 | * Prevents from tracking down other players by abusing a weakness in the Minecraft weather
22 | * (Further tweaks against false positives.)
23 |
24 | ## Fight
25 | * Enforces sane turning speeds
26 | * Prevents hitting of multiple entities at the same time
27 | * Prevents fake critical hits
28 | * Forces to look at the entity before hitting
29 | * Prevents fast health regeneration
30 | * Prevents invulnerability
31 | * Enforces arm swing on fight
32 | * Prevents hits that have gone out of reach
33 | * Prevents too many hits in a row
34 |
35 | ## Block breaking
36 | * Forces to look at the block before breaking
37 | * Prevents quicker block breaking
38 | * Prevents from breaking multiple blocks at the same time
39 | * Forces arm swing on block breaking
40 | * Prevents breaking of blocks that are out of reach
41 | * Forces to interact first before breaking the block
42 |
43 | ## Block interaction
44 | * Forces to look at the block before interacting
45 | * Prevents interaction with blocks that are out of sight
46 | * Prevents interaction spam
47 | * Prevents interaction if block technically not visible
48 |
49 | ## Block placing
50 | * Prevents placing blocks against liquids and air
51 | * Enforces cool-down for sign placement
52 | * Forces to look at a block before placing
53 | * Prevents placement of multiple blocks at the same time
54 | * Prevents block placement if out of reach
55 | * Forces arm swing on block placement
56 | * Prevents projectile spamming
57 |
58 | ## Chat
59 | * Prevents a range of text spamming variants.
60 | * Implements captcha capabilities.
61 | * Prevents re-logging spam.
62 | * Prevents login spam.
63 |
64 | ## Commands
65 | * Prevents command spam.
66 | * Allows to treat certain commands as chat.
67 | * Confine commands like op and deop to be used from the console only.
68 |
69 | ## Combined
70 | * Prevents faking of "bedleave" packets.
71 | * Prevents enderpearl abuse (noclip).
72 | * Limits advanced fight cheats by combining multiple fight checks in one.
73 | * Removes fall damage invulnerability on login selectively (configurable damage types!).
74 |
75 | ## Inventory
76 | * Prevents dropping of too many items within too short time.
77 | * Prevents some forms of inventory management.
78 | * Prevents bow and arrow spam.
79 | * Enforces eating speeds.
80 | * Closes inventory in some cases to prevent ever-reappearing duplication bugs.
81 |
82 | ## Other
83 | * Can send MOTDs to control some client mods that support it (Reis minimap etc.).
84 | * Prevents creating books with unlimited pages.
85 |
--------------------------------------------------------------------------------
/Settings/Multiworld.md:
--------------------------------------------------------------------------------
1 | # How to create a world specific configuration file ?
2 |
3 | 1. Create an empty .yml file according to a world name on your server or download the example empty one from [here](Resources/world_nether_config.zip) (unzip and rename it). Example: world_config.yml (the _ is required! and everything is case sensitive!).
4 | 2. Start-up your server or just run `/ncp reload` or `/nocheatplus reload` if your server is already running.
5 | 3. NoCheatPlus should now write every settings available for world specific configuration in that/those empty yaml files.
6 | 4. If you rather prefer to use some settings of your global config.yml then set "savebackconfig" to false and remove the settings from your world specific configuration file.
7 |
8 | * Example end result: 
9 | * Other examples: WorldName_config.yml, world_nether_config.yml, world_the_end_config.yml, HungerGames_config.yml or BackupWorld_config.yml
10 |
11 | ## Configs that only work in config.yml (Global configuration file)
12 | `ToDo for asofold: Why exactly are those only global?`
13 | * configversion.notify
14 | * configversion.created
15 | * configversion.saved
16 | * logging.active
17 | * logging.exteneded.status
18 | * logging.backend.console.active
19 | * logging.backend.console.prefix
20 | * logging.backend.console.asynchronous
21 | * logging.backend.file.active
22 | * logging.backend.file.prefix
23 | * logging.backend.file.filename
24 | * logging.backend.ingamechat.active
25 | * logging.backend.ingamechat.prefix
26 | * logging.backend.ingamechat.subscriptions
27 | * data.expiration.active
28 | * data.expiration.duration
29 | * data.expiration.history
30 | * data.consistencychecks.active
31 | * data.consistencychecks.interval
32 | * data.consistencychecks.maxtime
33 | * data.consistencychecks.suppresswarnings
34 | * protection.plugins.hide.active
35 | * protection.plugins.hide.nopermission.message
36 | * protection.plugins.hide.nopermission.commands
37 | * protection.plugins.hide.unknowncommand.message
38 | * protection.plugins.hide.unknowncommand.commands
39 | * protection.commands.consoleonly.active
40 | * protection.commands.consoleonly.message
41 | * protection.commands.consoleonly.commands
42 | * protection.clients.motd.active
43 | * protection.clients.motd.allowall
44 | * checks.chat.commands.exclusions
45 | * checks.chat.commands.handleaschat
46 | * checks.chat.text.global.words.active
47 | * checks.chat.text.global.prefixes.active
48 | * checks.chat.text.global.similarity.active
49 | * checks.chat.text.player.words.active
50 | * checks.chat.text.player.prefixes.active
51 | * checks.chat.text.player.similarity.active
52 | * checks.moving.survivalfly.hover.step
53 | * checks.net.flyingfrequency.seconds
54 | * checks.net.flyingfrequency.packetspersecond
55 | * checks.net.flyingfrequency.reduceredundant.seconds
56 | * compatibility.exemptions
57 | * compatibility.exemptions.remove
58 | * compatibility.exemptions.remove.join
59 | * compatibility.exemptions.remove.leave
60 | * compatibility.managelisteners
61 | * compatibility.bukkitapionly
62 | * compatibility.blocks
63 | * compatibility.blocks.breakingtimes
64 | * compatibility.blocks.allowinstantbreak
65 | * compatibility.blocks.overrideflags
66 | * compatibility.blocks.overrideflags.snow
67 |
68 | **Notes**
69 | * The world name is case sensitive (MiningWorld, theWorld etc.).
70 | * You can set savebackconfig to false, in order to not have NoCheatPlus add default values to a config file. Thus you can override just the values you are interested in and keep a minimal world-specific configuration file.
71 | * WorldName_config.yml has always higher priority then config.yml. So NoCheatPlus will first apply all settings from config.yml and then override them for a specific world using WorldName_config.yml
72 | * Some settings can only be used in the global config.yml and aren't multiworld compatible (Please don't just copy config.yml and rename it to WorldName_config.yml or similar.)
73 | * World specific files can be created, changed or removed while your server and NoCheatPlus are running. Just use the /ncp reload or /nocheatplus reload command to let NoCheatPlus reread your configuration file.
74 | * If a world gets unloaded, deleted or renamed then NoCheatPlus will automaticly ignore your world specific configuration files you made for it
75 |
--------------------------------------------------------------------------------
/Fundamentals.md:
--------------------------------------------------------------------------------
1 | This page describes the fundamentals of what NoCheatPlus is based upon.
2 |
3 | # Levels of Protection and Detection
4 | The fundamental concept of NoCheatPlus is to cover the most important grounds for survival game play with _deterministic protection_ in the first place. This means the protection is meant to still be there after cheat clients have updated, and it can only by bypassed if there are bugs. Naturally not all possible cheats are covered or are even possible to cover, and cheat clients can adapt to the limits in some cases, but they can't _break_ the limits.
5 |
6 | The next layer consists of _heuristics and educated guessing_, which may be more prone to allow actual bypasses, but which are likely to hold for a while, due to the conception aiming at fundamental mechanics of legitimate game play rather than detecting specific behavior of cheating, the latter of which could change with a cheat client update.
7 |
8 | The thing we do least is _detecting specific cheats or patterns of cheating_, which usually allows a cheat client to completely bypass the checks with the next client update, in which case we would end up with _hourly updates_ on both sides. Such an approach would allow for easier banning, however despite the _detection_ for a range of known cheats and cheat clients, it does not provide any actual long-term _protection_, which is why we don't rely on such methods in the first place.
9 |
10 | Main reasons for taking the approach 'protection before detection' are:
11 | * The level of protection the vanilla server provides by default is not very high.
12 | * Manpower - this is the 'free' plugin, and we need to provide something usable, without burning all our brain with cat and mice play. Thus we focus on rather lasting things in the first place.
13 |
14 | # False Positives
15 | A large amount of time is spent with testing and balancing, in order to not cause or at least to reduce false positives. For game play, false positives can be show stoppers. It's worth nothing to detect a cheat, if we cause game play breaking false positives - supporting a wide range of server types means not underestimating this aspect.
16 |
17 | To be able to confine better what cheating can do, we also must keep false positives at bay by design, otherwise we too often end up with reducing the sensitivity of a checking method, resulting in both less protection. Our primary approach is to create more precise envelopes for legitimate client behavior based on experience and diligence, thus we need to account for the physics of things, just to avoid the word _mechanics_ for a split second. Naturally with multi-player games there is latency, networking congestion and just _lag_ of other type on client- and/or server-side. In order to reduce or fully remove false positives, we will need infrastructure to be able to (rather) deterministically determine what may be or may have been the case at the time of the client side taking action. It can't be achieved by allowing a wider range for hitting, for a simple example.
18 |
19 | # Abstraction and Infrastructure
20 | Many servers stay on the previous version of Minecraft, when a Minecraft update happens. Such can cover longer phases, thinking of 1.7.x ... 1.8.x ... 1.9. Thus we support multiple versions of Minecraft by default. It's harder to remove compatibility than to keep going, most of the time, and cheat clients tend to be written for the most used versions of Minecraft.
21 |
22 | Infrastructure is needed for things like:
23 | * Piston compatibility (future: pushed a block far, moving through blocks, on-ground?). Also concerns other block changes like doors, block breaking and placing by others, blocks changing with redstone or gravity.
24 | * Latency and precision with fight checks (part future).
25 | * Judge player moving (past moves with details about the environment).
26 | * Efficiency with testing for map/block properties over and over.
27 | * Keeping code changes minimal for a new version of Minecraft, because checks can rely on the infrastructure to remain mostly unchanged.
28 |
29 | Of course infrastructure is expensive, as it does not catch cheaters directly, and it's either lengthy or even difficult to create, or at least it needs experimentation. Experience tells that so far, the approach has paid off manifold.
30 |
31 | # Conclusion
32 | Ideally multiple developers should share time to create a future open-source thing, instead of wasting time with detecting individual instances of cheat implementations (...). We've at least shown what could have been done much faster with people sharing resources.
33 |
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-General.md:
--------------------------------------------------------------------------------
1 | This page explains configuration options which affect or support multiple moving checks.
2 |
3 | | Option | Description |
4 | | :------------------------------ | :---------- |
5 | | trace _size_ | Number of entries in the per-player location trace.|
6 | | trace _mergedist_ | Exceeding this distance with a move means that a new entry is created, otherwise it'll be merged into the latest one.|
7 | | vehicles _preventdestroyown_ | Prevent to destroy a vehicle while they are riding/mounting it.|
8 | | vehicles _enforcelocation_ | Attempt to track extreme deviations from the vehicle position and correct them. Experimental (hopefully-) legacy option. Likely inoperable and useless, subject to removal.|
9 | | velocity _activationcounter_ | Queued unused velocity is removed after this amount of incoming moving packets.|
10 | | velocity _activationticks_ | Queued unused velocity is removed after this amount of server ticks.|
11 | | velocity _strictinvalidation_ | More strict invalidation of queued velocity. Might get removed.|
12 | | ignorestance | Ignore the bounding box check for players. This can be used to prevent compatibility issues on legacy setups. Set to default, it will disable from 1.8 on. Force set with true/false. |
13 | | tempkickillegal | Setting this to false will just kick a player that does a illegal movement instead of actually tempbanning him for 24 hours. Technically NCP uses its deny login feature, only counting until next restart, not the ban command.|
14 | | loadchunks _join_ | Setting this to true will load up chunks around the player while they are logging in. |
15 | | sprintinggrace | Grace-period in seconds for sprinting. Due to latency, there are often still moves incoming, after ther server-side has caused sprinting to expire/toggle.|
16 | | assumesprint | Setting this to true will assume that the player is always sprinting. The server-side state does not always match what the client does.|
17 | | speedgrace | Grace-period in seconds for speed potion. Same as with sprintinggrace, the server might remove the potion effect and there are still moves incoming due to latency.|
18 | | enforcelocation | Track if the player has somehow managed to get to ridiculous places without a moving event firing. Fixed the vehicle-teleport exploit. Legacy option for some time before Spigot 1.7.10. Setting to default will activate/deactivate based on the detected Minecraft version. Force set with true/false.|
19 |
20 | There are also hidden options, which give more access to internals. Use with care, as these might allow different kinds of cheats or lead to other false positives, if changed. Ask back if in doubt or test changes made.
21 |
22 | |Hidden Option | Description |
23 | | :------------------------------ | :---------- |
24 | | yonground | Control the vertical distance to blocks, at which NCP will assume the player to touch ground. This affect any moving-related checks, dealing fall damage etc. Capped at a maximum value of 0.0625, and a minimum of 0.00001. The default value may be around 0.016. Adjusting this to something higher might allow moving slightly above cactus without taking damage, but it might also help on certain false positives. Changes should be tested with issues that can be reproduced at will. |
25 | | setback _method_ | Technique of setting back players. Legacy before MC 1.9: "set_to" The set_to setting will lead to problems since MC 1.11.2 since 2017-03-24, because TeleportCause.PLUGIN will result there, leaving potential for misinterpretation by other plugins. For MC 1.11.2 but also for 1.9 and later, the setting "cancel+update_from+schedule" is the default, it would cancel moving events, and induce teleporting to the set back location by updating the from location, with a fall-back check on-tick (schedule). The defaults can be referenced via their ids: default.legacy for pre-1.9, default.modern for latest (currently post-1.9), default.cautious for the latest with potential risks disabled (such as the teleport skipping condition using packet level ack). |
26 |
27 | **Notes**
28 | * Players could do a illegal movements which would crash the server, so we made a check against it that would tempban a player for 24 hours if they exploit that. However some users wanted to just kick such players and for that reason we put boolean to activate/deactivate temporary banning called `tempkickillegal`.
29 | * Minecraft fixed the "destroyown vehicle" bug so vehicles preventdestroyown option is just here for legacy servers. Leaving it enabled won't conflict with anything either.
30 | * The Minecraft client moves (well more falls) even if no chunks are loaded up which could trigger a tiny Passable false positive. We tried to smooth this further out by loading up the chuncks on join as fast as possible with `loadchuncks _join_`. It seems that Mojang allows the client to move inside unloaded chunks, for the vanilla fly check because it would prevent false positives with it.
31 |
--------------------------------------------------------------------------------
/Development/bip/bip-3.13.7-and-later.md:
--------------------------------------------------------------------------------
1 | ## Build Infos Page - NoCheatPlus 3.13.7 and later.
2 |
3 | **These builds are outdated.**
4 |
5 | [Back to the Build-Infos overview.](https://github.com/NoCheatPlus/Docs/wiki/Build-Infos)
6 |
7 | ----
8 |
9 | ### 3.14.0-SNAPSHOT-sMD5NET-b989(mostly stable, cumulative)
10 | * Release type: **mostly stable**
11 | * Supported versions of Minecraft (CraftBukkit/Spigot)
12 | * Focus: 1.9.4
13 | * Supported: 1.4.5-R1.0 - 1.9.4
14 | * Download at Jenkins: https://ci.md-5.net/job/NoCheatPlus/989/
15 | * Hashes
16 | * MD5: f14bcc06f982d4d75750e36897716820
17 | * SHA512: 73565272d83ca943118cbd8cea9891dc02fab1a539c26f8cb909ea7b3fefc5e92ea0e2f07901a2209e2f64f47ca6d96da986f4b4c1a9f6aa919eb76ad60c6ce9
18 | * File size: 1165971
19 | * New
20 | * MC 1.9.4 compatibility.
21 | * Basic boat fly check.
22 | * Exempt NPCs from all checks by default.
23 | * 'ncp stopwatch' for testing.
24 | * Configuration
25 | * Create a new vehicle section, change related paths.
26 | * The temporary login denial message is now configurable (strings.msgtempdenylogin).
27 | * Configure exemption by meta data and exemption for NPCs.
28 | * Add configuration for boatsanywhere (place on land).
29 | * Change default for 'ignoreallowflight' to true.
30 | * Fixes
31 | * Sweep attack detection (AoE).
32 | * StackOverflowError with inventory.open and a blacklist kick by WorldGuard.
33 | * NoFall: Skip dealing damage to players who are allowed to fly.
34 | * SurvivalFly: Fix climbing up trap door above ladder. (partial)
35 | * Prevent another variant of packet-based speeding.
36 | * Vehicles: Fix vehicle detection for missing vehicle events.
37 | * Vehicles: set-back handling.
38 | * Support higher levels of the levitation effect.
39 | * Improve vertical piston support (not finished, not yet officially activated).
40 | * TO BE TESTED: Allow vertical velocity on ladders and vines (once).
41 | * Account for off hand in (hopefully) all relevant places.
42 | * Also recognize ProtocolLib versions just with build number prefix.
43 | * Do not check for meta data off the primary thread.
44 | * Internals
45 | * Debug only: unused vertical velocity tracking.
46 | * [BREAKING] Larger refactoring and changes for vehicle fly checks (mostly unify/change location and set-back handling).
47 | * Hard teleport on vehicle set-backs by default, from within other event handling.
48 | * Location trace doesn't merge entries anymore (fight / latency).
49 | * Extend/alter debug logging.
50 | * Added GPLv3 headers to source files.
51 |
52 | ### 3.14.0-SNAPSHOT-sMD5NET-b960(mostly stable, cumulative)
53 | * MC 1.9
54 | * Blocks break data and flags.
55 | * Dedicated MCAccess module for CB with MC 1.9.
56 | * Allow standing on shulkers.
57 | * Rough levitation support.
58 | * Very coarse elytra support, hardly safe vs. abuse. _Note recent configuration overrides (not advertised!)._
59 | * Allow versions of ProtocolLib with MC 1.9 (currently disable SoundDistance): 3.7, 3.7.0, 4.0.0 or later.
60 | * Ignore sweep attack follow up damage.
61 | * "Noob tower": jumping upwards, building underneath.
62 | * Ignore multi-block place of bedrock and ender crystals.
63 | * Block place: check the placed material instead of what's in main hand, if available.
64 | * Disable FastHeal with MC 1.9.
65 | * (Still enable the pvp-knockback workaround with MC 1.9.)
66 | * Configuration
67 | * Change creativefly model configurations (default speeds for elytra and spectator).
68 | * Increase hover login ticks to 60 (previously 0).
69 | * Fixes
70 | * More cases with splashing through water.
71 | * creativefly
72 | * Fix violation skipping/cooldown mechanics. This might increase violation levels.
73 | * Fix set back handling (maxheight).
74 | * Fly-nofly transition: Reduce [ERROR].
75 | * Player instances stored wrongly.
76 | * Internals
77 | * Add more minimized build profiles to pinpoint Spigot 1.8.8/1.9.
78 | * Organize some workaround code better.
79 | * Extend/alter debug logging.
80 |
81 | ### 3.13.8-SNAPSHOT-sMD5NET-b930(cumulative)
82 | * New
83 | * A quick check for extreme moves.
84 | * Fixes
85 | * Portal events: only clear data if a location is present, add debug log.
86 | * FastClick: Don't add violation twice for display.
87 | * Fix HashMapLow (bucket position).
88 | * Changes
89 | * Handle system time running backwards differently.
90 | * Adjust log message for ProtocolLib.
91 | * Internals
92 | * [BREAKING] Add a penalty framework. Breaks internal API, see commit messages and diffs.
93 | * Catch unintended input somewhere.
94 |
95 | ### 3.13.7-RC-sMD5NET-b925
96 | * RC Release (milestone release).
97 | * MD5: d27d11a413b1ef0f6875959f9af806e7
98 | * SHA512: 9382f7d2dc8edc05104a5f56998c42803678de45ea32768015609e638d1d783febd56d7912766dabe0ae802c2fbd3cc152f686876599f8af6bd12276c54e46d9
99 | * File size: 1032874
100 | * Internals
101 | * Use internal registry for a Random instance.
102 |
103 |
--------------------------------------------------------------------------------
/Development/Discussion/ClientSideAntiCheat.md:
--------------------------------------------------------------------------------
1 | # Client Side Anti Cheat
2 | This topic keeps popping up, thus we need to clarify our position on this kind of idea.
3 |
4 | ## The Idea
5 |
6 | * Have a client-side solution for detecting or preventing cheats.
7 |
8 | ## Pro
9 |
10 | * The client-side is literally forced to be legit.
11 | * Cheat client developers can't possibly bypass checking for checksums of the binaries/jars.
12 | * Obfuscation rules, cheat client developers have an extra hard time finding what to change to bypass stuff.
13 | * Nodus doesn't work anymore.
14 | * Client side binary installers will ensure no tricks can be used.
15 | * Memory scanning allows to do stuff you won't even want to imagine.
16 | * Ridiculous constraints like not running more than two programs at a time will ensure that no one can bypass this.
17 |
18 | ## Contra Pro
19 |
20 | * Things last until you have one capable cheat client developer interested in "bypassing shit". They're as forced to be legit as they're forced to use a vanilla client for a vanilla server.
21 | * Checksums don't really help, they can be found, faked and will finally be forgotten.
22 | * Obfuscation doesn't prevent people altering the Minecraft server into a system capable of running plugins, why would it scare off a cheat client developer who is used to dealing with obfuscated client code in the first place?
23 | * Nodus can still be updated.
24 | * Client side binary installers will be worked around like every single other game installer of the past and present. Truly legit people may fear malware, unwanted data leaking, privacy risks, security risks, and so on.
25 | * Who wants to have their (entire !?) memory scanned? A capable cheat client developer will prefer to remove that feature by altering the software.
26 | * Ridiculous constraints will be either bypassed by capable cheat client developers having a look at your program, or by players not playing on your server, because it's annoying.
27 | * The client altered by a capable cheat client developer will eventually leak, now (almost) all people can use/do it.
28 |
29 | ## Contra anyway
30 |
31 | * Having to install an extra client just for certain servers is a nuisance in general.
32 | * How trustworthy is such a software, be it a binary installer or just altered obfuscated jar files?
33 | * The more intrusive a software is and the more special things it can do...
34 | * ...the more likely security holes will open.
35 | * ...the more likely it'll be an actual risk to your data (privacy, passwords, pictures).
36 | * ...the more likely no one will have a clue what the software actually is doing.
37 | * ...the more likely you'll bungle the EULA for users from Tonga and might even get dragged to court for distributing malware.
38 | * The more such is used, the more cheat client developers will have a look.
39 | * The less such is used, the more likely it'll contain bugs and pose a security or privacy risk.
40 | * People want more... what will it do next?
41 | * Client side stuff can virtually always be bypassed in a generic way.
42 |
43 | ## To be fair
44 |
45 | To be fair, there is one thing a client side checker can do.
46 |
47 | Requirements:
48 | * The software is hardly used by anyone.
49 | * Your players can be tricked into using it.
50 |
51 | Pro:
52 | * Cheat consumers can't just download a random cheat client and use it on your server. Job done.
53 |
54 | It could still happen that someone pays someone else (or is someone else) who then bypasses that client. In essence you probably don't really need a highly complex client side thing just for this use case, as nobody will even try to make a specialized client.
55 |
56 | # Suggestions
57 |
58 | Where could this possibly lead to?
59 |
60 | ## Future A: HACSS and HACCS
61 |
62 | Hardware Anti Cheat!!
63 |
64 | Think of a fancy piece of hardware needed to connect to your server. The suggested platform would cover an entire wall of a room and allow real-time streaming of everything inside the room to your server side interface (HACSS) or you subscribe to the cloud service (HACCS). Nothing your players could possibly do will go unnoticed, biometric data gathering will allow identifying real-life cheaters in a reliable way.
65 |
66 | ## Future B: PEACE BOTS
67 |
68 | Since nobody is playing anymore anyway, just fake players by using 100% legit bots, also use bots for the remaining lot of actual players, use a fake server for the players to cheat there, and have additional 100% legit bots connect to the real server instead of the real players. Inform the players about their progress on the real server now and then. No more real-life trouble.
69 |
70 | ## Making Sense
71 |
72 | If you want to confine your players to using a certain client, we suggest to do it right. Not sure this is right:
73 | * Open source.
74 | * No tricks, no exposing of additional data, no extra privacy violations, no legal trouble.
75 | * Focus on sending extra packets to the server, with the design aim to erase false positives in the first place. This allows to make server side checks way more strict and removes a lot of server-side workarounds and special cases. Cheating gets harder, because the server expects the extra kinds of packets that just tell in more detail what the player is doing in-game.
76 | * Of course cheating isn't gone that way, relax.
77 |
--------------------------------------------------------------------------------
/Settings/Checks/[Moving]-Survivalfly.md:
--------------------------------------------------------------------------------
1 | Config path: `checks.moving.survivalfly`
2 | Permission (bypass): `nocheatplus.checks.moving.survivalfly`
3 | Exemption: `MOVING_SURVIVALFLY`
4 | Better with: `[Moving] Morepackets` and `[Combined] Bedleave`
5 |
6 | SurvivalFly aims to control pretty much everything related to moving such as flying, running, swimming and more.
7 |
8 | | Option | Description |
9 | | :---------------------------------- | :---------- |
10 | | extended _vertical-accounting_ | Monitor how the players speed varies in-air. Enforces gravity for a minimum amount. |
11 | | stepheight | The height a player can from ground upwards to ground, without jumping. This is set to 'default' by default, so NCP will adjust it automatically with the Minecraft version. In case NCP can't detect the version properly, e.g. with custom builds, setting an explicit value might help. Used to be 0.5 before MC 1.8 and 0.6 from then on. |
12 | | setbackpolicy _falldamage_ | Deal fall-damage according to fall-distance on survivalfly violations. Meant to make exploiting the set-back to last ground location more expensive. |
13 | | setbackpolicy _voidtovoid_ | Attempt to set-back into the void, if already there. |
14 | | hover _step_ | Tick-period for which to perform hover checking. |
15 | | hover _ticks_ | Ticks after which a player is assumed to hover if still in-air and not moving. |
16 | | hover _logingticks_ | Extra ticks added to hoverticks directly after login, to give more leniency. Set this on problems with hover + loging in. |
17 | | hover _falldamage_ | Deal fall-damage according to fall-distance, to make avoiding fall-damage harder. |
18 | | hover _sfviolation_ | A hover violation is counted as a survivalfly violations with this amount of violation level. |
19 | | leniency _hbufmax_ | The cap value for the horizontal buffer. Horizontal moving violations get compensated with emptying the buffer - it fills up with (allowed) moving below the applicable base moving speed (not accounting for special acceleration like with bunny hopping). |
20 | | leniency _freezecount_ | The number of moves, for which the violation level can't decrease, after a violation has happened. |
21 | | leniency _freezeinair_ | If set to true, the violation level can't decrease, while the player is moving in-air.
22 |
23 | The _leniency/freeze_ settings mainly aim at configurations that don't cancel for low violation levels. With the freezing option, cheaters can't create repeated small violations as easily.
24 |
25 | There are also hidden options, which give more access to internals. Use with care, as these might allow different kinds of cheats or lead to other false positives, if changed. Ask back if in doubt or test changes made.
26 |
27 | |Hidden Option | Description |
28 | | :------------------------------ | :---------- |
29 | | walkingspeed | Multiplier for the horizontal walking speed. Value is per-cent, 100 means no change (default), 200 doubles the allowed walking speed. Does not apply with sprinting! |
30 | | sprintingspeed | Multiplier for the horizontal sprinting speed. Value is per-cent, 100 means no change (default) , 200 doubles the allowed sprinting speed. Does only apply with sprinting! Due to the sprinting state on server side not always reflecting the client side, NCP will assume the player to be sprinting whenever technically possible (setting: _assumesprint_) - this means that this setting will take effect when the player isn't too hungry. |
31 | | blockingspeed | Multiplier for the horizontal walking speed, when blocking. Value is per-cent, 100 means no change (default), 200 doubles the allowed blocking speed. Overrides the modifiers above. |
32 | | sneakingspeed | Multiplier for the horizontal walking speed, when sneaking. Value is per-cent, 100 means no change (default), 200 doubles the allowed sneaking speed. Overrides the modifiers above. |
33 | | swimmingspeed | Multiplier for the horizontal swimming speed. Value is per-cent, 100 means no change (default), 200 doubles the allowed swimming speed. Overrides the modifiers above. |
34 | | speedingspeed | Multiplier for the horizontal speed. Value is per-cent, 100 means no change, 200 doubles the allowed horizontal speed (default). This always applies extra to other modifiers, regardless of the side conditions, provided a player has the permission _nocheatplus.checks.moving.survivalfly.speeding_. |
35 |
36 | **Notes**
37 | * If you alter the actions in the configuration to not always cancel, you might be allowing glide-like cheats. Issues with horizontal speed are easier to work a around by configuration, than issues with the vertical part of a move (display [tags] for reference, ask back).
38 | * A powerful tool for issues with moving is provided with the _on-the-fly debug logging feature_, significantly improving the odds for a quick fix: https://github.com/NoCheatPlus/Docs/wiki/Debugging#on-the-fly-debug-output-for-individual-players
39 | * Hover is a sub-check of SurvivalFly which prevents players from hovering around in mid-air.
40 |
41 | **Related**
42 | * [Active](General#Active)
43 | * [Actions](General#Actions)
44 | * [[Moving] Nofall](%5BMoving%5D-Nofall)
45 | * [[Moving] Creativefly](%5BMoving%5D-Creativefly)
--------------------------------------------------------------------------------
/Settings/General.md:
--------------------------------------------------------------------------------
1 | This page lists all the config options that apply to the multiple existing features.
2 |
3 | # Active
4 | Just a simple on/off switch for most features.
5 | **True**: Enables that feature
6 | **False**: Disables that feature
7 |
8 | **Notes**
9 | * Remember that NoCheatPlus will still load up the check on start-up even if its set to false.
10 | * Disabling a dependency form another check will turn it into a ghost (Wont do anything, like its disabled)
11 |
12 | # Actions
13 | "Actions" is kind off the task scheduler of NoCheatPlus, here you define which actions NC+ should take at a defined violation level.
14 |
15 | ## Overview and Customize
16 | | Action | Description |
17 | | :------------- | :------------|
18 | | **cancel** | The effects of the action "cancel" depend on the check that it is used for. Usually it means to prevent something from happening, e.g. stop an attack or prevent sending of a chat message. `cancel` |
19 | | **log** | Create and show/log a message. Log messages can be customized in how often, when and where they are registered/shown. `log:string:delay:repeat:target`
`log` Is simply used to let NoCheatPlus know that this is a log action.
`string` Here you define the message that will be logged over a string (check strings reference).
`delay` A number declaring how many times that action initially has to be executed before it really leads to logging a message. Use this for situations where it's common to have false positives in checks and you only want the log message to be shown if a player fails the check multiple times within a minute.
`repeat` A number declaring how many seconds have to pass after a message has been logged before it can be logged again for that player (cooldown). This is needed to prevent "log-spam". Usually a value of 5 seconds is acceptable, for rare events you can use lower values. It is recommended to at least use the value 1 (one second) here.
Example: `log:bdirection:0:5:if` |
20 | | **cmd** | Execute a command of Bukkit or another plugin as if it were typed into the server console by an admin. Like logging, these can be customized. `cmd:string:delay:repeat`
`cmd` Is simply used to let NoCheatPlus know it is a command action.
`string` Here you define which string (read strings reference) should be taken to execute as command.
`delay` A number declaring how many times that action initially has to be executed before it really leads to logging a message. Use this for situations where it's common to have false positives in checks and you only want the log message to be shown if a player fails the check multiple times within a minute.
`repeat` A number declaring how many seconds have to pass after a message has been logged before it can be logged again for that player (cooldown). This is needed to prevent "log-spam". Usually a value of 5 seconds is acceptable, for rare events you can use lower values. It is recommended to at least use the value 1 (one second) here. |
21 | | **cmdc** | Same as _cmd_, just with replacing color codes that use '&'. |
22 | | **vl>X** | Is meant to symbolize "violation level at least X". Used to define actions that will be executed only if players reached a certain violation level. Failing a check usually increases their "vl", not failing checks reduces it over time. Violation levels mean different things for different checks, e.g. they may describe moved distance beyond the limit, number of attacks above the attack limit, sent messages beyond the spam limit.
The "vl>x" isn't really an action. It limits all actions that are written afterwards to be only executed if the players’ violation level has reached at least the given value. This allows defining layers of actions and handling repeated or severe failing of checks different. For example the spam check will only kick players if they reach a certain violation level (vl). |
23 |
24 | **Template**
25 | 
26 |
27 | **Levels**
28 | 
29 | Level 1: Will be executed if the violation is under 1000
30 | Level 2: Will be executed if the violation is in range of 1000-1299
31 | Level 3: Will be executed if the violation is 1300 and higher
32 |
33 | Once a violation level reaches a **vl>X** limit all actions before that limit will become obsolete and wont be executed till the violation level goes down again. Now NoCheatPlus will execute the actions which are in the current level. Remember that executed commands wont be rolled back, so if you banned someone on level 2 he/she wont get unbanned on level 3 unless you specified it in your actions.
34 |
35 | **Notes**
36 | * For some checks immediate kicking or teleporting of players is not recommended, because it can conflict with the set-back logic or further event-processing, such as with the flying checks - for those we recommend to use the command prefix "ncp delay ", in order to run the actions outside of the event processing.
37 | * Always make sure to **cancel** first before you do something else (for example kick) to avoid exploits with checks not canceling properly
38 | * The ":delay:repeat" part can be omitted from the "log" and "cmd" actions
39 |
40 | **Related**
41 | * [Strings](Strings)
42 | * [Violations](Backgrounds#violations)
--------------------------------------------------------------------------------
/Development/API.md:
--------------------------------------------------------------------------------
1 | # History of API changes
2 | * Not sure we can keep double-bookkeeping here.
3 |
4 | # Maven
5 |
6 |
7 | Repositories:
8 | ```xml
9 |
10 | md_5-snapshots
11 | https://repo.md-5.net/content/repositories/snapshots/
12 |
13 |
14 | md_5-releases
15 | https://repo.md-5.net/content/repositories/releases/
16 |
17 | ```
18 |
19 | Depend on NoCheatPlus (snapshot):
20 | ```xml
21 |
22 | fr.neatmonster
23 | nocheatplus
24 | 3.16.1-SNAPSHOT
25 | provided
26 |
27 | ```
28 |
29 | # Official API
30 | The static access starting point can be: `NCPAPIProvider.getNocheatPlusAPI()`
31 |
32 | This is largely incomplete, but contains some useful functionality, such as getting handles for registrations with the IGenericInstanceRegistry.
33 |
34 | # Hooking into NoCheatPlus
35 | The hooks package of NCPCore contains two "managers" for different concepts to exempt players from checks.
36 |
37 | `NCPExemptionManager` This is the simple way to just exempt a player from a check, then unexempt. The current implementation is meant to be used short-term rather. Different plugins using exemptions might easily conflict. There is a command to set exemptions manually as well (useful for faster testing). If a player is exempted from a check, the check will not be run at all (for virtually all cases).
38 |
39 | `NCPHookManager` This allows to register "hooks" that get called in case of violations and allow to do more complex stuff ("after-failure" hooks: the check is run). Hooks are able to prevent further actions processing, you can also register "stats" hooks that come first or force your hook to be registered before other hooks by implementing an extra interface. Cancelling the actions processing will not reset violation levels(!). For some cases you can reset them manually, though that is not officially supported yet (Example: MovingData.getData(player).clearFlyData() ...clearMorePacketsData() ...survivalFlyVL = 0).
40 |
41 | **Moving/flying skills** might work with adding velocity to the player (MovingData) - if not, please provide us with a [debug log](Debugging). Vertical velocity currently supports a few flags (fr.neatmonster.nocheatplus.checks.moving.velocity.VelocityFlags) - this may be extended to control automatic velocity removal better (flags to retain entries, flags for horizontal velocity).
42 |
43 | **Event handlers relating to listeners of NoCheatPlus:** Register listeners with the NoCheatPlusAPI, relating to sorting order.
44 | * NoCheatPlusAPI.addComponent(Bukkit Listener) or NoCheatPlusAPI.getEventRegistry() to add an efficient MiniListener.
45 | * Use @RegisterMethodWithOrder for per-method registration order with Bukkit Listeners.
46 | * Use @RegisterEventsWithOrder for a preset for all event handlers contained in the listener.
47 | * Pass a RegistrationOrder instance directly to the event registry to have a preset.
48 | * Implement IRegisterWithOrder with a MiniListener. (@RegisterWithOrder is also supported for MiniListener instances, for obscure reason.).
49 | * (Note 1: MiniListener instances only have one event handler method.)
50 | * (Note 2: Currently the tags for listeners within NCP are not fully set up - check listeners should have something with NoCheatPlus inside. Priority values have not been considered yet either. This will soon receive an overhaul, so you can distinguish between feature and system listeners, e.g. to have data adjusted before wrapping around actual check listeners.)
51 |
52 | # Other hooking spots
53 | There are more spots that are accessible, but most are "not officially supported", such as `ConfigurationManager`, `DataManager` and `ExecutionHistory`. Some are designs of older times, some are more like refactoring stages (probably stuck in it slightly).
54 |
55 | Some methods of the TickTask (utilities) might be useful.
56 |
57 | Reloading the configuration can also be registered for:
58 | * NCPReloadEvent (commands.CommandHandler). Called after reload done.
59 | * You can register a component implementing INotifyReload (commands) to receive word of reloading the config just before the event is fired. This is also used by some checks and other components of NCP. These are cleared on reloading.
60 |
61 | The plugin class itself does have some methods some of which could be of use, however we prefer you to use NCPAPIProvider.getNoCheatPlusAPI(), since we might separate some API from the plugin class itself, keeping the static API provider as long as possible (since 3.9.2-RC-b520 some static API has been moved to not-static, still implemented in the plugin class, should use NoCheatPlusAPI, though).
62 |
63 | # Examples
64 |
65 | ## Adjusting the set-back location.
66 | Essentially MovingData.setTeleported from within a hook does the job - it will be handled as the location to set "back" to, only do this if IViolationData.willCancel() returns true, otherwise nothing else should be done, except perhaps to ensure not to let players collide with or pass through blocks with this (and don't allow flying, ...).
67 |
68 | Notes from the past with some potentially useful details (note that some points are not up to date anymore): https://gist.github.com/asofold/b05c0a17c605e7c69bb30ee5e79a6e7b
69 |
70 |
71 | # Related
72 | * [Debugging](Debugging)
73 |
--------------------------------------------------------------------------------
/Others/Lag.md:
--------------------------------------------------------------------------------
1 | # Server
2 | Lag and latency effects on server side.
3 |
4 | ## TPS - Ticks per second
5 | `Imagine you have an alarm which rings every minute. Every time the alarm goes off its a "tick". Now during each minute you have to do some work. Sometimes this can be simple stuff like picking up books from your desk and placing them on your bed and sometimes it can be very difficult stuff like cleaning your desk completely. Similarly your server has a concept of ticks, and during each tick it does stuff like spawn mobs, load chunks, perform physics checks etc. So when you have small amounts of work to do, you can finish it in less than a minute and spend the rest of the time relaxing but when you get too much work and can't finish it in a minute you need to delay the alarm clock meaning now a tick isn't once every minute, its taking more than a minute. Similarly your server also relaxes when it finishes in less than its ticking interval and when it can't finish its work in time it has to extend the tick time too. Normally your server ticks 20 times a second, like how you were ticking once a minute. When you can't keep up with your work, you degrade to less than 1 tick per minute, similarly your server degrades to less than 20 ticks per second. Usually this will be met by an increase in cpu usage because the server is constantly doing work (not in all cases though!)`
6 | [@ammar2 at SpigotMC](https://www.spigotmc.org/threads/what-is-tps.4277/#post-43925)
7 |
8 | So in short: If your server can't keep up 20 ticks per second, you might notice server side lag, by the server responding slower than usual, e.g. broken blocks or players moves arrive later at other players ends, short player freezes might result, machines or entities move/work slightly slower, buttons take longer to activate. For TPS above 16 it probably isn't that much noticeable client-side.
9 |
10 | ## Network
11 | Game experience could suffer because of lost/delayed packets if your server:
12 | * Has a bad/defect network card (hardware) that can't process all packets properly.
13 | * Connection quality (provider, WLAN, mobile, routed twice around the world).
14 | * The operating system might be faulty or have driver problems.
15 | * Is hooked on a busy local network (Example: At home you have 5 other clients that download/upload on high-speed).
16 | * Is running other background processes that overload your network traffic.
17 |
18 | # Client
19 | Lag and latency effects on client side.
20 |
21 | ## TPS - Ticks per second
22 | Just like the server, the client also needs to finish a lot of tasks 20 times a second (20 ticks).
23 |
24 | ## FPS - Frames per second
25 | As you may know in order to create a moving picture you need to quickly display a lot of pictures (frames) one after an other. A computer works pretty similar because it also displays 60 (or more) frames per second to make you think that there is actually movement in that picture.
26 |
27 | * A basic Computer monitor can output a maximum of 60 Hz while a professional one can reach 120 Hz.
28 | * Usually you won't notice any performance improvements if your GPU surpasses your monitors maximum FPS, all it does is probably shorten your GPUs life time.
29 | * If your GPU fails to keep up with the game renderer (too many particles, too much chunks loaded at once and much more...) you will feel lag.
30 | * VSync or VerticalSync tries to synchronize your GPU with the monitor by making the GPU only process as much FPS as the monitor can handle.
31 |
32 | * [Monitor & TV Refresh Rates as Fast As Possible]
33 | * [FreeSync and VSync explanation]
34 |
35 | ## Network
36 | Latency can also occur if the client:
37 | * Has a bad/defect network card (hardware) that can't process all packets properly
38 | * Connection quality (provider, WLAN, mobile, routed twice around the world).
39 | * The operating system might be faulty or have driver problems.
40 | * Is hooked on a busy local network (Example: At home you have 5 other clients that download/upload on high-speed)
41 | * Is running other background processes that overload your network traffic. Often the upload bandwidth is much lower than the download bandwidth, thus it's much easier to create noticeable lag with uploading stuff.
42 |
43 | # Hardware bottlenecks
44 | A small list to explain which hardware is responsible for a curtain type of latency:
45 |
46 | - **TPS**
47 | - Disk I/O (MC reads/writes map data, plugins might use local databases).
48 | - CPU (Minecraft uses a lot of single-core CPU power for the primary thread, but initial packet handling and chunk loading may be done asynchronously).
49 | - RAM (MC keeps a lot of data in your random access memory before it garbage collects it. Garbage collection could have an impact, low ram might crash the server or lead to more intense disk-io).
50 |
51 | - **FPS**
52 | - GPU/GPU drivers (Additionally to the TPS list you will also need a good GPU to keep up with the game renderer and display enough frames for a smooth game experience)
53 | - CPU
54 | - RAM (If your client runs out of memory bad things will happen such as: GarbageCollection going crazy, everything gets moved from your RAM to your hard drive, might trigger a OOME-Out Of Memory Error which could crash your computer or make your operating system forcefully close programs, ...)
55 |
56 | - **Network**
57 | - Network card
58 | - CPU (Yes processing packets requires a CPU).
59 | - Router (On good ones you can tweak a lot of settings to manage your network traffic properly, quality of service).
60 | - Internet connection (Try to not host on WiFi if you can avoid it).
61 | - Internet provider (If you do home hosting: You might need to look up business plans of your internet provider for the best results, you do need good uplink and downlink).
62 |
63 | [Monitor & TV Refresh Rates as Fast As Possible]:https://www.youtube.com/watch?v=YCWZ_kWTB9w
64 | [FreeSync and VSync explanation]:https://www.youtube.com/watch?v=5Ey-KObDABI
65 |
--------------------------------------------------------------------------------
/Settings/[Settings]-Compatibility.creole:
--------------------------------------------------------------------------------
1 | This section of the configuration file provides you with additional settings to improve overall compatibility stuff.
2 | |managelisteners||
3 | |bukkitapionly|Setting this to true will force NoCheatPlus to only run with the BukkitAPI instead of also using internals.|
4 |
5 | =Blocks=
6 |
7 | To reference block types, you need to use the proper Bukkit Material names from here: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
8 | \\(At a later stage also minecraft names may get supported.)
9 |
10 | |allowinstabreak|The Fastbreak check will ignore every block you put on this list which means that players can mine them faster then possible.|
11 |
12 | ==breakingtime==
13 | Enables you to override the breaking time of a block for specific side conditions.\\
14 | An entry in this section maps a condition definition to the breaking time in milliseconds.
15 |
16 | Definitions for side conditions can be:
17 | * BLOCK_TYPE:TOOL_TYPE:TOOL_MATERIAL_BASE:EFFICIENCY_LEVEL
18 | ** In-air/water/aqua-affinity/haste are not possible to add at this stage. Those will get automatically evaluated. Later specifying these will be possible.
19 |
20 | \\ Example:
21 | SAND:AXE:DIAMOND:0: 10000\\
22 | (Changes the breaking time for sand with a diamond axe with no efficiency enchantment to 10 seconds, thus fastbreak will trigger.)
23 |
24 | \\BLOCK_TYPE: Bukkit block names. Currently no extras are possible, such as data values/variants.
25 | \\TOOL_TYPE: NONE, SWORD, SHEARS, SPADE, AXE, PICKAXE
26 | \\TOOL_MATERIAL_BASE: NONE, WOOD, STONE, IRON, DIAMOND, GOLD
27 | \\EFFICIENCY_LEVEL: Level of the efficiency enchantment.
28 |
29 | ==Overrideflags==
30 | This section allows you to tell NCP how to interpret blocks, concerning shape, if you can walk on them, walk through them and the like. The section represents a mapping from blocks to "flags". Blocks can be input by id (if it doesn't recognize numbers, use strings, e.g. "49" instead of 49) or by the Bukkit name (TODO: java doc link to bukkit + maybe latest spigot?).
31 |
32 | Typical settings would be:\\
33 | Air: TODO\\
34 | Full blocks like stone: TODO\\
35 | Blocks to both walk on and through (e.g. with complex yet unseen shape): TODO\\
36 |
37 | There is one flag called "default", which you can use for using the already set flags, which NCP might already have initialized, e.g. if you want to just add a flag. (Only use where you know what it means, set checks.blockbreak.debug to true, in order to dump the flags that NCP is using internally to the log-file).
38 | \\Example to both pass through and stand on: default+ign_passable+ground_height
39 | \\(It's recommended to set dimensions too, if possible.)
40 |
41 | |**Flag (dimensions)**|**Meaning**|
42 | |f_full|The block has full bounds (0..1), inaccurate!|
43 | |f_xz100|Block has full xz-bounds.|
44 | |height100|Override bounding box: 1 block height. NOTE: This should later be ignored by passable, rather.|
45 | |height150|Override bounding box: 1.5 blocks high, like fences. NOTE: This might have relevance for passable later.|
46 | |f_height_8sim_dec|The height is assumed to decrease from 1.0 with increasing data value from 0 to 0x7, with 0x7 being the lowest. (repeating till 0x15)). 0x8 means falling/full block. This is meant to model flowing water/lava. However the hit-box for collision checks will be set to 0.5 height or 1.0 height only.|
47 | |f_height_8sim_inc|The height is assumed to increase with data value up to 0x7, repeating up to 0x15. However the hit-box for collision checks will be set to 0.5 height or 1.0 height only, as with the 1.4.x snow levels.|
48 | |f_height_8_inc|The height increases with data value (8 heights). This is for MC 1.5 snow levels.|
49 | |height8_1|0.0625 height, useful for low blocks like water_lily, with multi client protocol support - note that some of these types of flags might automatically get added.|
50 |
51 | |**Flag (ground/passability)**|**Meaning**|
52 | |solid|Minecraft isSolid result. Used for setting ground flag - Subject to change / rename.|
53 | |ground|The player can stand on these, sneaking or not.|
54 | |ign_passable|Compatibility flag: regard this block as passable always.|
55 | |passable_x4|Fence gate style with 0x04 being fully passable.|
56 | |f_ground_height|This flag indicates that even though a passable workaround, everything above passable height is still ground.|
57 | |min_height16_1|0.0625 minimum height for use with ground_height, in order to prevent complete passability of the bock.|
58 | |min_height16_15|1 - 0.0625 minimum height for use with ground_height, in order to prevent complete passability of the bock.|
59 |
60 | |**Flag (liquid)**|**Meaning**|
61 | |liquid|General liquid|
62 | |water|Like water.|
63 | |lava|Like lava.|
64 |
65 | |**Flag (special behavior)**|**Meaning**|
66 | |f_variable|The block can change shape, like fences. This is most likely not 100% accurate...|
67 | |thin_fence|THIN FENCE (glass panes, iron fence)|
68 | |thick_fence|Thick fence (default wooden fence).|
69 | |stairs|Stair blocks. Like a solid half block, but stand on it up to full block height. |
70 | |facing_low3d2_nswe| The facing direction is described by the lower 3 data bits in order of NSWE, starting at and defaulting to 2, which includes invalid states. Main purpose is ladders, no guarantees on defaults for other blocks yet.|
71 | |attached_low2_snew| The direction the block is attached to is described by the lower 2 bits in order of SNEW.|
72 |
73 | |**Flag (moving/other)**|**Meaning**|
74 | |ice|Ice - for sliding on it.|
75 | |climbable|Climbable like ladder and vine (allow to land on without taking damage).|
76 | |bounce_25|Allow slime-like bouncing. Only makes sense for slime currently, unless a client mod allows other blocks to behave exactly alike.|
77 | |falldist_half|lLiquid only: fall distance halfs with each move that goes (fully) through this medium.|
78 | |allow_lowjump|Special flag for moving checks. Prevent the lowjump detection with this block somehow.|
79 | |rails|All rail types a minecart can move on.|
80 | |leaves|Just an indicator.|
81 | |carpet|Just an indicator.|
82 |
83 | |**Flag (meta)**|**Meaning**|
84 | |collide_edges|Meta-flag to indicate that the (max.-) edges should mean a collision, can be passed to collidesBlock.|
85 |
86 | **References**\\
87 | Passable\\
88 | Fastbreak\\
89 | Internals\\
90 | BukkitAPI\\
--------------------------------------------------------------------------------
/Known-Issues.md:
--------------------------------------------------------------------------------
1 | **Table of contents**
2 | * [General Issues](Known-Issues#general-issues)
3 | * [Hitting/Fighting](Known-Issues#hittingfighting)
4 | * [Moving/Passable](Known-Issues#movingpassable)
5 | * [Compatibility Issues](Known-Issues#compatibility-issues)
6 | * [NPCs](Known-Issues#npcs)
7 | * [Skills, machines and other](Known-Issues#skills-machines-and-other)
8 | * [Super jumps and flying skills](Known-Issues#super-jumps-and-flying-skills)
9 | * [Tekkit, FeedTheBeast, Hexxit and all the other mod packs](Known-Issues#tekkit-feedthebeast-hexxit-and-all-the-other-mod-packs)
10 | * [Spout and CompatNoCheatPlus](Known-Issues#spout-and-compatnocheatplus)
11 | * [Passable check](Known-Issues#passable-check)
12 | * [Other](Known-Issues#other)
13 | * [Special (cheat) Client-Mods](Known-Issues#special-cheat-client-mods)
14 | * [Minecraft Chat Apps](Known-Issues#minecraft-chat-apps)
15 |
16 | ## General Issues
17 | Issues that are only related to NCP and occur in vanilla Minecraft.
18 |
19 | ### Hitting/Fighting
20 | Currently there are some known issues in NoCheatPlus which might cause false positives (false cheat detection) on PvP (Player vs Player) and PvE (Player vs Environment).
21 | We recommend to use the "/ncp info " command to find out which checks/parts of NoCheatPlus are causing those false positives and make the affected fight checks less strict (over configuration file) based on that data.
22 | We are currently working on a proper fix for this problem so keep an eye on the development builds of NoCheatPlus.
23 |
24 | Additional informations:
25 | * The higher the latency (server and client) the worse is the hit detection
26 | * Some players fake those informations on your server and try to make you lower your "Fight" security so always try to reproduce it by yourself.
27 | * The checks "fight.reach" and "fight.direction" seem to make the most trouble.
28 | * If you encounter problems with the fight.direction check then set "strict" to false in your configuration file.
29 | * Turning down the "penalty" value for fight.direction and fight.reach check could help also.
30 | * Time penalties in general might be interesting to balance out (search for penalty, also toolchangepenalty).
31 |
32 | ### Moving/Passable
33 | * If a certain block type poses problems, be it a bug or just client mods or server mods or plugins "optimizing" things, you can tweak it by configuration: [Compatibility Section](Dev-Pinboard#compatibility-section)
34 | * Velocity handling might conflict with some plugins that provide skills like "super jump".
35 | * Fly-settings of server and plugins: We recommend to set allow-flight to true rather, and let NCP handling the fly checks, otherwise there can be conflicts leading to new exploits or just trouble.
36 | * server.properties
37 | * Multi-World plugins (e.g. MultiVerse): These might have per-world settings for allow-flight, or other fly-related settings, which might override the servers allow-flight setting.
38 | * Other anti-hack plugins: Two fly checks would usually conflict, due to differing set-back policies, also due to differing false-positives. Disable all but one, we suggest you enable the one in NCP and disable the others.
39 |
40 | ## Compatibility issues
41 | Issues that arise from using other client mods, server mods, plugins.
42 |
43 | ### NPCs
44 | For problems with non-player-characters such as with Citizens, have a look at CompatNoCheatPlus and open a ticket for that, such usually is fixable.
45 | Please note that using names of players that are on your server to get a pretty skin on your NPCs may cause some side effects with NoCheatPlus and other plugins (NC+ might setback the NPC instead of the player etc.).
46 |
47 | ### Skills, Machines and other
48 | Some plugins provide extra skills like fast block breaking, or automatic mining and block placing etc. To keep it compatible with protection plugins they use custom events to tell other plugins that they break blocks. These will be interpreted by NCP and might lead to various violations.
49 | CompatNoCheatPlus provides a platform for handling these, mcMMO, Citizens, MachinaCraft should work out of the box, others might need adapting some configuration entries (ask before doing so!), others might need additions to cncp. Keep to cncp for this and add a ticket there, these are usually easy to fix/provide.
50 | ### Super jumps and flying skills
51 | These provide problems to make compatible, though it is not impossible technically. Currently mostly not compatible.
52 |
53 | ### Tekkit, FeedTheBeast, Hexxit and all the other mod packs
54 | * Many blocks that tekkit and other use are unknown to NoCheatPlus, block breaking speeds should be assumed as instantaneous break (would allow playing , but also fast break cheating).
55 | * The passable check might not know the shape of some blocks, at the risk of allowing noclip hacks, those can be added to the ignorepassable list in the NCP configuration.
56 | * Weapons such as wands from Thaumcraft that use special fighting ability's will trigger some fight checks of NoCheatPlus since NCP doesn't know this kind of fighting style.
57 | * Going trough TwilightForest portals will trigger SurvivalFly because of this mode having strange movement while the player is teleported to the other world.
58 | * NoCheatPlus will most likely block FakePlayers because of the bukkit superperms not supporting any "offline players". To make them compatible with NoCheatPlus you need to set "FakeJoin" to true so FakePlayers send fake login events to the server (might cause other issues).
59 | * Placing blocks without any attachment on the ground such as cables or similar will trigger the "AgainstAir" check of NoCheatPlus. To workaround this issue give your default users group the "nocheatplus.checks.blockplace.against.air" permission.
60 | * Jet packs and other "fly" tools are most likely incompatible with the SurvivalFly check.
61 |
62 | ### Spout and CompatNoCheatPlus
63 | CompatNoCheatPlus and Spout seem to have issues, however I am not sure if they were due to unlucky versions mixed (to be tested/updated). You need to disable the Player-class hook in CompatNoCheatPlus for sure! Otherwise NoCheatPlus will get unusable on your spout server.
64 |
65 | ### Passable check
66 | The SpoutCraft client seems to allow moving into the corners of fence-arrangements, which is not possible in vanilla. Ladders can be added to the ignorepassable list in the config of NCP.
67 |
68 | ## Other
69 | All issues that didn't fit in any category above are listed here.
70 |
71 | ### Special (cheat) Client-Mods
72 | Some client mods do non-vanilla moving stuff that can conflict with the passable check.
73 | ### Minecraft Chat Apps
74 | MCChat is ignoring teleports and setbacks coming from your server so you might get constant violation spam if you join with this application on your server together with NoCheatPlus. This issue can only get fully fixed by its developer itself.
--------------------------------------------------------------------------------
/Settings/Commands.md:
--------------------------------------------------------------------------------
1 | **Table of content**
2 | * [Administrative commands](Commands#administrative-commands)
3 | * [Auxiliary commands](Commands#auxiliary-commands)
4 | * [Stopwatch commands](Commands#stop-watch)
5 |
6 | NoCheatPlus integrates a lightweight command system. It allows you to quickly exempt players from checks or to access and manage check data about a player.
7 |
8 | All commands support tab completion and some even allow shortcuts. The root command is named **nocheatplus**, however the alias **ncp** should also work and is used for reference here.
9 |
10 | NoCheatPlus also supports [Bukkit aliases](http://wiki.bukkit.org/Bukkit.yml#aliases) if you wish to have another alias command aside form **nocheatplus** and **ncp**.
11 |
12 | You can give a player access to a specific command by giving them the sub-node with the commands default name, like `nocheatplus.admin.info`.
13 | For further information about permissions in NoCheatPlus, we recommend looking at the [Permissions](https://github.com/MyPictures/NoCheatPlus/wiki/Permissions#commands).
14 |
15 | **Related**
16 | * [Permissions](Permissions)
17 |
18 | # Administrative commands
19 | Those commands are used to basically manage NoCheatPlus on your server. Arguments in **( )** are needed, while arguments in **[ ]** are optional.
20 |
21 | | Command | Explanation |
22 | | :---------------------- | :---------- |
23 | | /ncp reload | Reloads, generates and regenerates the configuration file of NoCheatPlus. Run this in-case you changed something on your configuration file while your server was running. |
24 | | /ncp notify on/off | Toggle all in-game notifications/alerts generated by NoCheatPlus. |
25 | | /ncp info (player) | Display the violation levels of a given player. |
26 | | /ncp lag | Show info about server sided latency. The average lag shows the percentage of the server running too slow (0% = 20 tps, 10% = 18 tps) for the last 1 second, 3.33 and 270 seconds, roughly. Also lag spikes are displayed, tracked over at most 1 hour with a resolution of 20 minutes buckets (i.e. not exact) for spikes > 150 ms (3x to 20x) and spikes > 1000 ms (20x +). Be aware that this information is needed to make most NoCheatPlus checks adapt to server sided lag. |
27 | | /ncp removeplayer (player) [check_type] | Remove all the data collected by NoCheatPlus so far for a given player. You can use the [check_type] option to make NoCheatPlus only remove data from a specific check (Default will clean all data of all checks!). To list all check names execute a command such as this: /ncp removeplayer (PlayerName) list. "*" is supported here. |
28 | | /ncp exempt (player) [check_type] | Exempt a player from being checked by NoCheatPlus or by a specific check. |
29 | | /ncp unexempt (player) [check_type] | Remove any exemption you given to a specified player. "*" Is supported here. |
30 | | /ncp exemptions (player) | Gives back a list of all check that a specific player has been exempted from. |
31 | | /ncp commands | List all commands, more than shown here. The other commands are mainly for use with actions, such as delaying other commands, kicking with a message, telling players messages in colour, deny login for a players, allow it again and other. |
32 | | /ncp top [num_entries] _(check type/s)_ [sort order] | Show the 'top' players by violation history. Default sort order is '-n -sumvl' . Sort priority can be specified using -n for number of violations, -sumvl for the sum of all added vl, -avgvl for the average added vl, -maxvl for the maximum of all added vl and -time for sorting by the last violation time. |
33 | | /ncp version | Show version information about the server, plugin, compatibility modules and registered hooks. |
34 | | /ncp log counters| Log special statistics. |
35 | | /ncp debug player (player-name-or-uuid) yes/no/default[:checktype1[:checktype2...]] _NCP 3.16.1_| Set/reset debug flags to yes/no/default for check types, including check groups like FIGHT and ALL. |
36 | | ncp debug player (playername) _LEGACY: NCP 3.16.0 and slightly further_ | Full debug including moving. |
37 |
38 | # Auxiliary commands
39 | Those commands are mainly used by NoCheatPlus itself to execute strings or commands over actions on violating players but you can also make use of them if you wish to do so. Most of them have no difference compared to the vanilla commands apart from the delay option. Some might be confined to console use.
40 | Arguments in **( )** are needed, while arguments in **[ ]** are optional.
41 |
42 | | Command | Explanation |
43 | | :---------------------- | :---------- |
44 | | /ncp ban \[delay=(ticks)] (player) [reason] | Ban a player from your server (banned-players.txt). |
45 | | /ncp kick \[delay=(ticks)] (player) [reason] | Kicks a player from your server. |
46 | | /ncp unkick (player) | Allows you to remove a tempkick/tempban from a player. "*" is supported here. |
47 | | /ncp kicklist | Lists all players that have been tempkicked/tempbanned on your server by NoCheatPlus actions. |
48 | | /ncp tell \[delay=(ticks)] (player) (message) | Send a private message to a specified player, using color codes with '&'. |
49 | | /ncp delay \[delay=(ticks)] (command) | Execute a command delayed by the given number of ticks. **Commands are executed with OP privileges (console).** |
50 | | /ncp log stream (stream_id)\[@(level)]\[?color/?nocolor] (message) | Log to the logging stream system of NoCheatPlus. Shortcuts for stream_id are: notify (ingame notification), debug (debug to file), init (only for setup), status (runtime status/errors), console for the plugin logger, file for the default log file. Level for errors is @severe, @warning for warnings, @info is default, @fine for debugging. If no level is set the debug shortcut will use the level @fine. Default levels and numbers (Java) are supported. All registered stream ids (case sensitive) are supported. To force add colors append ?color (c, col) to the level definition, to force remove colors append ?nocolor (nc, noc, nocol). To log to multiple streams, each with individual level and color/nocolor-flag, separate definitions by '+'. Don't include spaces with definitions (e.g. correct: _/ncp log stream notify?c+console@warning?nc &ctest&etest&ctest_). |
51 |
52 | # stopwatch
53 | Especially with measuring distances and/or time, these might be useful. The 'stopwatch' command allows abbreviation with 'sw', only for players. The precision of the distance-related variants is determined by on-tick execution of checking, so it may not be as precise in environments with larger lag/delay spikes (client or server). Typically a distance of 100 blocks straight without height difference is a good measure for comparison (1.11.2 and before about 14 seconds without effects). Speed cheats should be compared to continuous sprint+jump ("bunny-hopping"), unless it's a low-food-level comparison, because the sprinting state isn't always correctly reported on server side, so we assume sprinting whenever technically possible.
54 |
55 | | Command | Explanation |
56 | | :---------------------- | :---------- |
57 | | /ncp stopwatch start | Simply start a stopwatch. The time for an already running stopwatch would be shown in chat. |
58 | | /ncp stopwatch stop | Stop a running stopwatch and show time in chat. |
59 | | /ncp stopwatch distance (distance) | Start a stopwatch, automatically stop when the player has reached the given distance (blocks). This is not 100% precise (on-tick), but it does use the euclidean distance. |
60 | | /ncp stopwatch return (margin) | Simply start a stopwatch, automatically stop when the player returns to the position where the stopwatch had been started, with the given margin (blocks, euclidean, on-tick). |
61 |
--------------------------------------------------------------------------------
/Development/Debugging.md:
--------------------------------------------------------------------------------
1 | # Create Debug Output
2 |
3 | **Most of these options are not really meant to be used on (big) live/production servers, some can cause extreme amounts of log file output and result in performance issues.**
4 |
5 | NoCheatPlus allows you to generate debug logs in various ways. With this you can help us tracking issues or cheats, by generating debug output selectively and providing us a paste link, or link/send a compressed file.
6 |
7 | Mostly console output will be interesting, but also the in-game chat might be useful, check the output-client.log file to not need to use screenshots, unless for showing map/block setups.
8 |
9 | If you try to report a false positive and want to help finding the causes faster this can be very helpful. Rather send a little longer log not to miss out parts, so unless familiar with it you should add a little before and after the violation message of TestNCP for instance. For moving always at least from jumpphase=0 until the violation and "set back to..." a couple of lines below. If possible or not sure it is a singular issue, include a couple of violations.
10 |
11 | **Please use a paste or send as a (compressed) file attachment by mail if the output is a little bit longer.**
12 |
13 | If sending a server log, you might want to ensure to not expose any sensitive data, such as logged session keys, ips or whatever your log may contain.
14 |
15 | ### Debug flags in the configuration
16 | You can manually enable permanent debugging with setting a/the check-group debug flag, like _checks.moving.debug_ to true. Debugging all checks can be done with setting _checks.debug_ to true. Additional output can be generated with enabling logging.extended.status.
17 |
18 | NoCheatPlus allows to set debug flags for almost all check groups. The flag in the logging section can also be set, but it will not lead to more check-related output. Some debugging output is only generated, if the configuration flags are set, e.g. with ProtocolLib.
19 |
20 | **This is not suitable for production servers with many players on, due to the amount of logging done with each move for each player.** For production servers we recommend using on-the-fly debugging rather.
21 |
22 | ### On-the-fly debug output for individual players
23 | Using the command _/ncp debug player ... (Permission: nocheatplus.command.debug) allows you to start debug logging for a player. The output is written to the log file specified in the configuration (not to the console).
24 |
25 | Syntax 3.16.1 / build 1144: /ncp debug player (player-name-or-uuid) yes/no/default[:checktype1[:checktype2...]] - For individual checks as well as groups (ALL, BLOCKBREAK, INVENTORY, FIGHT, ...).
26 |
27 | Syntax 3.16.0 and before and slightly later: /ncp debug player (player-name) - No resetting other than 'ncp remove' or 'ncp reload'.
28 |
29 | The debug logging may reset with the player logging out. In order to turn on-the-fly debugging off, you can either use _/ncp debug player (player-name-or-uuid) default_ (3.16.1 and later) or more coarse... _/ncp remove (player)_ (Permission: nocheatplus.command.remove) or _/ncp reload_ , with the latter removing all data for all players.
30 |
31 | For more confined output you can set the log file to a folder name, such as "logs". Then you can use _/ncp reload_ before and after debugging players, and the output will be confined to one log file. DrawBack is that this call is slightly heavier, due to affecting all players data and also due to reloading the configuration.
32 |
33 | With using _/ncp reload_ repeatedly, e.g. for recording individual sequences to individual files, you'd have to repeat _/ncp debug player (player)_, because on-the-fly debugging will reset with reloading the configuration. The advantage might be more easy to find log sequences, if reproducing the issue is difficult.
34 |
35 | ### Debug level (Legacy)
36 | For the most detailed output use a development build of NCP (or manually edit BuildParameters.properties in the jar and set DEBUG_LEVEL to something like 10000).
37 |
38 | ### Allviolations hook
39 | NCP can log all violations of all players to the console and/or to the ingame notification channel. You can activate the allviolations hook in the configuration, under logging.extended.allviolations. If you want more fine grained control over who sees those notifications and whose output you want to see, use TestNCP from the NCPTools collection (see below).
40 |
41 | # NCPTools
42 |
43 | NCPTools at BukkitDev (https://dev.bukkit.org/bukkit-mods/ncptools/) is a collection of tools we use for testing and debugging with NoCheatPlus.
44 |
45 | These tools are meant for testing and debugging with test servers.
46 |
47 | See the README.txt in the zip file or on the download page for more details.
48 |
49 | ### FightHelper
50 | Reduce all damage to 1 or 0, so the player does not die, keep restoring health. Meant for continuous combat testing, without need for respawning and teleporting all the time. This might affect some plugins or calculations due to the reduced damage - e.g. god mode will behave differently with this on.
51 |
52 | ### MoreCommands
53 | Add more commands under /morecommands (/more), that are useful for setting up a test server. One permission per command (morecommands.command[.subcommandname]). Most commands are not meant for ordinary staff.
54 | Setting up a test server (or admin-only, DESTRUCTIVE!):
55 | * more op : Set op and creative mode at once.
56 | * more ordinary : Remove op and set to survival mode.
57 | * more pyramid : Create pyramids with a bedrock base and other blocks on top (snow layers, stairs, steps, water/lava, any blocks).
58 | * more setradius : Set blocks within xz-radius (and between up to two y-offsets, from the block you stand on).
59 | * more snowlayer : Place random height snowlayer on top of existing blocks within some radius.
60 | * more setspawn : Set world spawn.
61 | Testing:
62 | * more food : Stack up food or add bread.
63 | * more heal : Heal + hunger.
64 | * more seteffect EFFECT@mc-levelxseconds : Set potion effects hard (no args is remove all).
65 | * more spawn : Teleport to the world spawn.
66 | * more velocity : Add velocity.
67 | * more fly : toggle flying.
68 | * more walkspeed
69 | * more flyspeed
70 | * more permissions : list effective permissions of a player, allowing to confine output to sub-nodes of given arguments.
71 | * more day : Set day time and fine weather.
72 |
73 | ### MoveLogger
74 | Log all moves by all player to the console. Meant to track issues with logging or if NCP is not there, to be able to compare.
75 |
76 | ### SimpleConfigEditor
77 | Handle with care: Simplistic ingame configuration editing, no safety whatsoever, not for ordinary staff - avoid typos :), especially with tab completion (e.g. save config to WorldGuard.jar).
78 | File: sce.ja
79 | Command: /simpleconfigeditor or /sce (simpleconfigeditor.command)
80 | Sub commands:
81 | -
82 |
83 | ### TestNCP
84 | This plugin is found at the project site of [NCPTools].
85 | TestNCP allows you receiving console and in-game output for every violation, even if logging would not normally show the message due to low VL for instance.
86 |
87 | The plugins configuration allows setting testers, wither '*' for all players (spam), or the player names for distinct players.
88 |
89 | Input about violations can be confined to individual players using _/testncp input (player)_
90 |
91 | ### EventMirror (Legacy, not contained in the collection at present)
92 | This plugin is found at the project site of [NCPTools].
93 | EventMirror sends in-game info about players actions, to allow checking if certain events happened at all. It does not cover all existing events, though.
94 |
95 | Any Player can use _/mirror_ to receive events in-game. The messages are restricted to the player that is involved.
96 |
97 | Use _nocheatplus.admin.debug_ permission to get more debug informations.
98 |
99 |
--------------------------------------------------------------------------------
/FAQ.md:
--------------------------------------------------------------------------------
1 | **Table of Contents**
2 | * [Why is aimbot/killaura not detected by NoCheatPlus?](FAQ#why-is-aimbot/killaura-not-detected-by-nocheatplus)
3 | * [Why does NoCheatPlus not detect NoKnockback?](FAQ#why-does-nocheatplus-not-detect-nokncokback)
4 | * [Why use NoCheatPlus instead of plugin X?](FAQ#why-use-nocheatplus-instead-of-plugin-x)
5 | * [NoCheatPlus does not block any hacks on my server, I can login with any hack client and grief as much as I want without getting blocked?](FAQ#nocheatplus-does-not-block-any-hacks-on-my-server-i-can-login-with-any-hack-client-and-grief-as-much-as-i-want-without-getting-blocked)
6 | * [I gave my friend permissions for a mod but he stills get blocked by NoCheatPlus?](FAQ#i-gave-my-friend-permissions-for-a-mod-but-he-stills-get-blocked-by-nocheatplus)
7 | * [Will NoCheatPlus support plugins like mcMMO and Citizens out of the box?](FAQ#will-nocheatplus-support-plugins-like-mcmmo-and-citizens-out-of-the-box)
8 | * [Why isn't cncp (CompatNoCheatPlus) already integrated in NoCheatPlus?](FAQ#why-isnt-cncp-compatnocheatplus-already-integrated-in-nocheatplus)
9 | * [Can i use NoCheatPlus with another anti-hack plugin?](FAQ#why-do-you-have-commands-like-ncp-ban-ncp-kick-and-other)
10 | * [Why do you have commands like /ncp ban, /ncp kick and other?](FAQ#why-use-nocheatplus-instead-of-plugin-x)
11 | * [Is banning based on check alerts encouraged?](FAQ#is-banning-based-on-check-alerts-encouraged)
12 | * [Where is the "donate" button?](FAQ#where-is-the-donate-button)
13 |
14 | ### Why is aimbot/killaura not detected by NoCheatPlus?
15 | NoCheatPlus covers a large potion of pvp (player versus player) and pve (player vs enviorment) cheats (see [Features](Features#fight)) but there are invisible problems now.
16 | **Client sided:** Since NoCheatPlus can only use the ressources which are controled and available on the server we are in that case limited to what we can detect. Aimbot for example is besically a hack that just looks at another player/entity and hits it, so there is no way telling if that action was done by a real player with his mouse or by an aimbot. Most up to date aimbots are actually really smart and do random "errors" or even a view motion (do not turn around too quickly) to simulate a real computer mouse.
17 | **Over advertising:** Some hack clients have a GUIs which over advertise the clients hacks by doing big, flashy, red, large buttons and a description such as "*This hack bypasses NoCheatPlus and lets you win every game!*". However what such hack clients mostly do is just look at the player and hit him with a reasonable hit speed that just stays under the radar of NC+ (If we would increase that limit there would be more false positives).
18 | **Weak points of NC+:** To detect the attacking frequency properly, we need ProtocolLib for all CraftBukkit/Spigot versions, roughly since Minecraft 1.7 (possibly on 1.7.2 fight.speed still works). Detections need to be made more striking still.
19 |
20 | ### Why does NoCheatPlus not detect NoKnockback?
21 | Key issues are that the client side decides on responding to velocity, the latency between client and server makes workarounds complicated for the general case, given that the players path can be blocked. We don't deem it impossible to detect simple to check or extreme cases.
22 |
23 | ### Why use NoCheatPlus instead of plugin X?
24 | It is up to you! NoCheatPlus puts emphasis on configurability allowing you to choose when to kick, ban, log, do anything at all, also allowing to adjust a lot of parameters to tweak checks for your needs. Other plugins may put emphasis on simplicity of configuration. All plugins strive to work fine "out of the box" without need to adapt much. Of course every plugin might have strengths and weaknesses on different fields, also consider that NoCheatPlus is both free and open source - we suggest you match your needs against the [features](Features) of the plugins, and ask if in doubt.
25 |
26 | ### NoCheatPlus does not block any hacks on my server, I can login with any hack client and grief as much as I want without getting blocked?
27 | You probably have OP or permissions (administrator or owner rank) on your server which let you bypass all the NoCheatPlus checks. So if you want to test then deop yourself and set your rank to default. Also make sure your Minecraft version matches the version NoCheatPlus has been compiled for, it can be seen on the download pages of BukkitDev or simply using /version NoCheatPlus or /nocheatplus version
28 |
29 | ### I gave my friend permissions for a mod but he stills get blocked by NoCheatPlus?
30 | After giving permissions to a player, he/she has to relog to activate their mods they got permissions for. Be warned: `nocheatplus.mods.zombe.fly` for example only gives the permission to enable zombes fly mod, you will also need the `nocheatplus.checks.moving.survivalfly` permission to make it work right.
31 |
32 | ### Will NoCheatPlus support plugins like mcMMO and Citizens out of the box?
33 | NoCheatPlus does not have any special plugin dependencies built in, because they delay the update process of our plugin. Instead we provide you with a compatibility bridge called [CompatNoCheatPlus].
34 | CompatNoCheatPlus simply connects NoCheatPlus (reason why it needs to be installed alongside CNCP also) with other plugins such as [mcMMO], [Citizens] and others using the powerful [NoCheatPlus API](API) to make them compatible together.
35 | If you would like to suggest or implement another plugin compatibility in CompatNoCheatPlus then contact @asofold for additional support.
36 |
37 | ### Why isn't cncp (CompatNoCheatPlus) already integrated in NoCheatPlus?
38 | Because it would slow down the development of NoCheatPlus, we would always have to keep up with the other plugins if those get changed, also changes to NoCheatPlus might break compatibility with other plugins, so we would have to fix those too or remove the broken hooks. Also the testing for those components takes a lot of time and can't really be done by us. We might at some point build in a couple of generic things that will help with _some_ compatibility issues without endangering us of getting stuck with compatibility issues.
39 |
40 | ### Can i use NoCheatPlus with another anti-hack plugin?
41 | Two plugins usually are not better than one. Just activate the few checks of the other plugin that you assume to be useful, disable the rest. Don't have both plugins check for the same things. The typical problems are that checks or the the whole plugins... a) become less effective, because one plugin won't even register actions that a player did, due to the other plugin having cancelled the action already, which can happen to both plugins, due to differing limits... b) that the same kind of checks conflict in taking back players actions, leading to unpleasant emergent effects, such as allowing flying with multiple fly checks being activated (also thinkable with built-in the vanilla fly check, thus let a plugin check for flying, setting allow-flight to true).
42 |
43 | ### Why are commands like 'ncp ban ...', or 'ncp kick ...' used in the configuration instead of the default commands?
44 | Those are auxiliary commands used for actions, at some point in history the default commands had been lacking some functionality or we wanted to both kick and ban at once.
45 |
46 | ### Is banning based on check alerts encouraged?
47 | We don't encourage banning in general, because checks can have false positives and nowadays cheat clients adapt pretty well to the boundaries set by NoCheatPlus, so the "good ones" won't even create many violations. It does depend on the individual check, how it is affected by latency or lag or randomness, though. With the right choices, temp-banning could make sense for combinations of checks+alert-levels, if they are not too much influenced by random events or lag or latency.
48 |
49 | ### Where is the "donate" button?
50 | It has been removed for the time being. We might re-add it once we are in need of donations.
51 |
52 | **Related**
53 | * [Known Issues](Known-Issues).
54 |
55 | [CompatNoCheatPlus]:https://dev.bukkit.org/bukkit-plugins/compatnocheatplus-cncp/
56 | [mcMMO]:https://dev.bukkit.org/bukkit-plugins/mcmmo/
57 | [Citizens]:https://dev.bukkit.org/bukkit-plugins/citizens/
58 |
--------------------------------------------------------------------------------
/Settings/Permissions.md:
--------------------------------------------------------------------------------
1 | **Table of context**
2 | * [Shortcuts](Permissions#shortcuts)
3 | * [Checks](Permissions#checks)
4 | * [Specific](Permissions#specific)
5 | * [Commands](Permissions#commands)
6 | * [Auxiliary commands](Permissions#auxiliary-commands)
7 | * [Client modifications](Permissions#client-modifications)
8 | * [Miscellaneous and parent permissions](Permissions#miscellaneous-and-parent-permissions)
9 | * [Configure permission caching behavior](Permissions#Configure-permission-caching-behavior)
10 |
11 | # Shortcuts
12 | `nocheatplus.shortcut.info` Gives permissions to
13 | `nocheatplus.shortcut.monitor` Gives permissions for
14 | `nocheatplus.shortcut.safeadmin` Gives permissions to
15 | `nocheatplus.shortcut.bypass` Gives permissions to bypass all checks.
16 |
17 | # Checks
18 | `nocheatplus.checks` Exempts from all checks
19 | `nocheatplus.checks.` Exempts from all checks of a given check category
20 | `nocheatplus.checks..` Exempts group of this check. Example: nocheatplus.checks.moving.creativefly will exempt from creativefly.
21 |
22 | ## Specific
23 | `nocheatplus.bypass.denylogin` Exempts from login denial
24 | `nocheatplus.checks.blockplace.boatsanywhere` Allows to place boats on the ground (not just in water).
25 | `nocheatplus.checks.blockbreak.break.liquid` Allows to break water/lava
26 |
27 | # Commands
28 | `nocheatplus.command.commands` Can view all NC+ commands with _/ncp commands_
29 | `nocheatplus.command.exempt` Can exempt players from checks with _/ncp exempt_
30 | `nocheatplus.command.exemptions` Can list all check exemptions of a player with _/ncp exemptions_
31 | `nocheatplus.command.info` Can view check violations of a player with _/ncp info_
32 | `nocheatplus.command.inspect` Can retrieve player status data with _/ncp inspect_
33 | `nocheatplus.command.lag` Can view server lag spikes with _/ncp lag_
34 | `nocheatplus.command.log` Can access internal debug data with _/ncp log_
35 | `nocheatplus.command.notify` Can toggle on/off in-game cheat notifications (includes permission `nocheatplus.notify`) for _/ncp notify_ command)
36 | `nocheatplus.command.reload` Can reload NC+ to re-read configurations and permissions with _/ncp reload_
37 | `nocheatplus.command.removeplayer` Can remove a players violation history with _/ncp removeplayer_
38 | `nocheatplus.command.unexempt` Can unexempt a player from checks with _/ncp unexempt_
39 | `nocheatplus.command.version` Can view the version information with _/ncp version_
40 |
41 | ## Auxiliary commands
42 | `nocheatplus.command.allowlogin` Can remove temporary kicked players with _/ncp allowlogin_
43 | `nocheatplus.command.ban` Can ban players with _/ncp ban_
44 | `nocheatplus.command.delay` Can delay command execution with _/ncp delay_
45 | `nocheatplus.command.denylogin` Can temporary kick players with _/ncp denylogin_
46 | `nocheatplus.command.kick` Can kick players with _/ncp kick_
47 | `nocheatplus.command.kicklist` Can view all players that have been temp-kicked with _/ncp kicklist_
48 | `nocheatplus.command.tell` Can send private messages to players using _/ncp tell_
49 |
50 | # Client modifications
51 | With those permissions you can decide which mods should not be disabled on login.
52 |
53 | ## [CJB Mods]
54 | `nocheatplus.mods.cjb` Allows all CJB mod features.
55 | `nocheatplus.mods.cjb.fly` Allows to use the fly mod.
56 | `nocheatplus.mods.cjb.radar` Allows to use the radar/minimap.
57 | `nocheatplus.mods.cjb.xray` Allows to xray.
58 |
59 | ## [Rei's Minimap]
60 | `nocheatplus.mods.rei.cave` Enables cave rendering.
61 | `nocheatplus.mods.rei.radar` Enables all radar features.
62 | `nocheatplus.mods.rei.radar.animal` Enables the animal radar.
63 | `nocheatplus.mods.rei.radar.player` Enables the player radar.
64 | `nocheatplus.mods.rei.radar.mob` Enables the mob radar.
65 | `nocheatplus.mods.rei.radar.other` Enables radar for "other" entities.
66 | `nocheatplus.mods.rei.radar.slime` Enables the radar for slimes.
67 | `nocheatplus.mods.rei.radar.squid` Enables the squid radar.
68 |
69 | ## [Smart Moving]
70 | `nocheatplus.mods.smartmoving` Enables all smart movement featuers.
71 | `nocheatplus.mods.smartmoving.climbing` Enables climbing.
72 | `nocheatplus.mods.smartmoving.crawling` Enables crawling.
73 | `nocheatplus.mods.smartmoving.flying` Enables flying.
74 | `nocheatplus.mods.smartmoving.jumping` Enables jumping.
75 | `nocheatplus.mods.smartmoving.sliding` Enables sliding.
76 | `nocheatplus.mods.smartmoving.swimming` Enables special swimming.
77 |
78 | ## [Zombe's modpack]
79 | `nocheatplus.mods.zombe` Enables all featuers of the zombe mod.
80 | `nocheatplus.mods.zombe.cheat` Enables the cheating parts.
81 | `nocheatplus.mods.zombe.fly` Enables flying.
82 | `nocheatplus.mods.zombe.noclip` Enables nocliping.
83 |
84 | ## [JourneyMap]
85 | `nocheatplus.mods.journey` Enables all Journey map featuers.
86 | `nocheatplus.mods.journey.radar` Enables the radar.
87 | `nocheatplus.mods.journey.cave` Enables the cave redering.
88 |
89 | (I think one is missing here hmm...)
90 |
91 | # Miscellaneous and parent permissions
92 |
93 | `nocheatplus.admin` Gives access to all [NoCheatPlus commands](https://github.com/MyPictures/NoCheatPlus/wiki/Commands) including Auxiliary ones
94 | `nocheatplus.notify` Will receive hack notifications over in-game chat
95 |
96 | Commands for which the permission got set by the protection features (hide plugins), might have altered default permissions or NoCheatPlus may have set a filter permission 'nocheatplus.filter.command.COMMAND_NAME', for the case the command was allowed to be run by everyone.
97 |
98 | **Notes**
99 | * By default NoCheatPlus assigns all permissions and gives full rights to players that have been `/op-ed` on your server. If you don't want to give OPs full access to all NoCheatPlus features then take a look in the configuration of your permissions plugin (Example with PermissionsEx: allowOps: false).
100 |
101 | **Related**
102 | * [Client Modifications](Client-Modifications)
103 | * [Checks](Checks)
104 | * [Commands](Commands)
105 | * [Debugging](Debugging)
106 |
107 | [CJB Mods]:http://cjbmods.com/
108 | [Rei's Minimap]:http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1275219-jul-08-reis-minimap-v3-4_01
109 | [Smart Moving]:http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1274224-smart-moving
110 | [Zombe's modpack]:http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/mod-packs/1272345-zombes-modpack-26-mods-v8-2-2-upd-11-jul
111 | [JourneyMap]:http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1278348-journeymap-5-0-1-realtime-mapping-in-game-or-in-a
112 |
113 | # Configure permission caching behavior
114 | Since NoCheatPlus 3.16.1-SNAPSHOT (since build 1040) / 3.17.0-RC, permission caching has been introduced. This allows for configuration of how to check for permissions, in case permission checks turn out to consume too much performance, or in case you want to override the behavior for other reasons.
115 |
116 | You can set a default policy and define further rules for mapping permissions to policies for individual permissions, based on wildcards, or based on regular expressions.
117 |
118 | Policy definition:
119 | * Fetching policy[, flag1 [,flag2]]
120 | * Separate any parts by ' ' or ',' or ':'.
121 | * Flags are preceded by the state '+' for true and '-' for false. Default flag states can be omitted, such as `+world` or `+offline`.
122 | * Flags apply for invalidation, regardless of the fetching policy.
123 |
124 | | Fetching policies | Meaning/usage |
125 | | ----------------- | ------------- |
126 | | ALWAYS | Always check. |
127 | | ONCE | Once until invalidation. |
128 | | INTERVAL:_(seconds)_ | Only check every _(seconds)_ seconds. |
129 | | TRUE | Always assume permission to be set to true. |
130 | | FALSE | Always assume permission to be set to false. |
131 |
132 | | Policy flags| Meaning/usage |
133 | | ----------- | ------------- |
134 | | +offline | Invalidate permissions once the player is offline (default). Strictly this also invalidates with logging on. |
135 | | -offline | No invalidation with leaving the server, unless +world is set (!). |
136 | | +world | Invalidate with world changes and leaving the server (default).|
137 | | -world | No world based invalidation. Behavior with leaving the server depends on the `offline` flag now. |
138 |
139 | Rule definition:
140 | * Matching rule separated by ' :: ' from a policy definition.
141 |
142 | | Matching rule | Meaning/usage |
143 | | ------------- | ------------- |
144 | | _(directly the permission, excluding the variants given below.)_ | Match only that permission |
145 | | startswith:_(...)_ _or_ _(...)_* | All permissions that start with the given part. |
146 | | endswith:_(...)_ _or_ *_(...)_ | All permissions that end with the given part. |
147 | | contains:_(...)_ _or_ \*_(...)_\* | All permissions that contain the given part. |
148 | | regex:_(regular expression pattern)_ | All permissions matching the regular expression pattern (standard java String.matches). |
149 | (Constructions with * _(...)_ * _(...)_ * don't work, use regular expressions instead.)
150 |
151 | ## Default policy
152 | * Configuration path: permissions.policy.default
153 | * Value: string
154 | * Content: policy definition
155 | * Examples:
156 | * `INTERVAL:10, -offline, -world` for checking every 10 seconds, ignoring world changing and leaving the server.
157 | * `ONCE` for checking once only, still invalidate with changing the world and with logging on/off.
158 |
159 | ## Rules
160 | * Configuration path: permissions.policy.rules
161 | * Value: String list.
162 | * Content: matching rule separated by ' :: ' from a policy definition.
163 | * The first matching rule is applies, testing in the order in which they're defined.
164 | * Examples:
165 | * See default configuration...
166 | * `nocheatplus.checks.survivalfly.* :: FALSE, -offline, -world` Never check the sub permissions of survivalfly, assume set to false always.
167 | * `startswith:nocheatplus.checks.survivalfly. :: FALSE, -offline, -world` Same as above.
168 | * `nocheatplus.checks.survivalfly* :: INTERVAL:10` Check the survivalfly permission and sub permission only every 10 seconds (invalidate with logging on/off and with world changing).
169 |
--------------------------------------------------------------------------------
/Development/bip/bip-3.15.0-and-later.md:
--------------------------------------------------------------------------------
1 | ## Build Infos Page - NoCheatPlus 3.15.0 and later.
2 |
3 | [Back to the Build-Infos overview.](https://github.com/NoCheatPlus/Docs/wiki/Build-Infos)
4 |
5 | ----
6 |
7 | ### 3.16.0-RC-sMD5NET-b1134
8 | * Release type: **RC Release**
9 | * Supported versions of Minecraft (CraftBukkit/Spigot)
10 | * Focus: 1.12.2
11 | * Supported: 1.4.5-R1.0 - 1.12.2
12 | * Download at Jenkins: https://ci.md-5.net/job/NoCheatPlus/1134/
13 | * Hashes
14 | * MD5: b034f5d318eebc057bd331c1fe06f6c9
15 | * SHA512: 2ae947d7ef3d6c4ba2aecd7aae68c70ea64514df1b78bbaeaeef919c14d1d09fa941e1b0c253e90633a43044dd7e439a23243cba6ec601201dbe875cc8348983
16 | * File size: 1489360
17 |
18 | ### 3.16.0-SNAPSHOT-sMD5NET-b1133(cumulative)
19 | * Release type: development
20 | * News
21 | * New block flags: F_MIN_HEIGHT16_1 and F_MIN_HEIGHT16_15 - confine passability where the GROUND_HEIGHT flag is set, setting a minimum height explicitly.
22 | * Native access module for 1.12.2.
23 | * Fixes
24 | * Attempt to get the Minecraft version from the nms Server, if other attempts fail.
25 | * Internals
26 | * [BREAKING] Transform internals towards using Material rather than block ids (ongoing).
27 | * Dedicated native compat module for 1.11.x (R1), update NCPCompatCBDev to 1.12.x (R1).
28 | * Alter project/Maven setup.
29 | * Simplify maven profile selection (remove parameters, remove ncp_base): profiles are used to activate extras.
30 | * Move "non free" compatibility modules to NCPCompatNonFree.
31 | * Include a pre-built jar with the "non free" modules inside: `-P nonfree_include`
32 | * Build "non free" modules yourself: `-P nonfree_build` must be in use, further activate the actual modules to build via the already introduced profiles, such as `-P cbdev` .
33 |
34 | ### 3.15.2-SNAPSHOT-sMD5NET-b1113(cumulative)
35 | * Release type: development
36 | * New
37 | * Preliminary 1.12 support: version detection, blocks, allow ProtocolLib.
38 | * An action to execute commands with replacing color codes: cmdc
39 | * 'ncp log stream ...' to access the NCP logging system via a command (supports log levels, replace/remove colors). Console only.
40 | * Configuration
41 | * For inventory.instantbow you can control how it uses the improbable check (feed/weight/turn off with 0.0 weight).
42 | * Notification changes for default values: print a maximum of 5 paths to chat by default, configurable.
43 | * Allow debug logging command actions.
44 | * Block direction checks are now identical (concerns actions for interact/place/break).
45 | * Options to turn off or reduce ray-tracing for the passable check have been removed.
46 | * Fixes
47 | * TODO: Check effect: Cancel interacting with blocks for players who are not online.
48 | * Fix block-interact/break/place-direction: account for 'packet inversion'.
49 | * Fixes related to elytra (player height, lift-off vs. glide, gliding through other than air, creative mode, elytra before levitation, use the correct eye height for block interact/break/place).
50 | * VehicleEnvelope: falling in-air with boat.
51 | * Passable: reduce false positives by re-checking with alternate order of axes.
52 | * Hot fix: allow fall damage in lava.
53 | * Fix fall damage bypass for MC 1.11.2.
54 | * Let lost-ground deal with the '(noob-) tower' (instead of the odd/optimistic set-back-y adjustment).
55 | * Add a workaround for blocking-after-respawn with shield in hand.
56 | * Fix boatsanywhere not blocking other than oak boats placed on ground.
57 | * MorePackets (player): Re-add configurable set back age.
58 | * The structure void block is instantly breakable and otherwise like air.
59 | * FastBreak grace can be set to something lower than 2000 ms (regardless of making sense or not).
60 | * Adjust horizontal speed and vertical ascend default setting for the spectator model.
61 | * Fix for a friction envelope check (uncertain impact, might render a workaround functional, or allow flying :p... perhaps not).
62 | * Fix the build number displayed in a hint for setting configversion.created to.
63 | * Fix AttackFrequency on MC 1.7.10 and 1.7.2 (interpret packets).
64 | * Potentially reduce probability of morepackets set back loops happening.
65 | * Attempt to improve issues with outdated moves being processed (Only when 'confirm teleport' packets are available.)
66 | * Patch WATER_LILY if either of ViaVersion or ProtocolSupport is present.
67 | * Internals
68 | * Build against ProtocolLib-API 4.2.1.
69 | * Add protocol support plugins and NCP extension plugins to the related plugins section.
70 | * Work towards generic support for flexible order for internal registries.
71 | * Work towards BlockInteractData being the data source for (block-) interaction - might need ordered listeners.
72 | * Change split move indication (boolean -> int).
73 | * Moving checks: other plugins can override a set-back much easier now see [API page in the wiki.](https://github.com/NoCheatPlus/Docs/wiki/API#adjusting-the-set-back-location).
74 | * Adjust MovingFlying to log packet mismatch more often and keep retrying interpretation.
75 | * Skip redundant checks that already have been passed within BlockInteract.
76 |
77 | ### 3.15.1-RC-sMD5NET-b1084
78 | * Release type: **RC Release**
79 | * Supported versions of Minecraft (CraftBukkit/Spigot)
80 | * Focus: 1.11.2
81 | * Supported: 1.4.5-R1.0 - 1.11.2
82 | * Download at Jenkins: https://ci.md-5.net/job/NoCheatPlus/1084/
83 | * Hashes
84 | * MD5: b795f989bd8d4eb0e4e4e3bffeca5c01
85 | * SHA512: 94d3d548d4eaeac6aa3ee2deda958de931d62fcb7510450145c4c6eedc9aacc67df905dd822aa634595b72a61215a548a7cb6b6d25dcf3d7c02c44b629564dc5
86 | * File size: 1358310
87 |
88 | ### 3.15.0-SNAPSHOT-sMD5NET-b1083(cumulative)
89 | * Release type: development
90 | * Topic: Internal data storage overhaul (ongoing) of uncertain impact. Fixes.
91 | * New
92 | * Data removal can be done for sub checks (So far: FIGHT, COMBINED, MOVING).
93 | * COMBINED_YAWRATE allows exemption and precise data removal.
94 | * Fixes
95 | * Fix creativefly and survivalfly actions.
96 | * Fix configuration notifications.
97 | * Distinguish set-back options by Minecraft version by default.
98 | * Fix handling of PlayerMoveEvent cancelled by other plugins.
99 | * BlockInteract: null blocks.
100 | * Internals
101 | * Work towards a more unified player specific data storage.
102 | * PlayerData holds access for player specific on-tick tasks.
103 | * (Allow overriding the set-back method via hidden settings.)
104 |
105 | ### 3.15.0-SNAPSHOT-sMD5NET-b1075(cumulative)
106 | * Release type: _deficient_
107 | * Topic: New set-back method, recommended for 1.11.2 and later (post-2017-03-24).
108 | * BUGS:
109 | * Actions for survivalfly and creativefly: spaces missing with 'cancelvl' which should be 'cancel vl'.
110 | * Flying exploits: For MC before 1.9 set _checks.moving.setback.method_ to "set_to", to force legacy behavior - only b1075 and before. For builds from 1078 on, the configuration value can be removed.
111 | * PlayerMoveEvent cancelled by other plugins: Fixed in build 1079.
112 | * Fixes
113 | * Ignore arrow types for vehicle checks (can be overridden with hidden settings).
114 | * Set back handling (moving checks): hybrid approach (schedule + attempt immediate), to avoid TeleportCause.PLUGIN for setting back players. Avoid unnecessary teleporting.
115 | * Attempt to fix (selected) issues concerning vehicles with multiple passengers.
116 | * Fix or work around an exquisite selection of random issues.
117 | * Internals
118 | * Skip sweep attack detection, when the DamageCause is present.
119 | * Use Bukkit methods once available (Entity.getHeight|getWidth).
120 |
121 | ### 3.15.0-SNAPSHOT-sMD5NET-b1066(cumulative)
122 | * Release type: development, sitting duck.
123 | * INFO: Use to avoid bleeding edge for pre-1.11.2 (pre-2017-03-24).
124 | * New
125 | * Block change tracking.
126 | * Opportunistic passable checking, accounting for past block changes (pistons, redstone driven blocks: door-like, not for interaction nor directly next to button/lever).
127 | * Standing/moving on blocks that have just been changed.
128 | * Slime blocks + pistons (ongoing).
129 | * Horizontal push by pistons.
130 | * Elytra boost support.
131 | * More effective horizontal speed limiting (hacc).
132 | * New block flag to make water_lily compatible with 1.8.8 clients (water_lily: ground+ign_passable+ground_height+height8_1). This is not set by default.
133 | * Support plugins injecting and removing fake block changes (global only).
134 | * Configuration
135 | * Per-configuration entry warnings, in case a new default value is set.
136 | * Fixes
137 | * Prevent letting Minecraft deal fall damage for micro moves (self damage, speeding).
138 | * Elytra in creative mode, when not flying.
139 | * 1.11 blocks, native access module.
140 | * Detect horses correctly on 1.11.
141 | * Allow ProtocolLib 4.2.0 for MC 1.11.
142 | * Go easier on long messages (chat.text / 1.11).
143 | * Extend the CB-Reflect module to access entity height/width/box, fix block shape access on 1.11.
144 | * Internal registry fixes.
145 | * FastConsume: also disable instanteat after reloading the configuration.
146 | * Fix Double.MAX_VALUE violations with fight.direction.
147 | * Passable: 2-high ceiling on 1.10.2.
148 | * Passable: Ignore sneaking for bounding box height.
149 | * SurvivalFly: allow vertical friction on ladder without velocity being present.
150 | * Adjusted configuration of supported ProtocolLib versions.
151 | * Attempt to work around a bug where the player position is not updated on teleporting to the end (on some server/s versions).
152 | * Fixes for the on-ground logic (variable/fences, potential abuse).
153 | * Vehicle enter: fix nested vehicle check.
154 | * Improve compatibility (net: UnsupportedOperationException).
155 | * Don't use short cuts for dealing with NaN and infinity.
156 | * Register .silent check permissions. Add nocheatplus.checks.inventory.open to plugin.yml.
157 | * NullPointerException with BlockProperties.isSameShape.
158 | * Internals
159 | * Minor optimization (NET: if none are enabled).
160 | * Work towards block change compatibility further.
161 | * Use stored world names for packet frequency if world is null.
162 |
163 | ### 3.15.0-SNAPSHOT-sMD5NET-b1022(mostly stable, cumulative)
164 | * Release type: **mostly stable**
165 | * Supported versions of Minecraft (CraftBukkit/Spigot)
166 | * Focus: 1.10.2
167 | * Supported: 1.4.5-R1.0 - 1.10.2
168 | * Download at Jenkins: https://ci.md-5.net/job/NoCheatPlus/1022/
169 | * Hashes
170 | * MD5: 8da1ffcf13158496d6eca0c9d04cc51e
171 | * SHA512: 59e794efb529399cf8433c8cacf58bf25a7fac05421e4ff9fad72f6a4dee92a3f75e6603b5ff2b899ee5bc131580491d021da3fc95fdc81213beddef80163870
172 | * File size: 1271668
173 | * New
174 | * MC 1.10 support.
175 | * Basic vehicle fly checks for more than boats.
176 | * Ability and configuration for loading chunks for moving, teleport and world change.
177 | * Hot fix for 1.9/1.10 falling block duplication with end portals.
178 | * The moving.passable check now accounts for the full bounds of a player.
179 | * Overall packet frequency check for pre-1.9 (ProtocolLib).
180 | * Configuration
181 | * Remove compatibility.blocks.ignorepassable (use overrideflags instead).
182 | * Add default entry for piston_moving_piece (overrideflags).
183 | * Kick messages for illegal player and vehicle moves are configurable.
184 | * Fixes
185 | * Passable: Fix moving on soil (1.10.x).
186 | * SurvivalFly: Fix climbing up trap door above ladder.
187 | * Fix block flags for for fence-like blocks.
188 | * Fix low food level sprinting with players who are allowed to toggle flight.
189 | * Vehicles: falling with minecarts.
190 | * Confine climbing speed more.
191 | * Fix off-hand issue with blockplace.
192 | * Reactivate net.sounddistance for 1.9 and later.
193 | * Update the CB-Reflect module for past 1.9.
194 | * Attempt to fix issues with fake players with fight checks.
195 | * (Attempt to improve ladder/vine + velocity.)
196 | * Allow higher ProtocolLib versions on MC 1.10.
197 | * Other changes
198 | * Remove compatibility module for Glowstone (legacy).
199 | * Internals
200 | * [BREAKING] Change build profiles: ncp_base must be active always.
201 | * [BREAKING] Moving classes/interfaces around.
202 | * [BREAKING] MCAccess: split off more fine grained providers.
203 | * Extend debug logging for blockinteract (rate-limited).
204 | * Add build profile for 1.7_r4 (MC 1.7.10).
205 |
206 |
--------------------------------------------------------------------------------
/Development/Roadmap.md:
--------------------------------------------------------------------------------
1 | # Road map
2 |
3 | This page provides a short and likely not entirely accurate selection of topics that will be in focus sooner or later. All-time topics are not added here, unless they are a major topic of a planned release or milestone, namely reducing false positives and (minor) fixes in general. From "Planned" on it gets shifty.
4 |
5 | For a more detailed explanation or discussion of future design issues see the Design (TODO: link) page.
6 |
7 | # Current focus
8 | * 3.16.1-SNAPSHOT
9 | * An alpha/beta release. (Main purpose: get feedback on how internal changes work out.)
10 | * Finish current iteration.
11 | * Cleanup / fixes.
12 | * Should have.
13 | * hacc needs more special cases or invalidates special cases too quickly.
14 | * Fly-no-fly, air-water/ice, x-y ...
15 | * Simple alteration of data expiration stages.
16 | * Remove all non-essential cached data and configuration (keep player data). Configurable timing.
17 | * Fully remove data. Configurable timing.
18 | * (Configurable: Clear violation history - later only means to reset counters, in case PlayerData is still present. I.e. rename configuration option.)
19 | * (Configurable: Clear execution history. Typically this should be more or less automatic.)
20 | * (Change configuration accordingly. Time to clear reversible/irrelevant non-essential, time to clear irreversible but non-essential, time to clear essential - options for offline data.)
21 | * Nice to have.
22 | * Continue penalty implementation: configurable penalties.
23 | * Configuration. _penalties.penaltyid1: 30%cancel,70%penaltyid123_,150%action:cmd:kropotnikalive:0:0
24 | * Factories (similar implementation to actions).
25 | * Implement (immediate execution) support for all fight checks for starters.
26 | * (No stored penalties yet. Later stored penalties allow adding penalties to other checks, and possibly have a duration of validity, such as times, ticks, time.)
27 | * Down-to-ground set-back policy. (Evaluate and implement if simple enough to do - think of using this, in case the survivalfly set-back is gone, or even as a permanent option, provided it works at all.)
28 | * Listener registration overhaul: adapt to current implementation.
29 | * Consider to add a self-register method to the MiniListener interface (or another one), to reduce type issues.
30 | * Set priorities and tags everywhere in a consistent way.
31 | * Prefer to use MiniListener implementations everywhere.
32 |
33 | * 3.16.2-SNAPSHOT
34 | * An alpha/beta release.
35 | * Fixes / check
36 | * Consistency: login/logout/disable/shutdown... dead? / set back queued? / ...
37 | * Set back, other queued actions.
38 | * Test totem of un-dings.
39 | * NoFall: Fix crop trampling (more complex / interesting than it might look like).
40 | * Consider a PacketMapper thing, relating Packets to Bukkit events.
41 | * At least Pos/Look vs. PlayerMoveEvent.
42 | * Use information to track cheats better (e.g. checking what the client sends for on-ground, or how many 'micro moves' have been used, possibly analyze such further to detect cheats, fix NoFall).
43 | * (Performance-wise: Consumed and other contextually irrelevant packets needn't be examined over and over, as might happen with the current FlyingQueue implementation.)
44 | * Spin-off: Relate interact/other packets to Position/Look updates directly, in order to have a fast lookup for packet inversion issues (such as interact being processed before move).
45 | * Put violation and execution histories into PlayerData.
46 | * Invalidation of stored data (registered).
47 | * Invalidate offline, world change, after so and so seconds unused, never.
48 | * Default invalidation stage (essential, non-essential, directly remove) -> auto . I.e. delete at which stage and/or transfer to offline data or not.
49 | * Actually add IOfflinePlayerData -> contain essentials, get rid of PlayerMap.
50 | * Call invalidation after creating offline data.
51 | * Registry log file.
52 | * In-depth registry information (sorting order of listeners and other).
53 | * Remove non-essential info from 'ncp version' and from the ordinary log file.
54 | * Aiming at splitting things ~ server.log, player/violations log (current log file) and registry.log.
55 | * For the REGISTRY stream only warnings and worse should make it to the INIT log, perhaps only with extended status logging, registry information could make it into the ordinary log file.
56 | * Might need changes/additions for organizing log files, similar to nocheatplus.log, possibly extended to always archive by data +- switch all files with one of them exceeding some size.
57 |
58 |
59 | # Scheduled
60 | * 3.16.X-SNAPSHOT
61 | * An alpha/beta release.
62 | * New implementation of exemption: advanced features and API.
63 | * Invalidation conditions (tick based, offline, world, certain event + priority level).
64 | * Generic event wrapping and standard hooks (e.g. invalidation on certain event monitor).
65 | * Advanced handlers (clearNoFallData)?
66 | * Integrate cncp into NCP (first the generic functionality, possibly all by reflection or by direct inclusion of the cncp jar).
67 | * Small scale fixes / additions:
68 | * Autofish - concerning the bot-aspect not much with lasting effect can be done, other than would rather fit into an anti-farming plugin with heat-map based spawn/loot reduction. Anti speed fishing doesn't appear to be possible due to things not being accessible (except for adding more or less static penalties for fast-ish recasting).
69 | * 3.17.0-RC
70 | * RC release for 3.16.x-SNAPSHOT: Major impact on internals (event registry) and API breakage.
71 | * 3.17.1
72 | * Block breaking overrides completion: Attempt to complete configuration and covered area - complement with better stats and commands to use stats of a player (for certain blocks) as a configured workaround directly.
73 | * Completion of other API, such as adding API and commands to enable/disable checks per world per check type, per check debug flags. (Might be in any other release).
74 | * (More room for fixes, possibly small additions/alterations with fight checks.)
75 | Topics that will be tackled soon, no guarantee on order.
76 | * 3.17.X
77 | * Block shape overhaul. Vastly breaking change, concerning many (internal) block access methods.
78 | * Should move most block stuff to non-static. Some functionality might stay static (e.g. the on ground check).
79 | * (This may be postponed, if MC 1.13 is too easy to adapt to.)
80 | * Vehicle envelope: Account for boat speed and acceleration: water/ground/ice (1.12).
81 | * Fight: Detect mobs crammed into narrow space (possibly similar) adapt or skip certain checks.
82 | * Force chunk load: Change to prevent moving within unloaded chunks, adapt data lazily where possible. Use a scheduler-like thing to still load chunks to ensure more smooth operation in average.
83 | * NDT-skip-fly (bow/velocity-optimized).
84 | * Boat placement (1.12 on ground, before on water): deny if ... at least if colliding with other boats.
85 | * Attempt to fix false positives:
86 | * SurvivalFly: sprint+jump on flat ground (low speed up, bunny condition loss makes use of buffer).
87 | * SurvivalFly: below micro move threshold issues (0.0625):
88 | * < 0.025 above ground after respawn (possibly other cases, like stepping to roughly this amount onto layered snow).
89 | * SurvivalFly: Move onto block level but not on ground (likely an h-collision with step up ~ layered snow, speed + 0.5 shoes).
90 | * Stuck in hoppers?
91 | * Vehicles: piston + slime block push up.
92 | * Horizontal pushing of pistons.
93 | * Decision for next topic between:
94 | * Fight checks (multiple iterations pending).
95 | * Data storage overhaul (multiple iterations pending).
96 | * set back policy (a) suggest set back (b) new policy: force fall.
97 | * Improve fastbreak to catch bulk breaking of fast-breaking blocks faster.
98 | * Evaluate: hacc with another slightly longer term tracking with extra limit - might allow a lower limit.
99 | * Evaluate: Get rid of horizontal buffer (would yield a lot of reports).
100 | * CreativeFly models, levitation: (Deny) descend speed concept + demand ascend. Make behavior fully dependent on the model (no elytra checking within the check, use some kind of special flag to model ~ glideStyleNoOne idk). Possibly allow glide-style ascend even if deny ascend is set (or ascend speed 0).
101 | * Fight checks, penalty actions: implement more penalty actions, allow use in fight checks.
102 | * Check data access: Implement (more) fine grained data removal for the remaining check types.
103 | * Fight checks, loop checks design.
104 | * Implement generic loop methods, not depending on certain checks.
105 | * Have multiple rounds with differing checks (1. fastest checks + determine latency window 2.-X. Further checks to refine window Last: checks that just use the latency window + best guess).
106 | * Possibly redo LocationTrace + pvp vs. pve config for loop checks.
107 | * Moving checks: set back policy refinements.
108 | * suggestSetBack instead of setting it within LOWEST event priority. Really set on MONITOR, only if not cancelled.
109 | * Unified handling of specialties with set back locations for all moving checks (not within survivalfly).
110 | * One spot to decide how to alter scheduled set back locations (voidtovoid, forcefall, downtoground).
111 | * Actually implement at least one new set back policy (forcefall or downtoground).
112 | * (Let checks and config select which alterations are allowed.)
113 | * Fight checks / latency:
114 | * Refine / implement-at-all: Make more use of a latency window - cross check with other checks and data sources (!).
115 | * Have a sequence of past latency estimates+windows and compare that of the attacker to the LocationTrace (latency _at that time_).
116 | * Update the LocationTrace on MONITOR (ensure), include the latest possible time stamp.
117 | * Fight checks: Refine and implement new.
118 | * Refine loop checks (if not already done), to make full use of capabilities of the loop.
119 | * Implement new (planned) checks, like targeting/difficulty.
120 | * Test + sketch out further directions (no joke :p).
121 | * SurvivalFly: sprint+jump and special case refinement. Possibly recode with new style workaround class use.
122 | * Further examine role of UNKNOWN (vanilla) server teleport. Consider to always cancel them if setting into blocks, and cancel the teleport and _schedule_ a set-back for on-tick execution (+ config). Could touch questions with passable/phase, if those questions exist with the default configuration at all.
123 | * Evaluate: command driven state machines (feed/trigger via actions, machines and further data queries via config).
124 | * Evaluate: model configs (reference other configurations to override selected areas of the configuration, without altering the configurations, just apply model with id 'abc' from 'modelconfigs/xyz.yml').
125 |
126 | ## Planned
127 | Topics that likely will follow up, no guarantee on order, might slip further away.
128 | * Dynamic check types.
129 | * Consider first steps into CheckPipelineRegistry.
130 | * I.e. have (non-Bukkit) custom pipeline events where the checks run inside.
131 | * This also allows for introducing abstraction, so the pipeline object provides access to Bukkit internals.
132 | * The pipeline objects may stay active during full event handling until monitor (inclusive).
133 | * Easy add-in checks, possibly easy API/hooking points for exemption (wrapping lowest-monitor is safest, but there might be cases where pinpointing around NCP listeners with no effect on other plugins is demanded).
134 | * The pipeline registry also directs towards auto registering (and unregistering), provided all related listeners are inside somehow.
135 | * Vehicle checks refinements: passable? Which ones to check + configure? Actual speed limiting. Pistons / block changes, at least simplistic.
136 | * Interact ray-tracing: Use passable ray-tracing, possibly make it ray-tracing per block.
137 | * Packet inversion problem: interact before look.
138 | * Refine onground checks (spider vs. stuck with bounding box).
139 | * Change isOnGround to a more flexible method (allow for distanceToGround), or provide an extra method.
140 | * Block compatibility config and defaults: add named sets of blocks to set the same flags for many, with activation flag.
141 | * Better horizontal velocity handling.
142 | * More packet level checks (tab-complete, nasty data, strip content from books, items).
143 | * Checks against unwanted content exposure (prevent sending content of books, item names, other).
144 | * Detect "more inventory".
145 | * Detect sending too few packets.
146 | * More long term event frequency tracking.
147 | * Single conditional action support (might also add generic access to violation levels via those).
148 |
149 | ## Planned (at some distance)
150 | Pretty hard targets, but too far off the schedule to give any ETA.
151 | * Add check/notification for players not using any velocity (mostly sf), at least start to log it for testing. [A simple first thing is in debug logs, not a check.]
152 | * _"Full" UUID compatibility_. Better handling of data with UUIDs, API. Cache policy for name<->uuid mappings.
153 | * Refine logging options in general (rolling files, manual entries, backups).
154 | * Better mod support for arbitrary blocks and tools. Includes cleanup of block-properties-handling.
155 | * Ingame configuration management (convenience, comparison, suggestions, hot-fixes).
156 | * Velocity handling: Switch to 3d-entries with "exact" per-axis/direction counting.
157 | * Per player fake blocks (via per player block cache or via BlockChangeTracker).
158 | * Checks for creative mode exploits (enchantments, clickable text). [Specialized plugin(s) exist, postponed.]
159 | * Moving/morepackets: Further invalidate past intervals to be more precise. Maybe include latency estimates.
160 | * A log viewer with specialized features. E.g. confine view to one player + name/uuid mentioned. Interpret moving debug logs and find violations and patterns or custom defined sequences. Process large logs in a more or less smart way.
161 | * Refine debug logging: Allow per-player or group files. Consider triggers to auto-start debug logging. Consider hooking into the debug stream in-game (!), possibly with reduced data. Might add a binary format, replay? Post-violation debug log - keep in memory and log on trigger/demand.
162 | * Event/pattern engine: Allow pattern detection and/or automata-based configurable meta checks.
163 | * Full core-recode. API-independent core + on-the-fly adding and removal of checks and other.
164 |
--------------------------------------------------------------------------------