Compatibility
Minecraft: Java Edition
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.x
1.15.x
1.14.x
1.13.x
1.12.x
1.11.x
1.10.x
1.9.x
1.8.x
1.7.x
Platforms
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+Creators
Details
Licensed ARR
Published 9 months ago
Updated 4 days ago
Changelog
(showing updates from 1.0.4 -> 1.0.5-pre5) - This version has been launched for public for testing, this seems to be stable, but if you find errors or problems, please, JOIN TO THE DISCORD SUPPORT.
- Added IPRisk API (unlimited usage).
- Added FreeIPAPI.
- Increased
max_flags
option to 3 for better avoid false flags for the amount of free APIs. - Added IPdb-Amelia API (unlimited usage).
- Disabled SkyDB by default in configuration because their big delay in response.
- Fixed
value
to check for VPN in case the API return in array list. - Added option to use
value
with array list. (this feature was added for IPdb-Amelia, for better results) - Added reload command for the plugin.
- Fixed bypass permission.
- Added auto-complete for add/remove sub-arguments.
- Fixed Folia support.
- Implemented a little API for developers.
- Download their dependencies automatically when the server start, so you can use MySQL and SQLite in Proxy (BungeeCord/Velocity).
- Added support for MiniMessage.
- Added support for new databases: MariaDB, PostgreSQL and H2 with HikariCP.
- Added new command /foxgate db; in this you can purge the database, all saved IP's (/foxgate db purge) and reconnect the database if you applied changes and you don't want restart your server (/foxgate db reconnect).
- Added new command /foxgate status, with this you can see information from an IP saved in the database.
- Improved the structure in the config.yml.
- Updated and fixed some fields in the API.
- Fixed in Velocity backends, this only detecting IP of host.
- Fixed a lot of errors in 1.0.4 version.
- Changed
PlayerPreLoginEvent
toAsyncPlayerPreLoginEvent
for better performance.
New configuration reference:
Spoiler
# ------------------------------------------------------------------------------------------- #
# ______ _____ _ #
# | ___| | __ \ | | #
# | |_ ___ __ __| | \/ __ _ | |_ ___ #
# | _|/ _ \\ \/ /| | __ / _` || __|/ _ \ #
# | | | (_) |> < | |_\ \| (_| || |_| __/ #
# \_| \___//_/\_\ \____/ \__,_| \__|\___| #
# #
# [v1.0.5-pre5] #
# #
# ------------------------------------------------------------------------------------------- #
# If you still has questions, you can join to the discord server in:
# https://discord.com/invite/FTtVXfj or you can use the Discussion page in https://www.spigotmc.org/threads/646308/.
# ___ _ _
# / \__ _| |_ __ _| |__ __ _ ___ ___
# / /\ / _` | __/ _` | '_ \ / _` / __|/ _ \
# / /_// (_| | || (_| | |_) | (_| \__ \ __/
# /___,' \__,_|\__\__,_|_.__/ \__,_|___/\___|
# Configure a database for use.
database:
# - Available options in type.
# |=> MySQL (HikariCP)
# |=> MariaDB (HikariCP)
# |=> PostgreSQL (HikariCP)
# |=> SQLite (HikariCP)
# |=> H2 (Unstable)
#
# If you change this configuration and your server is already
# started. You can use the command "/foxgate db reconnect" to
# apply the changes without restarting plugin or server.
# Remember first reload the plugin with "/foxgate reload"
# and use that command.
type: "sqlite"
# Edit table in case you want a different.
# If you want to use your actually stats (of 1.0.5-pre4 or older),
# use the next:
# - "vpn_cache"
table: "foxgate"
# MariaDB/MySQL databases type. Edit here.
# This uses HikariCP.
remote:
# Determine information of your database.
hostname: "localhost"
port: 3306
database: "foxav_db"
username: "root"
password: "password123"
# These settings apply to the MySQL/MariaDB connection pool (HikariCP).
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 4
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 4
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 4
minimum-idle: 4
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1500000 (25 minutes)
maximum-lifetime: 1500000
# Frequency of pings to keep the connection alive, in milliseconds.
# - This prevents connections from being closed due to inactivity (common in many databases or firewalls).
# - Must be less than 'maximum-lifetime' and greater than 30 seconds (30000 ms).
# Example:
# For long-running servers, a value of 10 minutes (600000 ms) is generally ideal.
# Recommended: 600000 (10 minutes)
keepalive-time: 600000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 3-5 seconds (3000-5000 ms) is ideal.
# Recommended: 5000 (5 seconds)
connection-timeout: 5000
# Custom validation timeout (time taken to validate a connection), in milliseconds.
# - Determines how long the pool will wait while testing if a connection is still valid.
# - A low value improves responsiveness, but setting it too low may cause false negatives.
# Example:
# For most databases, 3 seconds (3000 ms) is sufficient for validation.
# Recommended: 3000 (3 seconds)
validation-timeout: 3000
# Custom properties for advanced users.
# Add any additional properties to fine-tune the connection.
#
# You can uncomment unnecesary properties or remove,
# also edit to values that is perfect for you.
# (!) THIS PROPERTIES IS BASED WITH SUPPORT
# MARIADB, IF YOU GET ERROR IN MYSQL, YOU CAN
# ADAPT OR CONSIDERING TO CHANGE TO MARIADB,
# THAT WORKS WITH MYSQL DATABASES.
properties:
# - SSL.
# Database connection settings.
# Adjust these properties to optimize the connection with your MySQL/MariaDB server.
# Enables or disables SSL for secure connections.
# It is highly recommended to set this to true if your server supports SSL.
# Default is false, as many MySQL/MariaDB servers do not support SSL.
sslMode: "false"
requireSSL: "false" # If set to "true", forces SSL connections. Overrides 'sslMode'.
verifyServerCertificate: "false" # Validates the server's SSL certificate. Set to "true" for production.
# - Connection Optimization
cachePrepStmts: "true" # Enables prepared statement caching
prepStmtCacheSize: "250" # Number of prepared statements to cache
prepStmtCacheSqlLimit: "2048" # Maximum size of a query in the cache
useServerPrepStmts: "true" # Uses server-side prepared statements
# - Performance and Buffering
rewriteBatchedStatements: "true" # Optimizes batch insert/update performance
useCompression: "false" # Enables compression for data transfer (optional)
maintainTimeStats: "false" # Disables time statistics for improved performance
autoReconnect: "true" # Automatically reconnects if the connection is lost
# - Character Encoding
# Specifies whether Unicode character encoding should be used.
# If working with multilingual data, this is highly recommended.
useUnicode: "true"
# Defines the character encoding for the database connection.
# Use "utf8" for compatibility with most character sets.
characterEncoding: "utf8"
# - Time Zone
serverTimezone: "UTC" # Ensures consistent timezone handling
postgresql:
hostname: "localhost"
port: 5432
database: "foxav_db"
username: "postgres"
password: "password123"
# Database connection settings for PostgreSQL.
settings:
# Adjust these properties to optimize the connection with your PostgreSQL server.
# Enables or disables SSL for secure connections.
# It is highly recommended to set this to true if your server supports SSL.
# Default is false.
ssl: false
# The maximum time in seconds to wait for a connection from the pool.
# Choose a value between 1 and 5 for a balance between availability and performance.
# Recommended: 3.0
connectiontimeout: 3.0
# Specifies whether Unicode character encoding should be used.
# PostgreSQL natively supports Unicode, so this can be left as true.
useUnicode: true
# Defines the character encoding for the database connection.
# Use "UTF-8" to handle multilingual data and ensure compatibility.
characterEncoding: "UTF-8"
# Keeps idle connections alive.
tcpKeepAlive: true
# Timeout for socket operations in seconds.
socketTimeout: 30
# Number of prepared statement executions before switching to server-side prepared statements.
prepareThreshold: 5
# Application name for debugging or monitoring purposes.
applicationName: "FoxGate"
# Enables optimized binary transfer for certain data types.
binaryTransfer: true
# These settings apply to this PostgreSQL, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 10
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 10
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 2
minimum-idle: 2
# Sets the maximum time an idle connection can remain in the pool before being automatically closed.
# - Connections that remain idle for longer than the configured value will be removed from the pool
# and replaced with new connections as needed.
# - This is useful to free up resources and keep connections "fresh" avoiding possible problems with
# stale connections.
# Recommended: 600000 (10 minutes)
idle-timeout: 600000
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
sqlite:
file: "FoxGate.db"
# These settings apply to this SQLite, because uses Hikari for connection.
# - Default values are suitable for most users. Only modify these if you know what you're doing!
#
# Yeah... I know HikariCP isn't better to use with SQLite, but is only for avoid any
# type of errors! Please, don't kill me!
pool-settings:
# The maximum number of connections in the connection pool.
# - Determines the upper limit of active database connections that can be managed simultaneously.
# - Setting this too high can overload your database server, while setting it too low can cause delays.
# Example:
# If your server has high traffic and the database can handle it, set this to 10 or higher.
# Recommended: 5
# More information: https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
maximum-pool-size: 5
# Minimum number of idle connections to maintain in the pool.
# - The pool will try to maintain this number of idle (inactive) connections ready for use.
# - Setting this equal to 'maximum-pool-size' creates a fixed-size connection pool,
# ensuring consistent resource allocation.
# Example:
# For a server with occasional traffic spikes, set this to half of 'maximum-pool-size'.
# Recommended: 1
minimum-idle: 1
# Maximum lifetime of a connection in the pool, in milliseconds.
# - Connections older than this value will be closed and replaced.
# - This prevents stale connections from lingering indefinitely and reduces database timeout issues.
# - Should be at least 30 seconds less than the timeout imposed by the database itself.
# Example:
# If your database timeout is 30 minutes, set this value to 25 minutes (1500000 ms).
# Recommended: 1800000 (30 minutes)
maximum-lifetime: 1800000
# The maximum time in milliseconds to wait for a connection from the pool.
# - If no connection is available within this time, an exception will be thrown.
# - Setting a low value ensures responsiveness but may cause issues under heavy load.
# Example:
# For responsive applications, a value between 30-50 seconds (30000-50000 ms) is ideal.
# Recommended: 30000 (30 seconds)
connection-timeout: 30000
# This is too unstable for the moment.
h2:
file: "h2db"
# When an IP isn't detected a vpn or proxy, this need to save in
# cache to don't make more requests for a little time for save
# performance and requests, customizable here.
bypass:
# Enable this feature?
enable: true
# Determine the amount in hours to save the IP in cache and avoid
# make more requests to this IP. Useful to save performance and
# verify only one time for certain time.
#
# Recommended: 2
expiration_time: 2
# When an IP is detected in a result, this is save in the cache
# to don't make more request for a little time, this value is
# saved in hours.
#
# Recommended: 36
expiration_time: 36
# ___ __ _ _ _
# / __\___ _ __ / _(_) __ _ _ _ _ __ __ _| |_(_) ___ _ __
# / / / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \
# / /__| (_) | | | | _| | (_| | |_| | | | (_| | |_| | (_) | | | |
# \____/\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_|
# |___/
# Configure some others little options.
configuration:
# Allow the usage of Metrics (bStats) in your server?
# - This is only for stadistics usage, can help to the creator
# in view amount of servers that the plugin are using. This
# doesn't seems to has any impact in performance.
metrics: true
# Print to console?
# - Enable this to send the equal notification to the console when
# a player is flagged.
console: true
# Define the permission.
# - Set here the permission to see the notification in case this
# is used in case a player is using VPN. By default, this is one
# permission default of the antivpn: 'foxav.notifications'
permission: 'foxav.notifications'
# Do you want to enable this feature?
# - Automatic check new updates in the Spigot page. This only detect
# when the server is starting. You need to have connection for check
# new updates.
update: true
#
# /\/\ ___ ___ ___ __ _ __ _ ___ ___
# / \ / _ / __/ __|/ _` |/ _` |/ _ / __|
# / /\/\ | __\__ \__ | (_| | (_| | __\__ \
# \/ \/\___|___|___/\__,_|\__, |\___|___/
# |___/
# 🔨 Configure here the messages to show.
# You can use MiniMessage in this section. This also works with
# legacy bukkit colors, but isn't recommended, because this
# is totally incompatibility!
#
# 📷 Viewer:
# https://webui.advntr.dev/
#
# 📚 Format:
# https://docs.advntr.dev/minimessage/format.html
message:
# Message to return when a player is kicked with the option of actions in 'kick', this
# his useful if you want kick with the plugin and no with command. You can use the
# placeholders: %PLAYER%, %IP% and %UUID%. Use '\n', '%NL%' or '\nl' for new lines in
# the message.
# This doesn't support MiniMessage, sorry. :(
kick: "&cYou have been disconnected by FoxGate:\n&fVPN or Proxy has been found in your connection!\n\n&7This is an error? &fJoin to our discord server.\n&b&ndiscord.idcteam.xyz"
# Notification when a player is kicked. You can suppress this with only
# leave in blank.
notify: '{prefix} <aqua>{player} <gray>has been detected using VPN and has been removed! <green>({IP})'
# This only show in console.
# This can help in debug in case a service is not working correctly.
# On the end, the plugin already send the message of error. You can
# suppress this with only leave in blank.
error: '{prefix} Error while verifying VPN in service "{service}" to {player}: '
# Determine the prefix to use when a player use a command.
prefix: '<yellow><bold>FGT</bold></yellow><dark_gray> ►<reset>'
help:
verbose: 'Enable/disable verbose mode.'
add: 'Add a IP to the database.'
remove: 'Remove a IP from the database.'
reload: 'Reload configuration file to apply changes.'
db: 'Purge or reconnect the database.'
status: 'View information from a cached IP in the database.'
verbose:
enable: '{prefix} <green>You enabled the verbose mode.'
disable: '{prefix} <red>You disabled the verbose mode.'
no_malicious: '{prefix} <green>[VERBOSE] <aqua>{player} <gray>is not a VPN in service: <green>{service} <dark_gray>({IP})'
malicious: '{prefix} <red>[VERBOSE] <aqua>{player} <gray>is marked a VPN in service: <green>{service} <dark_gray>({IP})'
ignored: '{prefix} <yellow>[VERBOSE] <aqua>{player} <gray>has been ignored for whitelist in <green>{type} <dark_gray>({IP})'
db:
invalid_usage: '{prefix} Use the command <aqua>/foxgate db <purge/reconnect><reset>.'
reconnecting: '{prefix} <yellow>Trying to reconnecting the database...'
reconnect_correctly: '{prefix} <green>The database was reconnected.'
reconnect_problem: '{prefix} <red>Error while trying to reconnect the database. Check the console.'
purging: '{prefix} <yellow>Trying to purging the database...'
purging_correctly: '{prefix} <green>The database has been purged/reseted.'
purging_problem: '{prefix} <red>Error while trying to purge the database. Check the console.'
reload:
message: '{prefix} <green>The configuration file has been reloaded.'
add-remove:
invalidip: '{prefix} {IP}<red> is not a valid IP/Username!'
already: '{prefix} {IP}<red> is already added/removed from the database!'
add: '{prefix} {IP}<green> has been added to the dabatase!'
remove: '{prefix} {IP}<green> has been removed from the database!'
status:
invalidip: '{prefix} {IP}<red> is not a valid IP!'
# Here you can find new placeholders only for this message:
#
# {DETECTED} - Return only the services that detected that IP has VPN.
# {UNDETECTED} - Return only the services that doesn't detect that IP is VPN.
# {LIST} - Return both list, but this difference with color (customizable).
# {MAX} - Return the number of maxium flags to deny access to the player.
# {COUNT_DETECTED} - Return the count of services that the player has been detected.
# {COUNT_UNDETECTED} - Return the count of services that the player doesn't has been detected.
# {STATUS} - Return the status of the player.
detected: '<red>'
undetected: '<green>'
none: '<red>None.'
no_cached: '<red>Not cached in database.'
allow: '<green>Verified.'
deny: '<red>Blocked.'
info: " \n <green>Viewing status of <aqua>{IP}\n <dark_gray>▪ <white>Status: {STATUS} <yellow>({COUNT_DETECTED}/{MAX})</yellow>\n <white>Undetected: <green>{COUNT_UNDETECTED} <dark_gray>❙ <white>Detected: <red>{COUNT_DETECTED} \n <dark_gray>▪ <white>Services: {LIST}\n "
# _ _ _ ___ __
# /_\ _ __ | |_(_/\ /\/ _ \/\ \ \
# //_\\| '_ \| __| \ \ / / /_)/ \/ /
# / _ | | | | |_| |\ V / ___/ /\ /
# \_/ \_|_| |_|\__|_| \_/\/ \_\ \/
#
# 🪓 Configure and customize VPN detection.
# This section allows you to configure and manage anti-VPN lists, which are used to perform
# checks when players join to determine if they are using a VPN. By default, several anti-VPN
# services are pre-configured for detection purposes.
antivpn:
# Specify the minimum number of services
# required to flag a player's IP as a VPN/proxy.
# - This value must be equal to or less than the
# number of enabled/created services.
max_flags: 3
# Change userAgent value in case is necessary.
# Recommended default:
# - 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11'
# Or:
# - 'FoxGate/plugin'
userAgent: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"
# Determine here the timeout to prevent any
# type of crash if the API is down, this help
# a lot in case an API dead or you use a
# service that is down.
# Use in milliseconds.
#
# (1500ms = 1.5s)
# (1000ms = 1.0s)
timeout: 1750
# Whitelist the detection to this name's.
# - Allow players in the list to bypass the detection of
# the antivpn. To disable this feature, use the value:
#
# whitelist-name: []
#
# (!) It's case sensetive!
whitelist-name:
- 'ImZowi' # It's me! :3
# Whitelist the detection to this IP's.
# - Allow ip's in the list to bypass the detection of
# the antivpn. To disable this feature, use the value:
#
# whitelist-ip: []
#
# (!) The value under is the default in localhost.
whitelist-ip:
- '127.0.0.1'
# Actions to make when is detected.
# - Use this to kick with the plugin instantly:
#
# - 'kick'
#
# Or add your custom command. Disable this feature
# with only adding 'actions: {}'.
actions:
- 'kick'
#- 'ipban %IP% Trying to access with %PLAYER% using a VPN.'
# List of services.
# You can create your check antivpn with:
#
# 'servicename':
# # Enable this service?
# enabled: true
# # Add this field in case requere key.
# key: "KEY"
# # Add the model to request the page, this
# # use JSON in case is invalid the value or
# # is not set.
# #
# # Supported:
# # JSON, HTML
# model: "JSON"
# # This field is necessary. Insert your
# # service URL.
# #
# # Remember:
# # %IP% = Return player's ip.
# # %KEY% = Return 'key' field value.
# url: "https://example-antivpn.com/check/%IP%?key=%KEY%"
# # Headers in case is necessary.
# #
# # Set to: 'headers: []' to disable or only don't
# # add in the settings for this service.
# headers:
# 'Example-header': 'KEY'
# # Values to check.
# # This equal is necessary to determine.
# values:
# # Fields to check.
# # In case you disable this with adding
# # 'fields: {}' to exclude and only get if
# # 'type' option contains in the final request.
# # This is a example.
# fields:
# - "vpn"
# # Type to determine.
# # If this return true/false, use "boolean", in case
# # this is string, only put string, example:
# #
# # type: 'yes'
# type: boolean
services:
# ⛽ IP-API
# 🔗 https://ip-api.com/
#
# 🛒 Details:
# - Unlimited requests, no key.
ipapi:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
url: "http://ip-api.com/json/%IP%?fields=status,message,proxy,hosting,query"
# Values to check.
values:
# Fields to check.
fields:
- "proxy"
- "hosting"
# Type to determine.
type: boolean
# ⛽ BlackBox
# 🔗 https://blackbox.ipinfo.app/
#
# 🛒 Details:
# - Unlimited requests, no key.
blackbox:
# Enable this service?
enabled: true
# Model request to use.
model: "HTML"
# URL.
url: "https://blackbox.ipinfo.app/lookup/%IP%"
# Values to check.
values:
# Fields to check.
fields: {}
# Type to determine.
type: "Y"
# ⛽ Rayzs DE
# 🔗 https://www.rayzs.de/
#
# 🛒 Details:
# - Unlimited requests, no key.
rayzsde:
# Enable this service?
enabled: true
# Model request to use.
model: "HTML"
# URL.
url: "https://www.rayzs.de/provpn/api/proxy.php/?a=%IP%"
# Values to check.
values:
# Fields to check.
fields: {}
# Type to determine.
type: boolean
# ⛽ SkyDB
# 🔗 http://ipcheck.skydb.de/
# WARNING: DISABLED BY DEFAULT BECAUSE THEIR BIG DELAY IN
# RESPONSE! ENABLE IT IF YOU REALLY WANT THIS.
#
# 🛒 Details:
# - Unlimited requests, no key.
skydb:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# URL.
url: "http://ipcheck.skydb.de/getinfo?ip=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "Hosting"
- "Proxy"
- "VPN"
- "TOR"
# Type to determine.
type: boolean
# ⛽ FunkeMunky
# 🔗 https://funkemunky.cc/
#
# 🛒 Details:
# - 20k montly requests, no key.
# - 150k-2Mo montly requests, paid account.
# - 200 minutly requests, paid account (unlimited).
funkemunky:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
# Use this for paid account:
# url: "https://funkemunky.cc/vpn?ip=%IP%&license=%KEY%&cached=USE_WEB_CACHE"
url: "https://funkemunky.cc/vpn?ip=%IP%"
# Insert your key here.
# You can use this field in case you
# has a paid account.
key: ""
# Values to check.
values:
# Fields to check.
fields:
- "proxy"
- "data_center"
- "vpn"
# Type to determine.
type: boolean
# ⛽ IPRisk
# 🔗 https://api.iprisk.info/
#
# 🛒 Details:
# - Unlimited requests, no key.
iprisk:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
url: "https://api.iprisk.info/v1/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "vpn"
- "data_center"
- "open_proxy"
# Type to determine.
type: boolean
# ⛽ IPdb-Amelia
# 🔗 https://ipdb.amelia.fun/
#
# 🛒 Details:
# - Unlimited requests, no key.
amelia:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# URL.
url: "https://ipdb.amelia.fun/query?address=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "result.types"
# Type to determine.
#
# Amelia provide list of types:
# https://ipdb.amelia.fun/types
type: ["3", "4", "6"]
# ⛽ IP2LOCATION
# 🔗 https://ip2location.io/
#
# 🛒 Details:
# 💼 https://ip2location.io/sign-up
#
# - 500 requests per day, no key, only proxy detection.
# - 30k montlhy requests, "free" plan, basic vpn detection.
# - 150k montlhy requests, "starter" plan, basic vpn detection.
# - 300k montlhy requests, "plus" plan, advanced vpn detection.
# - 600k montlhy requests, "security" plan, full vpn detection.
ip2location:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
#
# I changed here because if "key" parameters is
# in the URL, this make like this is trying to
# use a key. Delete '#' under and delete 'key: ""',
# remember to replace 'KEY' with your API key.
#key: "&key=KEY"
key: ""
# URL.
url: "https://api.ip2location.io/?ip=%IP%&format=json%KEY%"
# Values to check.
values:
# Fields to check.
# "is_proxy" only field if you don't has "Security" plan, the
# others if you pay 499$ for this...
fields:
- "is_proxy"
- "proxy.is_vpn"
- "proxy.is_tor"
- "proxy.is_public_proxy"
- "proxy.is_web_proxy"
- "proxy.is_web_crawler"
- "proxy.is_residential_proxy"
- "proxy.is_botnet"
- "proxy.is_spammer"
- "proxy.is_scanner"
- "proxy.is_consumer_privacy_network"
- "proxy.is_enterprise_private_network"
- "proxy.is_data_center"
# Type to determine.
type: boolean
# ⛽ FreeIPAPI
# 🔗 https://freeipapi.com/
#
# 🛒 Details:
# 📃 See more information in https://docs.freeipapi.com/request.html#authorization
# 🏷 Prices and usages: https://freeipapi.com/#pricing
# 💼 Login: https://freeipapi.com/register
#
# - 60 requests per minute, without key.
# - Unlimited requests, "premium" plan.
freeipapi:
# Enable this service?
enabled: true
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
#headers:
# 'Authorization': 'Bearer KEY'
#
# Remove comment from above to use key in case
# you has one.
headers: []
# URL.
url: "https://freeipapi.com/api/json/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "isProxy"
# Type to determine.
type: boolean
# ⛽ BanProxy
# 🔗 https://www.banproxy.com/
#
# 🛒 Details:
# 💼 https://banproxy.com/panel
#
# - 50 minutly requests, free account.
# - Unlimited requests, paid account.
banproxy:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://banproxy.com/api/%IP%/%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "proxy"
- "hosting"
# Type to determine.
type: boolean
# ⛽ GetIPIntel
# 🔗 https://getipintel.net/
#
# 🛒 Details:
# 💼 https://getipintel.net/free-proxy-vpn-tor-detection-api/#FAQ
#
# - 500 requests per day and 15 requests per minute - normal.
# - Unknowned requests with a "package".
getipintel:
# Enable this service?
# PLEASE, PUT A VALID "EMAIL" LIKE
# KEY TO USE THIS, OTHERWISE, THIS CAN
# BLOCK YOU (SOMETIMES, INSTANTLY).
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
# PLEASE, PUT A VALID "EMAIL" LIKE
# KEY TO USE THIS, OTHERWISE, THIS CAN
# BLOCK YOU (SOMETIMES, INSTANTLY).
key: ""
# URL.
url: "https://check.getipintel.net/check.php?ip=%IP%&contact=%KEY%&flags=m&format=json"
# Values to check.
values:
# Fields to check.
fields:
- "result"
# Type to determine.
type: '1'
# ⛽ VPN-API XYZ
# 🔗 https://vpn-api.xyz/
#
# 🛒 Details:
# 💼 https://vpn-api.xyz/dashboard
# 🔑 Autokey: https://vpn-api.xyz/getkey.php
#
# - Unlimited requests, key required.
vpn-apixyz:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://vpn-api.xyz/detector?key=%KEY%&host=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "is_proxy"
# Type to determine.
type: boolean
# ⛽ VPN Blocker
# 🔗 https://vpnblocker.net/
#
# 🛒 Details:
# 💼 https://vpnblocker.net/
#
# - 500 montlhy requests, no key/free.
# - Unlimited requests, paid.
vpnblocker:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'X-API-KEY': 'KEY'
# URL.
url: "https://api.vpnblocker.net/v2/json/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "host-ip"
# Type to determine.
type: boolean
# ⛽ IPQualityScore
# 🔗 https://www.ipqualityscore.com/
#
# 🛒 Details:
# 💼 https://www.ipqualityscore.com/user/dashboard
#
# - 5.000 monthly requests, free account.
# - 500k monthly requests, "SMB Basic" plan.
# - 1M monthly requests, "SMB Premium" plan.
# - 4M monthly requests, "SMB Enhanced" plan.
# - "CUSTOM" monthly requests, "Enterprise" plan.
ipqualityscore:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://ipqualityscore.com/api/json/ip/%KEY%/%IP%?strictness=0&allow_public_access_points=true"
# Values to check.
values:
# Fields to check.
# "bot_status" and "recent_abuse" can probably detect bots, I added for better detection in
# some services of VPN. If you get false flags of this, delete both values and try.
fields:
- "proxy"
- "vpn"
- "tor"
- "bot_status"
- "recent_abuse"
# Type to determine.
type: boolean
# ⛽ IDCTeam-API (👑 own API)
# 🔗 https://www.idcteam.xyz/discord
#
# 🛒 Details:
# 💼 https://www.idcteam.xyz/profile
#
# - 250 hours requests, free account.
# - Infinite hours requests, paid account.
idcteam:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# URL.
url: "https://api.idcteam.xyz/utils/checkip?ip=%IP%&key=%KEY%"
# Insert your key here.
# Don't delete this field!
key: ""
# Values to check.
values:
# Fields to check.
#
# 👑 Premium feature, in the future, read:
# (Future plan, for the moment, this can detect bot's and
# vpn's)
# This also can prevent some types of bots, if you use
# a legitimated copy of the plugin (paid), you can join
# to our discord server and get a key that detects
# bot's ips, also can unlock a completely feature that
# prevents requests when an attack on your server
# occurs.
fields:
- "proxy"
- "bot"
# Type to determine.
type: boolean
# ⛽ ProxyCheck
# 🔗 https://proxycheck.io/
#
# 🛒 Details:
# 💼 https://proxycheck.io/pricing
#
# - 100 daily requests, no key.
# - 1,000 daily requests, free account.
# - 10k-512m daily requests, paid account.
#
# WARNING! This use 2 requets, why? This use
# the field 'vpn=3' (3) to check for vpn and proxy,
# this in the DOCS say this use 2 request instead of
# 1, but this is because use value '3' to detect
# better VPNs and proxys. Set to '1' for only
# check 'VPN' or '2' to only check 'PROXY', and
# only use 1 request.
proxycheck:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://proxycheck.io/v2/%IP%?vpn=3&key=%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "%IP%.proxy"
- "%IP%.vpn"
# Type to determine.
type: "yes"
# ⛽ VPNAPI
# 🔗 https://vpnapi.io/
#
# 🛒 Details:
# 💼 https://vpnapi.io/signup
#
# - 100 daily requests, no key.
# - 1,000 daily requests, free account.
# - 10k-200k daily requests, paid account.
vpnapi:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Set empty to don't use one. Don't delete this field!
key: ""
# URL.
url: "https://vpnapi.io/api/%IP%?key=%KEY%"
# Values to check.
values:
# Fields to check.
fields:
- "security.vpn"
- "security.proxy"
- "security.tor"
- "security.relay"
# Type to determine.
type: boolean
# ⛽ ANTIVPN NET
# 🔗 https://www.antivpn.net/
#
# 🛒 Details:
# 💼 https://www.antivpn.net/account/
#
# - 10k requests, free account.
# - 1M-10M requests, paid account.
antivpnnet:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Insert your key here.
# Don't delete this field!
key: ""
# URL.
url: "https://antivpn.net/api/v1/lookup?ip=%IP%&key=%KEY%&format=-json"
# Values to check.
values:
# Fields to check.
fields:
- "is_proxy"
# Type to determine.
type: boolean
# ⛽ ANTIVPN IO
# 🔗 https://www.antivpn.io/
#
# 🛒 Details:
# 💼 https://dash.antivpn.io/
#
# - 15k mothly requests, free account.
# - 2M-10M montlhy requests, paid account.
antivpnio:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
# How to get a key here? Easy, when you
# create a server, this send you a command,
# you only need to copy the code (key) and
# replace 'KEY' for that code. REMOVE
# THE COMMAND NAME AND / WHEN YOU COPY!
#
# Example value:
# 'Bearer XXXXXXXX'
headers:
'Authorization': 'Bearer KEY'
# URL.
url: "https://connection.antivpn.io/check?ip=%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "VPN"
# Type to determine.
type: boolean
# ⛽ IPHub
# 🔗 https://iphub.info/
#
# 🛒 Details:
# 💼 https://iphub.info/login
#
# - 1,000 daily requests, free account.
# - 10k-200k daily requests, paid account.
iphub:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'X-Key': 'KEY'
# URL.
url: "https://v2.api.iphub.info/ip/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "block"
# Type to determine.
type: '1'
# ⛽ IPHunter
# 🔗 https://www.iphunter.info/
#
# 🛒 Details:
# 💼 https://www.iphunter.info/user/register
#
# - 1,000 daily requests, free account.
# - 60k-20M daily requests, paid account.
iphunter:
# Enable this service?
enabled: false
# Model request to use.
model: "JSON"
# Headers in case is necessary.
#
# Set to: 'headers: []' to disable.
headers:
'X-Key': 'KEY'
# URL.
url: "https://www.iphunter.info:8082/v1/ip/%IP%"
# Values to check.
values:
# Fields to check.
fields:
- "block"
# Type to determine.
type: '1'
# ___ _
# / _ \_ __ ___ _ __ ___ (_)_ _ _ __ ___ __/\__
# / /_)/ '__/ _ \ '_ ` _ \| | | | | '_ ` _ \ \ /
# / ___/| | | __/ | | | | | | |_| | | | | | | /_ _\
# \/ |_| \___|_| |_| |_|_|\__,_|_| |_| |_| \/
# Premium features, only available for paid users,
# this is here in case you purchase the premium
# version, so you avoid reset your currently config.yml
premium:
# Enable the usage of Discord Webhooks to send any alert's or
# messages if the player is vpn/proxy or if is allowed to connect
# to the server.
discord:
# Enter here the webhook URL, set to empty to
# disable this feature or add URL of webhook to
# enable this feature.
#
# See https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
# for how to use it.
webhook: ""
# Customize the messages.
# Remember! You utilize %NAME% to get the name of the
# player, %UUID% to get the UUID of the player and
# %IP% to get the IP of the player.
embed:
# Messages when the player is allowed to connect.
allowed:
# Determine here the content in the message.
# Set "" to disable the content.
content: ""
# Show thumbnail in the embed.
# Set "" to disable the content.
thumbnail: "https://api.tydiumcraft.net/v1/players/skin?uuid=%UUID%&type=avatar"
# Title of the fields.
name: "User"
uuid: "UUID"
ip: "IP"
# Determine here the color in decimal.
color: 5793266
# Prevent bots from joining to your server if this
# has any type of attack. This blocks connections and prevent
# making new requests. Normal players can join when this occurrs.
#
# This is based for small servers, if you server is bigger, please,
# configure better if you can.
antibot:
# Enable this feature?
enable: true
# Determine the maxium connections per second to start blocking these IP's.
max: 6
# Determine the time to continue blocking with this little shield that
# bots (in seconds).
timer: 10
# Buffer
# Configure here a little buffer to add more seconds if this continue.
# If you has disabled this feature, the antibot system is disabled only
# when timer ends. If you enable "buffer", this feature increase the time
# of the timer to still blocking.
buffer:
# Enable this feature?
enable: true
# Determine the maxium connections per second to
# increase more additional seconds to the timer.
max: 3
# Dertermine the time to add when "max" is reached
# and need to increase the timer. Remember, all in seconds.
add: 5
# Send to the console all details about the attacks?
log: true
# Add this IP's to the vpn list to avoid detection for X hours?
# (depend on your configuration)
blacklist: true
# Block that IP's from pinging the server?
# THIS FUNCTION REQUIRE PACKETEVENTS!
pinging: true
# Deny all.
# Configure here if you want block any join if still joining bots
# when reach X amount of joins (this has a count). This automatically
# blacklist connections for 1 hour, the count of connections is
# reseted when timer finish.
denyall:
# Enable this feature?
enable: true
# Determine the maxium connection to block any type of connection
# to the server (don't allow *ANY* connection from join).
maxium: 500
# List of urls with knowned proxies.
# Add list of proxies to save ips to the database, so this can be used
# to block connections of bots (the possible) and don't make requests.
list:
- "https://tcpshield.com/blocklist.txt"
- "https://check.torproject.org/torbulkexitlist?ip=1.1.1.1"
- "https://cinsscore.com/list/ci-badguys.txt"
- "https://lists.blocklist.de/lists/all.txt"
- "https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt"
- "https://raw.githubusercontent.com/clarketm/proxy-list/master/proxy-list-raw.txt"
- "https://raw.githubusercontent.com/scriptzteam/ProtonVPN-VPN-IPs/main/exit_ips.txt"
- "https://blocklist.greensnow.co/greensnow.txt"
- "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies.txt"
- "https://raw.githubusercontent.com/monosans/proxy-list/main/proxies/socks4.txt"
THIS UPDATE ONLY WORKS IN BACKEND, PROXY GO TO WILL BE SUPPORTED IN 1.0.5 (FINAL VERSION OF THIS PRE-VERSIONS). ALSO THIS VERSION REQUIRE RESET YOUR CONFIGURATION FILE FOR APPLY ALL NEW CHANGES!
Files
Metadata
Release channel
BetaVersion number
1.0.5-pre5Loaders
Game versions
1.7.2–1.21.4Downloads
26Publication date
January 15, 2025 at 10:50 PMPublisher

Zowi
Member