EpicGuard

EpicGuard

Plugin

Bot protection system for Minecraft servers and proxies

Server LibraryManagementOptimizationTechnologyUtility

4,234 downloads
76 followers
Createda year ago
Updated4 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

🛡 EpicGuard

GitHub stars GitHub forks GitHub issues GitHub license Java CI

A simple AntiBot plugin for newest Minecraft versions.

✅ Supported platforms / Latest release requirements

✨ Features

  • A total of 8 configurable antibot checks:
    • Geographical check - country/city blacklist or whitelist.
    • VPN/Proxy check - configurable services and caching.
    • Nickname check - block certain nickname patterns using regex.
    • Reconnect check - require re-joining the server with an identical pair of address and nickname.
    • Server list check - require pinging the server before connecting (adding it to the server list).
    • Settings check - make sure that player sends a settings packet after joining (vanilla client behaviour).
    • Lockdown - temporarily block incoming connections if there are too many of them.
    • Name similarity check (BETA)
    • Account limit.
  • SQLite/MySQL support.
  • Live actionbar statistics.
  • Automatic whitelisting.
  • Console filter.

📚 Commands & Permissions

To be able to use commands, give yourself the epicguard.admin permission.
On different platforms there are additional aliases available, such as /guardvelocity or /epicguardpaper

Command Description
/guard help Displays all available commands.
/guard reload Reloads config and messages.
/guard whitelist <add/remove> <nick/address> Whitelist/unwhitelist an address or nickname.
/guard blacklist <add/remove> <nick/address> Blacklist/unblacklist an address or nickname.
/guard analyze <nick/address> Displays detailed information about the specified address or nickname.
/guard status Toggles live attack information on actionbar.
/guard save Forces save to the database.

🔧 Using EpicGuard API in your project:

The api is not very advanced, and there is not much you can do with it for now.

Gradle (Kotlin)
repositories {
    // Snapshots
    maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
    // Releases
    mavenCentral()
}
dependencies {
    compileOnly("com.github.4drian3d:epicguard-api:[VERSION HERE]")
}
Gradle (Groovy)
repositories {
    maven {
      url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
    }
  mavenCentral()
}
dependencies {
    compileOnly 'com.github.4drian3d:epicguard-api:[VERSION OR COMMIT ID HERE]'
}
Maven
  <repositories>
    <!-- Only for Snapshots-->
    <repository>
      <id>sonatype-oss-snapshots1</id>
      <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
    </repository>
  </repositories>
  <dependencies>
      <dependency>
         <groupId>com.github.4drian3d</groupId>
         <artifactId>epicguard-api</artifactId>
         <version>[VERSION HERE]</version>
         <scope>provided</scope>
     </dependency>
  </dependencies>
Using the API Make sure that EpicGuard is fully loaded before your plugin.

Click to see the API class

// Importing the API class.
import me.xneox.epicguard.core.EpicGuardAPI;
import me.xneox.epicguard.core.manager.AttackManager;
public class EpicGuardAPIExample {
  // Accessing the EpicGuardAPI instance.
  EpicGuardAPI api = EpicGuardAPI.INSTANCE;
  // Obtaining the AttackManager instance:
  AttackManager attackManager = api.attackManager();
  // Checking if server is under attack.
  boolean isUnderAttack = attackManager.isUnderAttack();
  // checking current connections per second.
  int cps = attackManager.connectionCounter();
  
  // Checking user's country:
  String countryId = api.geoManager().countryCode("127.0.0.1");
}

🕵️ Privacy disclaimers

  • This plugin connect to various external services, to fully work as intended.
    • MaxMind's Geolite2 databases (country and city) are downloaded at the first startup and updated every week. Geolocation of your users is checked locally on your server.
    • In the default configuration, IP addresses of connecting users are sent to https://proxycheck.io/ to check if they're not using a proxy or a VPN.
    • IPs and nicknames associated with them are stored in the local database (as plain text(!)).
    • This plugin periodically checks the latest version released in this repository. This feature can be disabled.
    • There is no metrics system or any other kind of data collection.

This is an updated version of EpicGuard for recent versions of Paper, Waterfall and Velocity.

External resources



Project members

4drian3d

Owner


Technical information

License
GPL-3.0-or-later
Project ID