- Minecraft Versions
- 1.8, 1.9, 1.10, 1.11, 1.12, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20
Full Tutorial
Dutch Video
Dutch Video
Server Manager
Player Manager
or go to the wiki https://github.com/LagBug/XProtect
or check the plugin's terms https://lagbug.me/terms
or join my discord server https://lagbug.me/discord
or find more about captchas https://en.wikipedia.org/wiki/CAPTCHA
or find more about the turing test https://en.wikipedia.org/wiki/Turing_test
config.yml
antibot.yml
captchas.yml
chat.yml
guis/player_manager.yml
lang/en_US.yml
Code:
# Thank you so much for purchasing my plugin,
# it really means a lot to me!
# __ _______ _ _
# \ \ / / __ \ | | | |
# \ V /| |__) | __ ___ | |_ ___ ___| |_
# > < | ___/ '__/ _ \| __/ _ \/ __| __|
# / . \| | | | | (_) | || __/ (__| |_
# /_/ \_\_| |_| \___/ \__\___|\___|\__|
#
# This is a file to help you configure settings to your likings. It is recommended
# to leave everything as it is, but, if you know what you're doing, feel free to change
# it. If you do not understand what something does, please leave it as it is and ask for help
languageFile: "en_US" #The language file that should be used. Use the file name without .yml from the /lang/ folder
prefix: " &c> &7" #The prefix that is then replaced in the language file by %prefix%
updateChecker: true #Specifies whether or not the update checker should work. If set to false, your server will start up faster
debug: true #If set to true, everything that is happening and is related to the plugin will be logged in the console
saveDataEvery: 10 #Specifies every how many minutes the data (verified player, blocked bots, etc.) should be saved. If an attack is happening, this will be skipped to reduce CPU & RAM usage
storage: #Information on how user data should be saved
type: "FLAT" #Available types are [MYSQL, FLAT].
mysql:
host: ""
database: ""
username: ""
password: ""
port: 3306
statement: "?autoReconnect=true&useUnicode=true"
tables:
verified: "verified"
blacklisted: "blacklisted"
dependencies: #Various information about the dependencies that can be used
AuthMe: #Settings for a variety of soft-dependencies
forceDisable: false
ProtocolLib:
forceDisable: false
antibot.yml
Code:
# This is the file to configure the bot attack protection settings
antibot: #A variety of features to prevent bot attacks on your server
hardLock:
enabled: true
requiredLocks: 5
lockFor: 30
joinLimiter: #Limits the connection of players to the server per a specified amount of seconds
enabled: true
seconds: 2
players: 1
ipLimiter: #Limits the same IPs that can be online at the same time
enabled: true
limit: 3
antiBadConnection: #Blocks any bad connection. A bad connection is based on the history of the IPs
enabled: true
apiKey: "" #Create an account on https://www.ipqualityscore.com/create-account and then copy and paste your API key from https://www.ipqualityscore.com/documentation/proxy-detection/overview
blocks:
bot: true #Blocks IPs that are flagged as potential bots
abuse: true #Blocks IPs that are recorded to have an abuse history
vpn: true #Block any VPN connections
fraudScore: 85 #Blocks player whose IP's fraud score is above this value
nameChecking:
enabled: true
contain:
- "mcstorm"
- "mcspam"
- "bot"
- "spam"
- "spammer"
countryChecking:
enabled: true
type: "WHITELIST" #The available types are [WHITELIST, BLACKLIST].
list:
- "US"
- "CA"
- "FR"
- "GB"
- "RU"
- "DE"
- "PL"
- "GR"
- "FI"
- "AU"
- "AT"
- "BE"
- "EC"
- "IT"
- "CN"
onAttack:
actionbar: true #If enabled and the server is under attack, an actionbar message will be shown to all admins
cleanConsole: false #If enabled and the server is under attack, the server console will remain mostly clean
onBotDetect:
- "BLACKLIST;;&c> &7You have been detected as a potential bot"
- "BAN_IP;;&c> &7You have been detected as a potential bot"
- "BAN;;&c> &7You have been detected as a potential bot"
captchas.yml
Code:
settings: #Some general settings about the captchas
notifyOn: #Should players with the permission captcha.notify be notified when a player fails or completes a captcha?
fail: true
complete: false
bypass: false #If true and the player has the bypass permission, it will not ask for a captcha
solveTime: 25 #The amount of time in seconds before a player gets kicked for not solving the captcha
delay: 0 #Delay the captcha on join, you might want this in order to appear after other messages are sent.
actionbar: false #Defines if actionbar should be used for captcha instructions instead of chat
captchaItem: #The item given in drop and map captcha
name: "&6Captcha Verification" #The name of the item
slot: 0 #The slot the item should be added
requireCaptcha: #Captcha test can be asked in these events
onJoin: true
whileOnCaptcha: #Which events should be cancelled when someone has still not verified himself
blockMovement: true
blockInteraction: true
blockItemDrop: true
blockBlockPlacement: true
blockBlockBreaking: true
blockDamage: true
blockInventoryMovement: true
blockCommands: true #There is a list below where you can whitelist commands
blockChatReceiving: true #Block the player from receiving chat messages
hidePlayer: true #Specifies if the player should be invinsible while on captcha verification
onCaptchaSuccess: {} #A list of actions you can do once a player passes the captcha test
#- "BUNGEECORD;;hub" #If that is uncommented, the user will be sent to the specified bungeecord server
onCaptchaFail: #A list of actions you can do if a player fails the test
- "KICK;;&c> &7You have failed the captcha test"
onCaptchaInactivity: #What happens if the player hasn't solved the captcha within the given time
- "KICK;;&c> &7You should have solved the captcha"
whitelistedCommands: {} #Commands that can be used when player is under captcha verification
captchas: #A list of all the captchas with options about them
map:
enabled: true
lines: 50
linesColor: BLACK
textColor: RED
picture: #Head over to /pictures/ and add your images. The name of the image, without it's extension will be used as a code
enabled: true
gui:
enabled: true
title: "Click on the &6%item%"
slots: 27
different:
enabled: true
title: "Click on the different item"
same:
item: "REDSTONE_BLOCK;1;0"
name: "&cDo not click here"
lore: {}
different:
item: "EMERALD_BLOCK;1;0"
name: "&aClick here"
lore: {}
slots: 9
equation:
enabled: true
range:
min: 1
max: 15
code:
enabled: true
color:
enabled: true
sneak:
enabled: true
jump:
enabled: true
drop:
enabled: true
item: APPLE
slot:
enabled: true
reverse:
enabled: true
chat.yml
Code:
# This is the file to configure the chat protection settings
whitelist:
- "lagbug.me"
regexFilters:
advertising:
expressions:
- "\\b[0-9]{1,3}(\\.|dot|\\(dot\\)|-|;|:|,|(\\W|\\d|_)*\\s)+[0-9]{1,3}(\\.|dot|\\(dot\\)|-|;|:|,|(\\W|\\d|_)*\\s)+[0-9]{1,3}(\\.|dot|\\(dot\\)|-|;|:|,|(\\W|\\d|_)*\\s)+[0-9]{1,3}\\b"
- "\\b[0-9]{1,3}(\\.|dot|\\(dot\\)|-|;|:|,)+[0-9]{1,3}(\\.|dot|\\(dot\\)|-|;|:|,)+[0-9]{1,3}(\\.|dot|\\(dot\\)|-|;|:|,)+[0-9]{1,3}\\b"
actions:
- "CANCEL"
- "MESSAGE;; &c> &7Advertising IPs will get you muted on our server."
domain:
expressions:
- "[a-zA-Z0-9\\-\\.]+\\s?(\\.|dot|\\(dot\\)|;|:|,)\\s?(com|org|net|cz|co|uk|sk|biz|mobi|xxx|eu|io)\\b"
actions:
- "CANCEL"
- "MESSAGE;; &c> &7Advertising domains will get you muted on our server."
sweating:
expressions:
- "BAD_WORDS_FILE"
actions:
- "CANCEL"
- "MESSAGE;; &c> &7Using prohibited language will get you muted on our server."
guis/player_manager.yml
Code:
title: "XProtect > Player Manager"
slots: 27
refresh: 5
contents:
0:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
2:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
8:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
9:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
11:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
16:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
17:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
18:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
20:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
25:
item: "STAINED_GLASS_PANE;1;9"
name: ""
lore: {}
26:
item: "BARRIER;1;9"
name: "&fGo Back"
lore: {}
action: "GO_BACK"
1:
item: "NAME_TAG;1;0"
name: "&cPlayer Statistics"
lore:
- "&7A variety of statistics about this player"
- ""
- "&6Server:"
- " &7Play Time: &e%statistic_time_played%"
- " &7Times Joined: &a%statistic_join_game%"
- " &7Times Left: &c%statistic_leave_game%"
- "&6Player:"
- " &7Total Kills: &a%statistic_player_kills%"
- " &7Total Deaths: &c%statistic_deaths%"
- " &7Last Death: &6%statistic_time_since_death%"
- " &7Damage (Taken/Dealt): &e%statistic_damage_taken%&7/&c%statistic_damage_dealt%"
10:
item: "BOOK;1;0"
name: "&cPlayer Information"
lore:
- "&7A variety of information about the player"
- ""
- "&6General:"
- " &7Name: &e%player_name%"
- " &7UUID: &e%player_uuid%"
- " &7IP: &c%player_ip%"
- " &7OP: &a%player_is_op%"
- " &7Location: &a%player_world% &7(&e%player_x%&7, &e%player_y%&7, &e%player_z%&7)"
- ""
- "&6Health:"
- " &7Health: &a%player_health%"
- " &7Food: &e%player_food_level%"
19:
item: "PAPER;1;0"
name: "&cCustom Information"
lore:
- "&7Custom information about this player"
- ""
- "&7Verified: &a%player_verified%"
- "&7Blacklisted: &a%player_blacklisted%"
- "&7Bot: &e%player_bot_status% &7(Based on a variety of tests)"
- "&7VPN/Proxy/Tor: &c%player_vpn%&7, &e%player_proxy%&7, &a%player_tor%"
- "&7Fraud Score: &c%player_fraud_score%&7/&e100 &7(High risk above 85)"
- "&7Recent abuse: &e%player_recent_abuse% &7(Recent abuse done by this IP)"
- "&7Location: &a%player_country%&7, &e%player_city%&7, &c%player_region%"
- "&7ISP: &e%player_isp%"
3:
item: "WOOL;1;0"
name: "&fSwitch Verify"
action: "SWITCH_VERIFY"
lore:
- "&7The player's verification status is &a%player_verified% &7and"
- "&7by clicking here, this will change."
4:
item: "WOOL;1;1"
name: "&fSwitch Blacklist"
action: "SWITCH_BLACKLIST"
lore:
- "&7The player's blacklist status is &a%player_blacklisted% &7and"
- "&7by clicking here, this will change."
5:
item: "WOOL;1;2"
name: "&fTeleport Here"
action: "TELEPORT_HERE"
lore:
- "&7Click here to teleport this player to your location."
6:
item: "WOOL;1;3"
name: "&fTeleport There"
action: "TELEPORT_THERE"
lore:
- "&7Click here to teleport to this player."
7:
item: "WOOL;1;4"
name: "&fSet On Fire"
action: "SET_ON_FIRE"
lore:
- "&7By clicking here the player will be set on fire."
12:
item: "WOOL;1;5"
name: "&fClear Chat"
action: "CLEAR_CHAT"
lore:
- "&7Clicking the button will clear the chat for"
- "&7this specific player."
13:
item: "WOOL;1;6"
name: "&fSwitch OP"
action: "SWITCH_OP"
lore:
- "&7The player's op status is &a%player_is_op% &7and"
- "&7by clicking here this will change."
14:
item: "WOOL;1;8"
name: "&fHeal"
action: "HEAL_PLAYER"
lore:
- "&7Click here to full the player's health."
15:
item: "WOOL;1;9"
name: "&fFeed"
action: "FEED_PLAYER"
lore:
- "&7Click here to full the player's food bar."
lang/en_US.yml
Code:
general:
updateAvailable: "%prefix% An update was found, click this message."
success: "%prefix% You've now passed the captcha test."
underAttack: "&fblocked(&4&lX&r &c%address%&f) &4&l*&r &fbots(&c%current_bots%&7/sec&f) &4&l*&r &ftotal(&c%total_bots%&f)"
join: "&e%player% joined the game"
notifications:
complete: "%prefix% (&c%player%&7) &7successfully completed the captcha."
fail: "%prefix% (&c%player%&7) &7failed to complete the captcha."
commands:
verify:
add:
success: "%prefix% Successfully verified (&c%player%&7)."
already: "%prefix% The specified player (&c%player%&7) is already verified."
remove:
success: "%prefix% Successfully unverified (&c%player%&7)."
already: "%prefix% The specified player (&c%player%&7) is not verified."
check:
found: "%prefix% The player specified player (&c%player%&7) is &cverified&7."
notFound: "%prefix% The player specified player (&c%player%&7) is &cnot verified&7."
blacklist:
add:
success: "%prefix% Successfully blacklisted (&c%player%&7)."
already: "%prefix% The specified player (&c%player%&7) is already blacklisted."
remove:
success: "%prefix% Successfully unblacklisted (&c%player%&7)."
already: "%prefix% The specified player (&c%player%&7) is not blacklisted."
check:
found: "%prefix% The player specified player (&c%player%&7) is &cblacklisted&7."
notFound: "%prefix% The player specified player (&c%player%&7) is &cnot blacklisted&7."
test:
success: "%prefix% Successfully sent a captcha test to &c%player%&7."
list:
success: "%prefix% The available captcha types are:"
format: " &7&l- &c%type% &7[&r&7%status%&7]"
reload:
success: "%prefix% The configuration files were successfully reloaded."
instructions:
map: "%prefix% Type the &ccode &7that is displayed in the map."
gui: "%prefix% Please click on the &c%item%&7."
different: "%prefix% Please click on the different item."
equation: "%prefix% Please solve the following equation: &c%equation%&7."
order: "%prefix% Place in order (&c%symbol%&7) the following numbers: &c%numbers%&7."
picture: "%prefix% Type what you're seeing. Choose from [&c%list%&7]."
code: "%prefix% Type &c%code% &7in the chat."
color: "%prefix% Type what (&r%color%THIS&r&7) color's name is."
sneak: "%prefix% Please &csneak &7(usually using SHIFT key)."
jump: "%prefix% Please &cjump &7(usually using SPACE key)."
drop: "%prefix% Please &cdrop &7the item you're holding (usually using Q key)."
slot: "%prefix% Please move to the &c%slot%th &7slot of your hotbar."
reverse: "%prefix% Please reverse the letters of the following code: &c%code%&7."
actions:
teleport:
here: "%prefix% Successfully teleported (&c%player%&7) to your location."
there: "%prefix% Successfully teleported to &c%player%&7's location."
whitelist:
enabled: "%prefix% Successfully &cenabled &7the whitelist."
disabled: "%prefix% Successfully &cdisabled &7the whitelist off."
op:
removed: "%prefix% Successfully gave OP permissions to (&c%player%&7)."
added: "%prefix% Successfully removed OP permissions from (&c%player%&7)."
reloadData:
success: "%prefix% Successfully reloaded the server's data."
fail: "%prefix% This can only be done in servers above &c1.14"
health:
heal: "%prefix% Successfully healed (&c%player%&7)."
feed: "%prefix% Successfully fed (&c%player%&7)."
fire: "%prefix% Successfully set (&c%player%&7) on fire."
clearChat: "%prefix% Successfully cleared the chat for (&c%player%&7)."
cancel: "%prefix% Successfully canceled the current action."
idleTimeout: "%prefix% Successfully set the idle timeout to &c%idleTimeout%&7."
savePlayers: "%prefix% Successfully saved player's data."
maxSlots: "%prefix% Successfully set the max slots to &c%maxSlots%&7."
clearGlobalChat: "%prefix% Successfully cleared the global chat."
kick:
restart: "&7The server has restarted please join again later"
locked: "&7Too many players are joining at the same time"
ip: "&7You can only have online up to &73 &7accounts at the same time"
bot: "&7Your IP is linked to bot activity so we can not allow you to join"
abuse: "&7Your IP is linked to recent abuse, hence why you can not join"
risk: "&7Your IPs fraud score is too risky, hence why you can not join"
vpn: "&7VPNs or proxies are not allowed in this server"
blacklisted: "&7You have been blacklisted from the server"
name: "&7Your name indicates that you're a potential bot"
country: "&7Your country is not allowed to join our server"
errors:
onlyPlayers: "%prefix% Only players can use this command."
noPermissions: "%prefix% You do not have enough permissions to do this."
playerNull: "%prefix% The specified player does not seem to be online."
wrongUsage: "%prefix% The right usage is &c%usage%"
You can find a list of the commands and the permissions by clicking here.
A list of all the APIs used to provide consistent and accurate VPN/Geolocation information: