Anti-VPN 4.8.30

Get the best; save money on overpriced plugins and block VPN users!

  1. egg82
    Native Minecraft Version:
    1.13
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    Source Code:
    https://github.com/egg82/AntiVPN
    antivpn.png

    Looking for the Bungee version? Find it here!
    Looking for the Velocity version? Find it here!

    playeripapi-installation-tab.png
    The first time Anti-VPN is run it will take some time to start up. this is normal, and will very rarely (if ever) take that long again.

    Wiki
    Installation instructions can be found on the wiki here. It it highly recommended to read the wiki.

    playeripapi-config-tab.png
    Confused? Check the wiki!
    Code (Text):
    # How the plugin stores long-term data
    storage:
      # The storage method
      #
      # Options:
      # - MySQL (remote)
      # - SQLite (local)
      method: 'sqlite'

      data:
        # Address and port of the remote database (if applicable)
        address: '127.0.0.1:3306'
        # The name of the database Anti-VPN will store data in
        # If you're using remote options, this must be created beforehand
        database: 'avpn'
        # Table prefix for all Anti-VPN tables
        prefix: 'antivpn_'
        # Database credentials (if applicable)
        username: ''
        password: ''
        # Whether or not to use SSL
        ssl: false

        # MongoDB options- obviously don't need to worry about these if not using MongoDB ;)
        mongodb:
          # Connection prefix for all Anti-VPN connections
          collection-prefix: ''
          # MongoDB ClientConnectionURI
          connection-uri: ''

      settings:
        # The maximum size of the database connection pool
        # Determines the max number of connections to the database
        max-pool-size: 2
        # The minimum size of the satabase connection pool
        # Determines the min number of connections kept alive to the database
        min-idle: 2
        # The maximum lifetime of a connection in the pool
        # Should be at least 30 seconds less than any database or infrastructure-imposed connection time limit
        max-lifetime: 1800000 # 30 minutes
        # The maximum number of milliseconds that the plugin will wait for a new connection from the pool before timing out
        timeout: 5000 # 5 seconds

        # Extra connection properties
        properties:
          unicode: true
          encoding: 'utf8'

    # Redis is a very fast cache accessible by multiple servers
    # If you don't want to constantly hit your database for queries, try enabling and configuring this
    # You will need to install the (external) Redis server software if you haven't already
    # https://redis.io/
    redis:
      enabled: false
      # Address and port of the remote Redis server
      address: '127.0.0.1:6379'
      # Redis credentials
      password: ''

    # RabbitMQ is a messaging queue that will allow the plugin to push instant updates across multiple servers
    # You will need to install the (external) RabbitMQ server software if you haven't already
    # https://www.rabbitmq.com/
    rabbitmq:
      enabled: false
      # Address and port of the remote RabbitMQ server
      address: '127.0.0.1:5672'
      # RabbitMQ credentials
      username: 'guest'
      password: 'guest'

    # Where VPN-checking sources are defined
    # Beware the more sources that are included (and fail) the worse the performance and the more the lag
    sources:
      # The amount of time to globally cache results across all sources
      # This should be as high as possible to avoid rate-limits but as low as possible to ensure results are always up-to-date and accurate
      cacheTime: '6hours'

      # The order to try results in
      order:
      - 'iphub'
      - 'proxycheck'
      - 'iphunter'
      - 'getipintel'
      - 'ipqualityscore'
      - 'vpnblocker'
      - 'teoh'
      - 'shodan'
      - 'ipwarner'

      # https://iphub.info/
      # Results updated Jul 7, 2019
      # Error rate: 0%
      # NordVPN detection rate: 85.71%
      # Cryptostorm detection rate: 100%
      # False-flagged homes: 0%
      iphub:
        enabled: false
        # API key to use (Required for this service, free one available at https://iphub.info/apiKey/newFree )
        key: ''
        # The block type at which an IP is considered "bad"
        block: 1

      # https://proxycheck.io
      # Results updated Jul 7, 2019
      # Error rate: 0%
      # NordVPN detection rate: 80.95%
      # Cryptostorm detection rate: 100%
      # False-flagged homes: 0%
      proxycheck:
        enabled: true
        # Optional API key to use
        key: ''

      # https://www.iphunter.info/
      # Results updated Jul 7, 2019
      # Error rate: 0%
      # NordVPN detection rate: 95.24%
      # Cryptostorm detection rate: 90%
      # False-flagged homes: 40%
      iphunter:
        enabled: false
        # API key to use (Required for this service, free one available at https://www.iphunter.info/user/register )
        key: ''
        # The block type at which an IP is considered "bad"
        block: 1

      # https://www.getipintel.net/
      # Results updated Sep 6, 2018
      # Error rate: 5%
      # NordVPN detection rate: 90.48%
      # Cryptostorm detection rate: 100%
      # False-flagged homes: 40%
      getipintel:
        enabled: true
        # Contact e-mail in case things go wrong. Required
        contact: '[email protected]'
        # Threshold above which an IP is considered "bad"
        threshold: 0.98

      # https://www.ipqualityscore.com/
      # Results updated Jul 7, 2019
      # Error rate: 0%
      # NordVPN detection rate: 90.48%
      # Cryptostorm detection rate: 90%
      # False-flagged homes: 40%
      ipqualityscore:
        enabled: false
        # API key to use (Required for this service, free one available at https://www.ipqualityscore.com/create-account )
        key: ''
        # Threshold above which an IP is considered "bad"
        threshold: 0.65

      # https://vpnblocker.net/usage
      # Results updated Jul 7, 2019
      # Error rate: 0%
      # NordVPN detection rate: 66.67%
      # Cryptostorm detection rate: 95%
      # False-flagged homes: 10%
      vpnblocker:
        enabled: true
        # Optional API key to use
        key: ''

      # https://ip.teoh.io/vpn-detection
      # Results updated Jul 7, 2019
      # Error rate: 10%
      # NordVPN detection rate: 61.90%
      # Cryptostorm detection rate: 100%
      # False-flagged homes: 0%
      teoh:
        enabled: true

      # https://www.shodan.io/
      # Results updated Jul 7, 2019
      # Error rate: 94.52%
      # NordVPN detection rate: 95.24%
      # Cryptostorm detection rate: 60%
      # False-flagged homes: 0%
      shodan:
        enabled: false
        # API key to use (Required for this service)
        key: ''

      # https://ipwarner.com/
      ipwarner:
        enabled: false
        # API key to use (Required for this service, free one available at https://ipwarner.com/register )
        key: ''

    action:
      # The kick message to display to players who are using VPNs
      # If left blank, will not kick the player
      kick-message: '&cPlease disconnect from your proxy or VPN before re-joining!'
      # The command that CONSOLE will run for players who are using VPNs
      # Use %player% as a placeholder for the player's (real) name
      # Use %uuid% as a placeholder for the player's uuid
      # If left blank, will not run anything
      command: ''

      algorithm:
        # The algorithm method
        #
        # Options:
        # - Cascade
        #   The plugin will go down the "sources" list, sequentially, until a valid source is found
        #   It will then query that source and return the result
        #   This will result in essentially "the first valid result" being returned
        # - Consensus
        #   The plugin will try every source in the "sources" list at once
        #   It will then strip invalid results, and calculate the ratio of results from the remaining sources
        #   This will result in essentially "the ratio of valid results" being returned
        method: 'cascade'

        # Only used for "consensus" mode
        # The minimum ratio of APIs that must agree before a player is kicked
        # For example, if set to "0.6" then at least 60% of sources must agree that the IP is a VPN
        # The value can range from 0 to 1, and will be clipped at those values
        min-consensus: 0.6

      # IPs to ignore when checking for VPNs
      ignore:
      - '127.0.0.1'
      - 'localhost'
      - '::1'

    # The amount of time to cache lookups in-memory
    # Higher values require more memory
    # Lower values will hit Redis/SQL/APIs more frequently
    # Generally the default is good enough to prevent many sequential lookups from choking resources, but still keep memory usage low
    cacheTime: '1minute'
    # When true, logs some extra output to the console so you can see if/why things might be failing
    debug: false
    # The number of threads to use for web operations
    threads: 4

    stats:
      # Whether or not to send anonymous usage statistics to bStats
      # True: Send anonymous stats; let the author know how well the plugin is doing and how it's used!
      # False: Do not send stats and make the author sad :(
      usage: true
      # Whether or not to send anonymous errors to the author
      # True: Send errors anonymously to Rollbar and/or GameAnalytics so the author can fix them!
      # False: Do not send errors and wonder why any bugs you encounter haven't beeen fixed
      errors: true

    update:
      # Whether or not to automatically check for updates and notify the console if found
      check: true
      # Whether or not to notify players with the avpn.admin permission node
      notify: true

    # Config version, no touchy plz
    version: 3.8
    playeripapi-commands-tab.png
    /avpn reload - Reloads the plugin configuration. This will disconnect and reconnect (if appropriate) any services configured in the config.yml file.
    /avpn test <ip> - Test an IP through the various (enabled) services. Note that this forces a check so will use credits every time it's run.
    /avpn check <ip> - Check an IP using the default system. This will return exactly the same value as any other API call.
    /avpn score <source> - Scores a particular source based on a pre-made list of known good and bad IPs. Note that this forces a check so will use credits every time it's run.

    playeripapi-permissions-tab.png
    avpn.admin - allows access to the /avpn reload, /avpn test, /avpn check, and /avpn score commands
    avpn.bypass - players with this node bypass the filter entirely

    playeripapi-donations-tab.png
    Please consider donating to support this free plugin!
    PP_logo_h_150x38.png

    playeripapi-legal-tab.png
    According to the GDPR, you must specify that you are storing IP information to your players in a privacy policy when using this plugin (actually you need that if you're running a vanilla server without this plugin because of server logs). Depending on how data provided from this API is used, you may be required to manually remove some data from the databases.
    Disclaimer: I am a plugin developer, not a lawyer. This information is provided as a "best guess" and is not legal advice.

    playeripapi-api-tab.png
    API documentation can be found on the wiki here.

    stopforumspam
    Error rate: 0%
    NordVPN detection rate: 38.1%
    Cryptostorm detection rate: 10%
    False-flagged homes: 0%

    ip2proxy (no servers)
    Error rate: 0%
    NordVPN detection rate: 28.57%
    Cryptostorm detection rate: 10%
    False-flagged homes: 0%

    ip2proxy (servers)
    Error rate: 0%
    NordVPN detection rate: 28.57%
    Cryptostorm detection rate: 15%
    False-flagged homes: 0%
    Lazo and hou19960228 like this.

Recent Reviews

  1. FendiTony777
    FendiTony777
    5/5,
    Version: 4.8.30
    I'm going to start the review saying that this is a life saver ! I've installed this since on my server there are almost 20 people online and recently I started to get some attacks. Of course this can't completely stop the attacks, but I got from getting my server crashed to only get some lag for 25 seconds. This is perfectly working and I haven't configured it yet!
    1. egg82
      Author's Response
      Thanks for the review! If you're having issues with bot accounts, it may be with giving AltFinder a shot as well :)
  2. NikitaTheGamer
    NikitaTheGamer
    5/5,
    Version: 4.8.30
    Best antivpn plugin I ever used. Its so much better then the built in anti proxy. But I would really like a auto updater
    1. egg82
      Author's Response
      Thanks! I'm just trying to make a decent service :)

      Auto-updaters are tricky. The plugin, by default, will alert you about updates. Anything more than that becomes a logistical nightmare that's far too easy to get wrong and take a server down with.
  3. SrDanyYT
    SrDanyYT
    5/5,
    Version: 4.8.30
    [15:16:18 ERROR]: Could not get connection from URLs provided.
    java.io.IOException: Could not get connection from URLs provided.
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getConnection(HTTPUtil.java:90) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getInputStream(HTTPUtil.java:125) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.DocumentUtil.getDocument(DocumentUtil.java:39) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.MavenUtil.getLatestVersion(MavenUtil.java:367) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.maven.Artifact.build(Artifact.java:225) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.maven.Artifact.access$1100(Artifact.java:18) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.maven.Artifact$Builder.build(Artifact.java:176) ~[?:?]
    at me.egg82.antivpn.BukkitBootstrap.buildInjectWait(BukkitBootstrap.java:277) ~[?:?]
    at me.egg82.antivpn.BukkitBootstrap.lambda$buildInject$0(BukkitBootstrap.java:272) ~[?:?]
    at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_201]
    Caused by: java.net.UnknownHostException: nexus.egg82.me
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at java.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.security.ssl.SSLSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.NetworkClient.doConnect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) ~[?:1.8.0_201]
    at java.net.HttpURLConnection.getResponseCode(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source) ~[?:1.8.0_201]
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getConnection(HTTPUtil.java:51) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getConnection(HTTPUtil.java:80) ~[?:?]
    ... 13 more
    [15:16:18 ERROR]: Could not get connection from URLs provided.
    java.io.IOException: Could not get connection from URLs provided.
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getConnection(HTTPUtil.java:90) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getInputStream(HTTPUtil.java:125) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.DocumentUtil.getDocument(DocumentUtil.java:39) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.MavenUtil.getLatestVersion(MavenUtil.java:367) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.maven.Artifact.build(Artifact.java:225) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.maven.Artifact.access$1100(Artifact.java:18) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.maven.Artifact$Builder.build(Artifact.java:176) ~[?:?]
    at me.egg82.antivpn.BukkitBootstrap.buildInjectWait(BukkitBootstrap.java:277) ~[?:?]
    at me.egg82.antivpn.BukkitBootstrap.lambda$buildInject$0(BukkitBootstrap.java:272) ~[?:?]
    at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_201]
    at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_201]
    Caused by: java.net.UnknownHostException: nexus.egg82.me
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at java.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.security.ssl.SSLSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.NetworkClient.doConnect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.http.HttpClient.openServer(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) ~[?:1.8.0_201]
    at java.net.HttpURLConnection.getResponseCode(Unknown Source) ~[?:1.8.0_201]
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source) ~[?:1.8.0_201]
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getConnection(HTTPUtil.java:51) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.utils.HTTPUtil.getConnection(HTTPUtil.java:80) ~[?:?]
    ... 13 more
    [15:16:25 ERROR]: com.mysql.cj.jdbc.Driver
    java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_201]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
    at me.egg82.antivpn.external.ninja.egg82.services.ProxiedURLClassLoader.loadClass(ProxiedURLClassLoader.java:84) ~[antivpn-bukkit-4.7.29.jar:?]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_201]
    at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_201]
    at me.egg82.antivpn.BukkitBootstrap.onLoad(BukkitBootstrap.java:76) [antivpn-bukkit-4.7.29.jar:?]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:297) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:198) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot.jar:git-Spigot-db6de12-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
    1. egg82
      Author's Response
      Thanks for the review! For future reference, issues will be solved faster on the GitHub here: https://github.com/egg82/AntiVPN/issues or the forum here: https://www.spigotmc.org/threads/anti-vpn.326682/

      This particular issue looks like a DNS misconfiguration or firewall issue. For reference, see the Wiki here which details installation prerequisites: https://github.com/egg82/AntiVPN/wiki/Installation#Requirements - specifically the part about the server its running on needing "access to the internet"
  4. RevengeForce
    RevengeForce
    5/5,
    Version: 4.7.29
    Good update but i have errors RROR [AntiVPN] {m.e.a.e.PlayerLoginCheckHandler} Cascade had no valid/usable sources.
    03.07 08:02:38 [Server] INFO me.egg82.antivpn.APIException: Cascade had no valid/usable sources.
    03.07 08:02:38 [Server] INFO at me.egg82.antivpn.services.InternalAPI.resultExpensive(InternalAPI.java:331)
    03.07 08:02:38 [Server] INFO at me.egg82.antivpn.services.InternalAPI.cascade(InternalAPI.java:132)
    03.07 08:02:38 [Server] INFO at me.egg82.antivpn.VPNAPI.cascade(VPNAPI.java:89)
    03.07 08:02:38 [Server] INFO at me.egg82.antivpn.VPNAPI.cascade(VPNAPI.java:79)
    03.07 08:02:38 [Server] INFO at me.egg82.antivpn.events.PlayerLoginCheckHandler.accept(PlayerLoginCheckHandler.java:69)
    03.07 08:02:38 [Server] INFO at me.egg82.antivpn.AntiVPN.lambda$loadEvents$4(AntiVPN.java:168)
    03.07 08:02:38 [Server] INFO at ninja.egg82.events.SingleEventSubscriber.call(SingleEventSubscriber.java:100)
    03.07 08:02:38 [Server] INFO at ninja.egg82.events.BukkitEventSubscriber.call(BukkitEventSubscriber.java:50)
    03.07 08:02:38 [Server] INFO at ninja.egg82.events.BukkitEventSubscriber.lambda$new$0(BukkitEventSubscriber.java:31)
    03.07 08:02:38 [Server] INFO at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78)
    03.07 08:02:38 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    03.07 08:02:38 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:513)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.PlayerList.attemptLogin(PlayerList.java:565)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.LoginListener.b(LoginListener.java:152)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.LoginListener.e(LoginListener.java:68)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.NetworkManager.a(NetworkManager.java:273)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.ServerConnection.c(ServerConnection.java:150)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:948)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774)
    03.07 08:02:38 [Server] INFO at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666)
    03.07 08:02:38 [Server] INFO at java.lang.Thread.run(Thread.java:748)
    1. egg82
      Author's Response
      Thanks for the review! For future reference, issues will be solved faster on the GitHub here: https://github.com/egg82/AntiVPN/issues or the forum here: https://www.spigotmc.org/threads/anti-vpn.326682/

      The error you're seeing is telling you that you've run out of free "credits" with the sources you have currently enabled.

      Try enabling more sources in the config and/or getting API keys from the various sources using the links provided in the config.
  5. IllumaintFish
    IllumaintFish
    5/5,
    Version: 4.6.24
    Looks like no one has reviewed this resource in a while so I'll do it now.
    I like that you use multiple APIs to get a valid score however it would be even cooler if you relied on your own API and also IPWarner's API SSL Certificate has issues so therefor the IPWarner API doesn't work in the latest version xD
    1. egg82
      Author's Response
      Thanks for the review! I notified the owners of IPWarner of their certificate issues, so hopefully they'll fix that soon!

      Unfortunately I don't have the resources to create my own API/service and it wouldn't be as good as some of the better services the plugin already uses.
  6. The.Phoenix
    The.Phoenix
    5/5,
    Version: 3.5.22
    nice plugin would be nice to see whitelist feature. .
    1. egg82
      Author's Response
      There's two, in fact! The permission node "avpn.bypass" allows a player to bypass the plugin check (preferred) and there's an "ignore" list in the config.yml

      Thank you for the review!
  7. C0mmunity
    C0mmunity
    5/5,
    Version: 3.5.22
    10/10 plugin it's great and it has lots of good features and i dont want people already banned joining
    1. egg82
      Author's Response
      Thanks for the review!
  8. GoroKun
    GoroKun
    5/5,
    Version: 3.5.22
    very nice plugin

    btw how to add enter in kick message?
    ________________________
    1. egg82
      Author's Response
      Thank you for the review!
      You can change the kick message in the config.yml :)
  9. QTheManiac
    QTheManiac
    5/5,
    Version: 3.5.20
    Neat plugin, detects most vpn's
    But for some reason its not kicking
    players with vpns's
    1. egg82
      Author's Response
      By default it will kick them, unless the config is changed. It won't perfectly detect every VPN, but uses consensus mode with enough services it should be very accurate.

      Try enabling debug mode in the config to see what may be going wrong/why it's not kicking players. If you still don't know, then send me the output and any errors in a PM and I'll take a look!

      Thank you for the review!
  10. tofonek
    tofonek
    3/5,
    Version: 3.5.18
    good plugin but in console this error:
    [20:15:21 ERROR]: Could not pass event AsyncPlayerPreLoginEvent to AntiVPN v3.5.18
    java.lang.NullPointerException
    at me.egg82.antivpn.apis.IPDetectorAPI.getResult(IPDetectorAPI.java:46) ~[?:?]
    at me.egg82.antivpn.services.InternalAPI.resultExpensive(InternalAPI.java:219) ~[?:?]
    at me.egg82.antivpn.services.InternalAPI.lambda$cascade$2(InternalAPI.java:96) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2039) ~[?:?]
    at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853) ~[?:1.8.0_181]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2037) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2020) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:112) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:54) ~[?:?]
    at me.egg82.antivpn.services.InternalAPI.cascade(InternalAPI.java:96) ~[?:?]
    at me.egg82.antivpn.VPNAPI.cascade(VPNAPI.java:155) ~[?:?]
    at me.egg82.antivpn.VPNAPI.cascade(VPNAPI.java:133) ~[?:?]
    at me.egg82.antivpn.events.AsyncPlayerPreLoginCacheHandler.accept(AsyncPlayerPreLoginCacheHandler.java:50) ~[?:?]
    at me.egg82.antivpn.AntiVPN.lambda$loadEvents$13(AntiVPN.java:282) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.events.SingleEventSubscriber.call(SingleEventSubscriber.java:96) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.events.BukkitEventSubscriber.call(BukkitEventSubscriber.java:50) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.events.BukkitEventSubscriber.lambda$new$0(BukkitEventSubscriber.java:31) ~[?:?]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[server.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [server.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.LoginListener$LoginHandler.fireEvents(LoginListener.java:248) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.LoginListener$2.run(LoginListener.java:172) [server.jar:git-Spigot-21fe707-e1ebe52]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
    [20:15:21 INFO]: UUID of player NolDys is 629f095a-01c0-3cb4-9936-f1aff96c87b6
    [20:15:22 ERROR]: Could not pass event PlayerLoginEvent to AntiVPN v3.5.18
    java.lang.NullPointerException
    at me.egg82.antivpn.apis.IPDetectorAPI.getResult(IPDetectorAPI.java:46) ~[?:?]
    at me.egg82.antivpn.services.InternalAPI.resultExpensive(InternalAPI.java:219) ~[?:?]
    at me.egg82.antivpn.services.InternalAPI.lambda$cascade$2(InternalAPI.java:96) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2039) ~[?:?]
    at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853) ~[?:1.8.0_181]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2037) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2020) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:112) ~[?:?]
    at me.egg82.antivpn.external.com.github.benmanes.caffeine.cache.LocalManualCache.get(LocalManualCache.java:54) ~[?:?]
    at me.egg82.antivpn.services.InternalAPI.cascade(InternalAPI.java:96) ~[?:?]
    at me.egg82.antivpn.VPNAPI.cascade(VPNAPI.java:155) ~[?:?]
    at me.egg82.antivpn.VPNAPI.cascade(VPNAPI.java:133) ~[?:?]
    at me.egg82.antivpn.events.PlayerLoginCheckHandler.accept(PlayerLoginCheckHandler.java:65) ~[?:?]
    at me.egg82.antivpn.AntiVPN.lambda$loadEvents$14(AntiVPN.java:283) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.events.SingleEventSubscriber.call(SingleEventSubscriber.java:96) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.events.BukkitEventSubscriber.call(BukkitEventSubscriber.java:50) ~[?:?]
    at me.egg82.antivpn.external.ninja.egg82.events.BukkitEventSubscriber.lambda$new$0(BukkitEventSubscriber.java:31) ~[?:?]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[server.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [server.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.PlayerList.attemptLogin(PlayerList.java:456) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.LoginListener.b(LoginListener.java:118) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.LoginListener.c(LoginListener.java:54) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.NetworkManager.a(NetworkManager.java:231) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.ServerConnection.c(ServerConnection.java:148) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:814) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [server.jar:git-Spigot-21fe707-e1ebe52]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
    [20:15:22 INFO]: Spravce NolDys se pripojil/a
    [20:15:22 INFO]: NolDys[/188.175.61.3:15158] logged in with entity id 826 at ([spawn]704.1413353606608, 4.0, -1040.1405930645697)
    [20:15:22 WARN]: [FirstJoinPlus] Task #3866 for FirstJoinPlus v2.4.1 generated an exception
    java.lang.IllegalArgumentException: No enum constant org.bukkit.Sound.ENTITY_PLAYER_LEVELUP
    at java.lang.Enum.valueOf(Enum.java:238) ~[?:1.8.0_181]
    at org.bukkit.Sound.valueOf(Sound.java:1) ~[server.jar:git-Spigot-21fe707-e1ebe52]
    at com.chaseoes.firstjoinplus.FirstJoinListener$1.run(FirstJoinListener.java:59) ~[?:?]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[server.jar:git-Spigot-21fe707-e1ebe52]
    at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [server.jar:git-Spigot-21fe707-e1ebe52]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [server.jar:git-Spigot-21fe707-e1ebe52]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
    1. egg82
      Author's Response
      Thank you for the report, but please next time try the forums or the GitHub page :)
      Should be fixed in the next version.