Описание
# 🛡 EpicGuard
[](https://github.com/4drian3d/EpicGuard/stargazers) [](https://github.com/4drian3d/EpicGuard/network) [](https://github.com/4drian3d/EpicGuard/issues) [](https://github.com/4drian3d/EpicGuard/blob/master/LICENSE) [](https://github.com/4drian3d/EpicGuard/actions/workflows/gradle.yml) 
A simple AntiBot plugin for newest Minecraft versions.
## ✅ Supported platforms / Latest release requirements
* [Paper 1.20.1+](https://papermc.io/) *(all paper forks are supported)*
* [Velocity 3.3+](https://papermc.io/software/velocity)
* Java **17**
## ✨ 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.
[](https://www.bisecthosting.com/4drian3d?r=ModEpicGuard)
## 📚 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 | Whitelist/unwhitelist an address or nickname. |
| /guard blacklist | Blacklist/unblacklist an address or nickname. |
| /guard analyze | 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)
```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)
```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
```xml
sonatype-oss-snapshots1
https://s01.oss.sonatype.org/content/repositories/snapshots/
com.github.4drian3d
epicguard-api
[VERSION HERE]
provided
```
Using the API
Make sure that EpicGuard is fully loaded before your plugin.
[Click to see the API class](https://github.com/4drian3d/EpicGuard/blob/master/core/src/main/java/me/xneox/epicguard/core/EpicGuardAPI.java)
```java
// 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](https://dev.maxmind.com/geoip/geoip2/geolite2) (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](https://github.com/awumii/EpicGuard#%EF%B8%8F-maintained-fork-can-be-found-at-httpsgithubcom4drian3depicguard) of EpicGuard for recent versions of Paper, Waterfall and Velocity.