THE PLUGIN WORKS ON BUKKIT/SPIGOT (+ FORK) [FOLIA, GEYSER WORK]AND BUNGEECORD (+ FORK) [VELOCITY NOT WORK]SERVERS!
MINECRAFT VERSIONS 1.6.X-1.21.X, JAVA VERSIONS 8 AND HIGHER!
WORKS ON LOCALHOST SERVER IF YOU ENABLED THE LOCALHOST: TRUE FUNCTION IN THE ANTIVPN.YML!
FEATURES:
IP AND VPN CHECK: THE PLUGIN CHECKS WHETHER A GIVEN IP ADDRESS IS FROM A VPN OR PROXY.
COUNTRY VERIFICATION: ALLOWS DEVELOPERS TO EXCLUDE CERTAIN COUNTRIES AND ALSO VERIFIES FOR MANIPULATED COUNTRY DATA.
ADDRESS VERIFICATION: CHECKING FOR NULL IP ADDRESSES, BLOCKING LOCALE AND TEST IP ADDRESSES, AND MONITORING IP ADDRESS CHANGES!
EXCEPTIONS: PROVIDES THE OPTION TO TREAT CERTAIN IP ADDRESSES AND USERNAMES AS EXCEPTIONS.
PLAYER MONITORING: WHEN A PLAYER CONNECTS TO THE SERVER, THE PLUGIN CHECKS THEIR IP ADDRESS AND TAKES NECESSARY ACTIONS IF IT'S POTENTIALLY HARMFUL.
ADDRESS LIMITER: WITH THIS, YOU CAN ALLOW UP TO THREE PLAYERS FROM A SINGLE IP ADDRESS TO JOIN THE SERVER!
DISCORD NOTIFICATIONS: CAPABLE OF SENDING DISCORD NOTIFICATIONS FOR SPECIFIC EVENTS.
EJECTION MEASURES: IF AN IP ADDRESS IS DEEMED HARMFUL, THE PLUGIN AUTOMATICALLY KICKS THE PLAYER AND SENDS A NOTIFICATION.
ASYNCHRONOUS OPERATIONS: THE PLUGIN OPERATES ASYNCHRONOUSLY, MINIMIZING SERVER RESOURCE STRAIN.
INTEGRATION WITH PROXYCHECK.IO: UTILIZES AN API KEY FROM PROXYCHECK.IO, ENABLING MORE COMPREHENSIVE AND DETAILED IP CHECKS.
IP GUARD: IF YOU PROTECT YOURSELF WITH THE /PROTECTION ADD COMMAND, YOU CANNOT CONNECT IF YOUR DATA CHANGES!
USERNAME CHECK: PLAYER NAMES CAN BE BLOCKED BASED ON RULES SET IN THE CONFIG
HOSTNAME FILTER: HOSTNAME CAN BE FILTERED DURING SERVER CONNECTION, SPECIFYING WHICH HOSTNAMES PLAYERS CAN CONNECT FROM (WHITELIST, BLACKLIST MODE) AND VALIDATION MODES (EQUALS, STARTS_WITH, CONTAINS).
SPECIAL FUNCTIONS:
ALTERNATIVE VPN CHECK: ALTERNATIVE VPN CHECK SOCKET-BASED NO API KEY REQUIRED!
DATABASE: SAVES BLACKLISTED OR IP GUARD PLAYERS TO A DATABASE; IF NOT CONFIGURED, SAVES TO CONFIGURATION FILE!
RUN TASK METHOD ERRORS: IF THERE IS AN ERROR BETWEEN THE RUN TASK METHODS, THE SERVER SHUTS DOWN IF IT'S ENABLED! FOR EXAMPLE: UNEXPECTED ERRORS DUE TO LOAD, ETC...
CONSOLE FILTER: REMOVING IP ADDRESSES FROM THE CONSOLE! (IT ONLY WORKS IF ENABLED!)
COMMANDS:
/checker [address]: CHECKS THE VPN OR PROXY STATUS OF A GIVEN IP ADDRESS!
/blacklist add [name] [address] [reason]: BANS A PLAYER BASED ON NAME, IP ADDRESS, AND REASON!
/blacklist remove [user]: REMOVES A PLAYER FROM THE BLACKLIST!
/blacklist check [user]: DISPLAYS DETAILS (NAME, UUID, ADDRESS, REASON) OF A PLAYER ON THE BLACKLIST!
/blacklist menu: YOU CAN VIEW THE BLACKLISTED PLAYERS FROM THE MENU!
/blacklist list: DISPLAYS PLAYERS CURRENTLY ON THE BLACKLIST!
/protection add [name] [address]: ADD PLAYER TO IP PROTECTION!
/protection remove [name]: REMOVE PLAYER FROM IP PROTECTION!
/protection check [name]: GET PLAYER'S IP PROTECTION DATA!
/protection list: LIST PLAYER'S UNDER IP PROTECTION!
/addresslimiter clear [address]: YOU CAN DELETE THE NAMES ASSOCIATED WITH THE IP ADDRESS!
/addresslimiter list [address]: YOU CAN LIST THE NAMES ASSOCIATED WITH THE IP ADDRESS!
/chronantivpn reload: RELOADS ALL FILES!
PERMISSIONS:
chronantivpn.checker: GRANTS PERMISSION TO USE THE /checker COMMAND!
chronantivpn.blacklist.add: GRANTS PERMISSION TO USE /blacklist add COMMAND!
chronantivpn.blacklist.remove: GRANTS PERMISSION TO USE /blacklist remove COMMAND!
chronantivpn.blacklist.check: GRANTS PERMISSION TO USE /blacklist check COMMAND!
chronantivpn.blacklist.menu: GRANTS PERMISSION TO USE /blacklist menu COMMAND!
chronantivpn.blacklist.list: GRANTS PERMISSION TO USE /blacklist list COMMAND!
chronantivpn.protection.add: GRANTS PERMISSION TO USE /protection add COMMAND!
chronantivpn.protection.remove: GRANTS PERMISSION TO USE /protection remove COMMAND!
chronantivpn.protection.check: GRANTS PERMISSION TO USE /protection check COMMAND!
chronantivpn.protection.list: GRANTS PERMISSION TO USE /protection list COMMAND!
chronantivpn.addresslimiter.clear: GRANTS PERMISSION TO USE /addresslimiter clear COMMAND!
chronantivpn.addresslimiter.list: GRANTS PERMISSION TO USE /addresslimiter list COMMAND!
chronantivpn.reload: GRANTS PERMISSION TO USE /chronantivpn reload COMMAND!
chronantivpn.notification: THIS PERMISSION SENDS ADMIN NOTIFICATIONS!
chronantivpn.*: THIS ADDS ALL THE PERMISSIONS FROM THE PLUGIN TO YOUR PERMISSIONS!
INSTALLATION:
PLACE THE PLUGIN'S .JAR FILE INTO THE PLUGINS DIRECTORY OF YOUR MINECRAFT SERVER.
RESTART YOUR SERVER.
USAGE:
ONCE INSTALLED, THE PLUGIN AUTOMATICALLY STARTS CHECKING IP ADDRESSES USING PROXYCHECK.IO. IF A PLAYER'S IP ADDRESS IS IDENTIFIED AS HARMFUL, THE PLUGIN TAKES ACTION BY EJECTING THE PLAYER AND SENDING A NOTIFICATION.
# TO BE ENABLED ON LOCAL NETWORKS! Localhost: false
# BLOCKING USERNAMES! Username-check:
# CHECKING JAVA USERNAMES! Java:
# CHECKS JAVA PLAYER'S NAMES IF ENABLED! Enabled: true
# ALLOWED CHARACTERS FOR JAVA USERNAMES! Allowed-characters: '
[a-zA-Z0-9_
]+'
# MINIMUM ALLOWED LENGTH FOR JAVA USERNAMES! Minimum-size: 3
# MAXIMUM ALLOWED LENGTH FOR JAVA USERNAMES! Maximum-size: 16
# CHECKING BEDROCK USERNAMES! Bedrock:
# CHECKS BEDROCK PLAYER'S NAMES IF ENABLED! Enabled: false
# ALLOWED CHARACTERS FOR BEDROCK USERNAMES! # FOR BEDROCK PLAYERS, THE PREFIX CHARACTER IS REMOVED FROM THE NAME DURING VERIFICATION! Allowed-characters: '
[a-zA-Z0-9_
]+'
# MINIMUM ALLOWED LENGTH FOR BEDROCK USERNAMES! Minimum-size: 3
# MAXIMUM ALLOWED LENGTH FOR BEDROCK USERNAMES! Maximum-size: 16
# BLOCKING IP ADDRESSES! Address-check:
# CHECK THE FOLLOWING LISTS! Blocked: true
# BLOCKED LOCAL IP ADDRESS! Local-IP-address: - '192.168.'
- '127.'
- '172.16.'
- '10.'
# BLOCKED TEST IP ADDRESS! Test-IP-address: - '192.0.2.'
AntiVPN:
# WRITE YOUR API KEY HERE FOR VPN, PROXY, AND COUNTRY CHECK (OPTIONAL BUT RECOMMENDED! HTTPS://WWW.PROXYCHECK.IO/)
# THIS SECTION IS USED TO CONFIGURE ANTI-VPN MEASURES. # AN API KEY CAN BE USED TO ENHANCE THE ACCURACY OF VPN AND PROXY DETECTION. Code: '
none'
AntiPROXY:
# PROXY CHECK CAN BE ENABLED: true / DISABLED: false # IF DISABLED, IT WILL NOT KICK FROM THE SERVER UPON CONNECTION! Enabled: true
# DOES NOT KICK IF THIS IS FOUND ON THE LIST! Whitelist: - '
no'
AntiVPN:
# VPN CHECK CAN BE ENABLED: true / DISABLED: false # IF DISABLED, IT WILL NOT KICK FROM THE SERVER UPON CONNECTION! Enabled: true
# DOES NOT KICK IF THIS IS FOUND ON THE LIST! Whitelist: - 'wireless'
- 'residential'
- 'business'
Exception:
# SPECIFY IP ADDRESSES THAT SHOULD BE EXEMPTED FROM VPN AND PROXY CHECKS. # THIS DOES NOT OVERRIDE CHECKS FOR NULL ADDRESSES OR BLACKLISTED ADDRESSES. Addresses: []
# SPECIFY USERNAMES THAT SHOULD BE EXEMPTED FROM VPN AND PROXY CHECKS. # THIS DOES NOT OVERRIDE CHECKS FOR NULL ADDRESSES OR BLACKLISTED USERNAME. Usernames: [] Blacklist-menu:
# SET DEFAULT SKIN! Default-skin: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTdlNGEzMTYzMjJmZjE0YjhiZGM4YzljYmUwNzUxZjA2ZDE3OThiMjJjMzQ5MjlhOGNkNDAzODExNjY3YjM3YiJ9fX0='
Blacklist-mode:
# AUTOMATICALLY ADD TO BLACKLIST WHEN KICKED! Automatic: false
# SPECIFY THE PORTS THAT SHOULD BE CHECKED FOR VPN CONNECTIONS. # MULTIPLE PORTS CAN BE LISTED HERE. Sockets: - 80
- 8080
- 443
Server-hostname:
# 'NONE' DISABLES THE CHECK. # 'WHITELIST' ALLOWS ONLY HOSTNAMES IN THE LIST TO CONNECT. # 'BLACKLIST' PREVENTS HOSTNAMES IN THE LIST FROM CONNECTING. Mode: NONE
# 'EQUALS' MATCHES HOSTNAMES THAT ARE EXACTLY THE SAME AS ANY IN THE LIST. # 'STARTS_WITH' MATCHES HOSTNAMES THAT START WITH ANY VALUE IN THE LIST. # 'CONTAINS' MATCHES HOSTNAMES THAT CONTAIN ANY VALUE IN THE LIST. Check: STARTS_WITH
# YOU CAN ADD HOSTNAMES TO THE LIST! Hostname: [] Isocode-check:
# 'NONE' DISABLES THE CHECK. # 'WHITELIST' ALLOWS ONLY COUNTRIES IN THE LIST TO CONNECT. # 'BLACKLIST' PREVENTS COUNTRIES IN THE LIST FROM CONNECTING. Mode: NONE
# LIST OF COUNTRY ISO CODES: Isocode: - 'RS'
- 'HU'
- 'SK'
- 'RO'
- 'UA'
# SWITCH-CHECK CONFIGURATION! Switch-check:
# THE ADDRESS OPTION DETERMINES WHETHER TO CHECK FOR IP ADDRESS CHANGES! # IF 'true', IP ADDRESS CHANGES WILL BE CHECKED! # IF 'false', IP ADDRESS CHANGES WILL NOT BE CHECKED!
# ENABLE THIS OPTION TO CHECK FOR CHANGES IN THE IP ADDRESS OF CONNECTED USERS. # THIS CAN HELP DETECT SUSPICIOUS ACTIVITY WHERE USERS CHANGE THEIR IP ADDRESS FREQUENTLY. Address: false
# THE ISOCODE OPTION DETERMINES WHETHER TO CHECK FOR COUNTRY CODE (ISO CODE) CHANGES! # IF 'true', COUNTRY CODE CHANGES WILL BE CHECKED! # IF 'false', COUNTRY CODE CHANGES WILL NOT BE CHECKED!
# ENABLE THIS OPTION TO CHECK FOR CHANGES IN THE COUNTRY ISO CODE OF CONNECTED USERS. # THIS CAN HELP DETECT IF USERS ARE USING VPNS TO CHANGE THEIR VIRTUAL LOCATION. Isocode: true
Address-limiter:
# ENABLE THIS OPTION TO LIMIT THE NUMBER OF CONNECTIONS FROM A SINGLE IP ADDRESS. Check: false
# SET THE MAXIMUM NUMBER OF CONNECTIONS ALLOWED FROM A SINGLE IP ADDRESS. # THIS HELPS TO PREVENT ABUSE FROM A SINGLE SOURCE. Max-count: 3
Server-shutdown:
# WHEN YOU ENABLE THIS FEATURE, THE SERVER SHUTS DOWN WHEN YOU TURN DISABLE THE PLUGIN! Enabled: false
Console-filter:
# HIDES IP ADDRESSES FROM THE CONSOLE! Hide-address: false
Run-task-error:
# THIS CONFIGURATION SETTING ENSURES THAT THE SERVER WILL AUTOMATICALLY SHUT DOWN # IN THE EVENT OF UNEXPECTED ERRORS OR EXCEPTIONS OCCURRING DURING THE EXECUTION # OF runTask METHODS. THIS IS A SAFETY MEASURE DESIGNED TO PREVENT POTENTIAL DATA LOSS, # INCONSISTENCIES, OR OTHER ISSUES THAT MAY ARISE FROM THE CONTINUED OPERATION OF THE SERVER # UNDER ERRONEOUS CONDITIONS.
# WHEN ENABLED (true), ANY CRITICAL ERRORS ENCOUNTERED DURING TASK EXECUTION WILL # TRIGGER AN IMMEDIATE SERVER SHUTDOWN. THIS HELPS TO MAINTAIN THE INTEGRITY OF THE SYSTEM # AND ENSURES THAT ADMINISTRATORS CAN ADDRESS AND RESOLVE THE UNDERLYING ISSUES BEFORE # RESTARTING THE SERVER. # IF SET TO false, THE SERVER WILL ATTEMPT TO CONTINUE RUNNING DESPITE ANY ERRORS, # WHICH MAY BE SUITABLE FOR NON-CRITICAL ENVIRONMENTS OR FOR DEBUGGING PURPOSES. HOWEVER, # THIS IS NOT RECOMMENDED FOR PRODUCTION ENVIRONMENTS DUE TO THE RISKS OF UNDETECTED ISSUES. Server-shutdown: false
Json-fetcher:
# ENABLE CACHING OF FETCHED JSON DATA TO IMPROVE SERVER PERFORMANCE. Set-use-caches: true
# CONFIGURE THE TIMEOUT SETTINGS FOR WEB REQUESTS. # IF THE WEBSITE DOES NOT RESPOND IN TIME, AN ALTERNATIVE CHECK WILL BE USED. Set-connect-timeout: 3
Set-read-timeout: 3
# ENABLE THIS OPTION TO PRINT JSON FETCH ERRORS TO THE CONSOLE FOR DEBUGGING PURPOSES. Send-console-error: false
Socket-fetcher:
# CONFIGURE THE TIMEOUT FOR SOCKET CONNECTIONS. # IF THERE IS NO RESPONSE, IT WILL ASSUME THAT NO VPN OR PROXY IS USED. Set-socket-timeout: 3
Discord-webhook:
# SEND DISCORD NOTIFICATION IF YOU ENTER THE DISCORD WEBHOOK URL! # ENTER A DISCORD WEBHOOK URL TO ENABLE DISCORD NOTIFICATIONS FOR SERVER EVENTS. Url: '
none'
Header: '⚠ We have detected suspicious activity!'
# CONFIGURE THE MESSAGES THAT WILL BE SENT TO THE DISCORD CHANNEL. Notifications:
Reason: 'Reason »
%reason%' User: 'User »
%user%' Address: 'Address »
%address%' Iso: 'Iso »
%isocode%' Server: 'Server »
%server%' Footer: '
(Unsuccessful server connection!
)'
# THIS IS NOT REQUIRED UNLESS YOU HAVE A MYSQL DATABASE! # YOU CAN USE THIS TO CONNECT THE SERVER BLACKLISTS! Database:
# ENTER THE HOSTNAME HERE! Hostname: '
none'
# ENTER THE PORT HERE! Port: '
none'
# ENTER THE DATABASE HERE! Database: '
none'
# ENTER THE USERNAME HERE! Username: '
none'
# ENTER THE PASSWORD HERE! Password: '
none'
# THESE PLACEHOLDERS ARE USED FOR DISPLAYING DEFAULT VALUES WHEN NO SPECIFIC INFORMATION IS AVAILABLE. Placeholder: Unknown: 'Unknown'
Server: 'Unknown'
Console: 'Console'
CUSTOM KICK FUNCTIONS:
A DEFAULT CODE EXAMPLE IS INCLUDED IN THE CUSTOMKICK.YML FILE AS A REFERENCE. YOU CAN USE IT TO ADD NEW CHECKS.
MULTIPLE URLS CAN BE ADDED, AND EACH URL CAN HAVE MULTIPLE JSON CHECKS, PERMISSION BYPASS, AND CUSTOM REASON ADDED!
# THESE ARE THE DEFAULT VALUES AUTOMATICALLY INSERTED BASED ON PLAYER DATA! # %name% - PLAYER'S USERNAME! # %isocode% - PLAYER'S ISOCODE! # %uuid% - PLAYER'S UUID! # %address% - PLAYER'S IP ADDRESS! CustomKick:
# SETTINGS FOR THE FIRST CHECK, AND MORE CAN BE ADDED! Check1:
Url: 'https://funkemunky.cc/vpn?ip=
%address%' checks: # SETTINGS FOR THE FIRST CHECK, AND MORE CAN BE ADDED! '1': # IF YOU HAVE THIS PERMISSION, THE SERVER WILL NOT KICK YOU! Permission: 'chronantivpn.exception.proxy'
# THE JSON PATH! Json-Path: - 'proxy'
# IF IT'S ON THE 'Json-List' LIST, THEN IT DOESN'T KICK (RETURNS TRUE), IF FALSE, IT KICKS! Json-Whitelist: false
# THIS LIST IS CHECKED BY THE PLUGIN WHEN KICKING! Json-List: - 'true'
# IF THE JSON RESULT IS BLACKLISTED, THE SERVER KICKS WITH THIS REASON! Kick: 'Blocked on the server proxy!'
# SETTINGS FOR THE SECOND CHECK, AND MORE CAN BE ADDED! '2': # IF YOU HAVE THIS PERMISSION, THE SERVER WILL NOT KICK YOU! Permission: 'chronantivpn.exception.country'
# THE JSON PATH! Json-Path: - 'countryCode'
# IF IT'S ON THE 'Json-List' LIST, THEN IT DOESN'T KICK (RETURNS TRUE), IF FALSE, IT KICKS! Json-Whitelist: true
# THIS LIST IS CHECKED BY THE PLUGIN WHEN KICKING! Json-List: - 'RS'
- 'HU'
- 'SK'
- 'RO'
- 'UA'
# IF THE JSON RESULT IS BLACKLISTED, THE SERVER KICKS WITH THIS REASON! Kick: 'Blocked on the server isocode!'
# SETTINGS FOR THE SECOND CHECK, AND MORE CAN BE ADDED! Check2:
Url: 'http://ip-api.com/json/
%address%?fields=proxy,countryCode' checks: # SETTINGS FOR THE FIRST CHECK, AND MORE CAN BE ADDED! '1': # IF YOU HAVE THIS PERMISSION, THE SERVER WILL NOT KICK YOU! Permission: 'chronantivpn.exception.proxy'
# THE JSON PATH! Json-Path: - 'proxy'
# IF IT'S ON THE 'Json-List' LIST, THEN IT DOESN'T KICK (RETURNS TRUE), IF FALSE, IT KICKS! Json-Whitelist: true
# THIS LIST IS CHECKED BY THE PLUGIN WHEN KICKING! Json-List: - 'false'
# IF THE JSON RESULT IS BLACKLISTED, THE SERVER KICKS WITH THIS REASON! Kick: 'Blocked on the server proxy!'
# SETTINGS FOR THE SECOND CHECK, AND MORE CAN BE ADDED! '2': # IF YOU HAVE THIS PERMISSION, THE SERVER WILL NOT KICK YOU! Permission: 'chronantivpn.exception.country'
# THE JSON PATH! Json-Path: - 'countryCode'
# IF IT'S ON THE 'Json-List' LIST, THEN IT DOESN'T KICK (RETURNS TRUE), IF FALSE, IT KICKS! Json-Whitelist: true
# THIS LIST IS CHECKED BY THE PLUGIN WHEN KICKING! Json-List: - 'RS'
- 'HU'
- 'SK'
- 'RO'
- 'UA'
# IF THE JSON RESULT IS BLACKLISTED, THE SERVER KICKS WITH THIS REASON! Kick: 'Blocked on the server isocode!'