Overview
Existing anti-cheat plugins like NoCheatPlus may stop exploiters from speedmining or flying, but it does not stop players from obtaining items with excessively high enchantments or potions with extreme potency through exploitation of bugs. This plugin provides a structured log system to monitor players that use exploits to modify items and potions, as well as a simple set of commands to use against cheaters.
Functionality
This plugin has a scanning system intended to evaluate the items in a player's inventory for potential exploits. At its full functionality, the plugin can
- detect players in possession of exploited items
- place these players in a log which can be viewed anytime ingame by people with the correct permissions
- announce to the entire server that a specific player is in possession of exploited items or potion effects
- be triggered by various events (e.g. block place, block break, drop item) to scan players who perform the events
- kick players who fail too many scans
- randomize scanning
- remove all exploited items from a player in one command
NOTE: All of these options are configurable!
Intended Use
This plugin is designed for servers which have a problem with cheaters that use clients to exploit bugs in the game to modify item enchantments and power.
Commands
/ma - shows the intention of this plugin
/ma help - shows the help dialog which lists all commands
/ma help [command] - shows information on a specific command
/ma scan <player> - manually scans a player for exploited items
/ma clear <player> - removes only malicious items from the specified player
/ma clearpots <player> - removes malicious potion effects only from the specified player
/ma clearall <player> - removes any article identified to be malicious from the specified player
/ma logs <page> - opens the log viewer where a player can view all logged players
/ma addplayer <player> [reason] - manually add a player to the log with a supplied reason
/ma delplayer <player> - manually delete a player from the log
/ma clearlogs - clears the log
/ma searchlogs <query> - searches the log for the specified string
/ma config - view configuration settings
Permissions
MA.check - grants a player permission to scan other players using /ma scan
MA.admin - exempts a player from scans (both from players and the plugin)
MA.modify.clear - allows a player to modify another player's items using /ma clear
MA.modify.clearpots - allows a player to modify another player's items using /ma clearpots
MA.modify.clearall - allows a player to modify another player's items using /ma clearall
MA.logs - grants a player permission to view the logs using /ma logs
MA.logs.search - grants a player permission to search the logs with /ma searchlogs
MA.logs.add - allows a player to use /ma addplayer
MA.logs.delete - allows a player to use /ma delplayer
MA.logs.clear - allows a player to clear the logs with /ma clearlogs
MA.config - allows a player to view the config with /ma config
Default Configuration
kick-times: 5 >how many times a player can fail virus scans before it is kicked (A negative number here makes it unlimited)
announce: true >announce to the server that a player has modded items each time they fail a virus scan
reset-log-on-restart: false >whether to reset the log every time the plugin is loaded
check-message: true >notify players when they are being scanned by staff members
random: false >whether to enable random scanning
scan-chance: 5 >if random scanning is enabled, the chance of being scanned (1 out of whatever number you put here)
triggers:
blockplace: true >player will be scanned upon placing a block
blockbreak: true
bookwrite: true
entityhit: true
playerjoin: true
itemdrop: true
itempickup: true
bucketfill: true
eatfood: true
pvpevent: true
writebook: true
eggthrow: true
fishing: true
itembreak: true
portal: true
shear: true
shootbow: true
teleport: true
players: >this is the log. It is not recommended, but you can modify it through config, but it will not function if you do not use proper YAML
Future Plans
- working on a system that removes items from a player automatically (configurable)
- better GUI
- sync with other plugins
- edit config ingame (already implemented, but very buggy)
NOTE:
I don't appreciate comments about my code. Please comment only about bugs you encounter on your server, suggestions, etc. I will not reply to comments regarding my code. Thanks in advance.