XeroAntiCheat v1.0.8 bug fixes
- SpiderCheck: fixed Location mutation bug - bodyBlock was reading y-1 (same as feetBlock) and headBlock was reading y instead of y+1. Now uses block coordinates directly. - ConfigManager: decay task no longer reads YamlConfiguration from background thread. decayRate is now volatile and refreshed on reload from main thread only. - JesusCheck, SpeedCheck, NoFallCheck: loc.subtract() now uses .clone() to prevent silent Location mutation. - VelocityCheck: decrementVelocityCheckTicks() moved past the minExpected threshold check to avoid consuming a tick on packets that are immediately discarded.
This commit is contained in:
57
.classpath
Normal file
57
.classpath
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="optional" value="true"/>
|
||||||
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
<attribute name="ignore_optional_problems" value="true"/>
|
||||||
|
<attribute name="m2e-apt" value="true"/>
|
||||||
|
<attribute name="test" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="target/classes"/>
|
||||||
|
</classpath>
|
||||||
52
.factorypath
Normal file
52
.factorypath
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<factorypath>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/io/papermc/paper/paper-api/1.21.1-R0.1-SNAPSHOT/paper-api-1.21.1-R0.1-SNAPSHOT.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/mojang/brigadier/1.2.9/brigadier-1.2.9.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/errorprone/error_prone_annotations/2.18.0/error_prone_annotations-2.18.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/md-5/bungeecord-chat/1.20-R0.2-deprecated+build.18/bungeecord-chat-1.20-R0.2-deprecated+build.18.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/yaml/snakeyaml/2.2/snakeyaml-2.2.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/joml/joml/1.10.5/joml-1.10.5.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/maven-resolver-provider/3.9.6/maven-resolver-provider-3.9.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/maven-model/3.9.6/maven-model-3.9.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/maven-model-builder/3.9.6/maven-model-builder-3.9.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/codehaus/plexus/plexus-interpolation/1.26/plexus-interpolation-1.26.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/maven-artifact/3.9.6/maven-artifact-3.9.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/maven-builder-support/3.9.6/maven-builder-support-3.9.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/eclipse/sisu/org.eclipse.sisu.inject/0.9.0.M2/org.eclipse.sisu.inject-0.9.0.M2.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/maven-repository-metadata/3.9.6/maven-repository-metadata-3.9.6.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-api/1.9.18/maven-resolver-api-1.9.18.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-spi/1.9.18/maven-resolver-spi-1.9.18.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-util/1.9.18/maven-resolver-util-1.9.18.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-impl/1.9.18/maven-resolver-impl-1.9.18.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-named-locks/1.9.18/maven-resolver-named-locks-1.9.18.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/codehaus/plexus/plexus-utils/3.5.1/plexus-utils-3.5.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-api/4.17.0/adventure-api-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-key/4.17.0/adventure-key-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/examination-api/1.3.0/examination-api-1.3.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/examination-string/1.3.0/examination-string-1.3.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/jetbrains/annotations/24.1.0/annotations-24.1.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-text-minimessage/4.17.0/adventure-text-minimessage-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-text-serializer-gson/4.17.0/adventure-text-serializer-gson-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-text-serializer-json/4.17.0/adventure-text-serializer-json-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/option/1.0.0/option-1.0.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/com/google/auto/service/auto-service-annotations/1.1.1/auto-service-annotations-1.1.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-text-serializer-legacy/4.17.0/adventure-text-serializer-legacy-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-text-serializer-plain/4.17.0/adventure-text-serializer-plain-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/net/kyori/adventure-text-logger-slf4j/4.17.0/adventure-text-logger-slf4j-4.17.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/checkerframework/checker-qual/3.33.0/checker-qual-3.33.0.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/ow2/asm/asm/9.7.1/asm-9.7.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/ow2/asm/asm-commons/9.7.1/asm-commons-9.7.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
<factorypathentry kind="VARJAR" id="M2_REPO/org/ow2/asm/asm-tree/9.7.1/asm-tree-9.7.1.jar" enabled="true" runInBatchMode="false"/>
|
||||||
|
</factorypath>
|
||||||
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
34
.project
Normal file
34
.project
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>xeroanticheat</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||||
|
</natures>
|
||||||
|
<filteredResources>
|
||||||
|
<filter>
|
||||||
|
<id>1773547794034</id>
|
||||||
|
<name></name>
|
||||||
|
<type>30</type>
|
||||||
|
<matcher>
|
||||||
|
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||||
|
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||||
|
</matcher>
|
||||||
|
</filter>
|
||||||
|
</filteredResources>
|
||||||
|
</projectDescription>
|
||||||
4
.settings/org.eclipse.core.resources.prefs
Normal file
4
.settings/org.eclipse.core.resources.prefs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
encoding//src/main/java=UTF-8
|
||||||
|
encoding//src/main/resources=UTF-8
|
||||||
|
encoding/<project>=UTF-8
|
||||||
4
.settings/org.eclipse.jdt.apt.core.prefs
Normal file
4
.settings/org.eclipse.jdt.apt.core.prefs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.apt.aptEnabled=true
|
||||||
|
org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations
|
||||||
|
org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations
|
||||||
9
.settings/org.eclipse.jdt.core.prefs
Normal file
9
.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
|
||||||
|
org.eclipse.jdt.core.compiler.compliance=21
|
||||||
|
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||||
|
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||||
|
org.eclipse.jdt.core.compiler.processAnnotations=enabled
|
||||||
|
org.eclipse.jdt.core.compiler.release=disabled
|
||||||
|
org.eclipse.jdt.core.compiler.source=21
|
||||||
4
.settings/org.eclipse.m2e.core.prefs
Normal file
4
.settings/org.eclipse.m2e.core.prefs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
activeProfiles=
|
||||||
|
eclipse.preferences.version=1
|
||||||
|
resolveWorkspaceProjects=true
|
||||||
|
version=1
|
||||||
82
dependency-reduced-pom.xml
Normal file
82
dependency-reduced-pom.xml
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.xeroth</groupId>
|
||||||
|
<artifactId>xeroanticheat</artifactId>
|
||||||
|
<name>XeroAntiCheat</name>
|
||||||
|
<version>1.0.8</version>
|
||||||
|
<description>Lightweight, accurate anti-cheat for Paper 1.21.x</description>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<finalName>${project.name}</finalName>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.13.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>21</source>
|
||||||
|
<target>21</target>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.6.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<relocations>
|
||||||
|
<relocation>
|
||||||
|
<pattern>net.kyori.adventure</pattern>
|
||||||
|
<shadedPattern>com.xeroth.xeroanticheat.adventure</shadedPattern>
|
||||||
|
</relocation>
|
||||||
|
<relocation>
|
||||||
|
<pattern>org.sqlite</pattern>
|
||||||
|
<shadedPattern>com.xeroth.xeroanticheat.sqlite</shadedPattern>
|
||||||
|
</relocation>
|
||||||
|
</relocations>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>papermc</id>
|
||||||
|
<url>https://repo.papermc.io/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>dmulloy2-repo</id>
|
||||||
|
<url>https://repo.dmulloy2.net/repository/public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.papermc.paper</groupId>
|
||||||
|
<artifactId>paper-api</artifactId>
|
||||||
|
<version>1.21.1-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.comphenix.protocol</groupId>
|
||||||
|
<artifactId>ProtocolLib</artifactId>
|
||||||
|
<version>5.3.0</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.target>21</maven.compiler.target>
|
||||||
|
<maven.compiler.source>21</maven.compiler.source>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
</project>
|
||||||
2
pom.xml
2
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.xeroth</groupId>
|
<groupId>com.xeroth</groupId>
|
||||||
<artifactId>xeroanticheat</artifactId>
|
<artifactId>xeroanticheat</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.0.8</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>XeroAntiCheat</name>
|
<name>XeroAntiCheat</name>
|
||||||
|
|||||||
@@ -231,6 +231,8 @@ public final class XeroAntiCheat extends JavaPlugin {
|
|||||||
public void reload() {
|
public void reload() {
|
||||||
configManager.loadConfig();
|
configManager.loadConfig();
|
||||||
violationManager.clearAll();
|
violationManager.clearAll();
|
||||||
|
violationManager.setDecayRate(
|
||||||
|
configManager.getDouble("violation.decay_rate", 0.5));
|
||||||
getLogger().info("Configuration reloaded!");
|
getLogger().info("Configuration reloaded!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ public class VelocityCheck extends Check {
|
|||||||
Vector expected = data.getLastServerVelocity();
|
Vector expected = data.getLastServerVelocity();
|
||||||
if (expected == null || data.getVelocityCheckTicks() <= 0) return;
|
if (expected == null || data.getVelocityCheckTicks() <= 0) return;
|
||||||
|
|
||||||
data.decrementVelocityCheckTicks();
|
|
||||||
|
|
||||||
double expectedHorizontal = Math.sqrt(
|
double expectedHorizontal = Math.sqrt(
|
||||||
expected.getX() * expected.getX() + expected.getZ() * expected.getZ());
|
expected.getX() * expected.getX() + expected.getZ() * expected.getZ());
|
||||||
|
|
||||||
@@ -45,6 +43,8 @@ public class VelocityCheck extends Check {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data.decrementVelocityCheckTicks();
|
||||||
|
|
||||||
PlayerData.PositionSnapshot curr = data.getLastPosition();
|
PlayerData.PositionSnapshot curr = data.getLastPosition();
|
||||||
PlayerData.PositionSnapshot prev = data.getSecondLastPosition();
|
PlayerData.PositionSnapshot prev = data.getSecondLastPosition();
|
||||||
if (curr == null || prev == null) return;
|
if (curr == null || prev == null) return;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class JesusCheck extends Check {
|
|||||||
|
|
||||||
// Get block below player
|
// Get block below player
|
||||||
Location loc = player.getLocation();
|
Location loc = player.getLocation();
|
||||||
Material blockBelow = loc.subtract(0, 1, 0).getBlock().getType();
|
Material blockBelow = loc.clone().subtract(0, 1, 0).getBlock().getType();
|
||||||
|
|
||||||
// Check if player is on water or lava
|
// Check if player is on water or lava
|
||||||
boolean onWater = blockBelow == Material.WATER;
|
boolean onWater = blockBelow == Material.WATER;
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class NoFallCheck extends Check {
|
|||||||
|
|
||||||
// Check for damage-reducing blocks
|
// Check for damage-reducing blocks
|
||||||
Location loc = player.getLocation();
|
Location loc = player.getLocation();
|
||||||
Material blockBelow = loc.subtract(0, 1, 0).getBlock().getType();
|
Material blockBelow = loc.clone().subtract(0, 1, 0).getBlock().getType();
|
||||||
|
|
||||||
// Blocks that reduce/cancel fall damage
|
// Blocks that reduce/cancel fall damage
|
||||||
if (blockBelow == Material.WATER ||
|
if (blockBelow == Material.WATER ||
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ public class SpeedCheck extends Check {
|
|||||||
|
|
||||||
// Soul sand slows
|
// Soul sand slows
|
||||||
Location loc = player.getLocation();
|
Location loc = player.getLocation();
|
||||||
Material blockBelow = loc.subtract(0, 1, 0).getBlock().getType();
|
Material blockBelow = loc.clone().subtract(0, 1, 0).getBlock().getType();
|
||||||
if (blockBelow == Material.SOUL_SAND || blockBelow == Material.SOUL_SOIL) {
|
if (blockBelow == Material.SOUL_SAND || blockBelow == Material.SOUL_SOIL) {
|
||||||
baseSpeed *= 0.75;
|
baseSpeed *= 0.75;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.xeroth.xeroanticheat.checks.movement;
|
|||||||
import com.xeroth.xeroanticheat.XeroAntiCheat;
|
import com.xeroth.xeroanticheat.XeroAntiCheat;
|
||||||
import com.xeroth.xeroanticheat.check.Check;
|
import com.xeroth.xeroanticheat.check.Check;
|
||||||
import com.xeroth.xeroanticheat.data.PlayerData;
|
import com.xeroth.xeroanticheat.data.PlayerData;
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@@ -47,17 +46,15 @@ public class SpiderCheck extends Check {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get blocks around player
|
// Get blocks around player using block coordinates (no Location mutation)
|
||||||
Location loc = player.getLocation();
|
org.bukkit.World world = player.getWorld();
|
||||||
|
int blockX = player.getLocation().getBlockX();
|
||||||
// Check block at feet
|
int blockY = player.getLocation().getBlockY();
|
||||||
Material feetBlock = loc.subtract(0, 1, 0).getBlock().getType();
|
int blockZ = player.getLocation().getBlockZ();
|
||||||
|
|
||||||
// Check block at body level
|
Material feetBlock = world.getBlockAt(blockX, blockY - 1, blockZ).getType();
|
||||||
Material bodyBlock = loc.getBlock().getType();
|
Material bodyBlock = world.getBlockAt(blockX, blockY, blockZ).getType();
|
||||||
|
Material headBlock = world.getBlockAt(blockX, blockY + 1, blockZ).getType();
|
||||||
// Check block above head
|
|
||||||
Material headBlock = loc.add(0, 1, 0).getBlock().getType();
|
|
||||||
|
|
||||||
// Check if any of these blocks are climbable
|
// Check if any of these blocks are climbable
|
||||||
boolean feetClimbable = isClimbable(feetBlock);
|
boolean feetClimbable = isClimbable(feetBlock);
|
||||||
|
|||||||
@@ -22,13 +22,17 @@ public class ViolationManager {
|
|||||||
private final Map<UUID, PlayerData> playerDataCache = new ConcurrentHashMap<>();
|
private final Map<UUID, PlayerData> playerDataCache = new ConcurrentHashMap<>();
|
||||||
private final MiniMessage miniMessage = MiniMessage.miniMessage();
|
private final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
|
||||||
private double decayRate;
|
private volatile double decayRate;
|
||||||
|
|
||||||
public ViolationManager(XeroAntiCheat plugin) {
|
public ViolationManager(XeroAntiCheat plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.decayRate = plugin.getConfigManager().getDouble("violation.decay_rate", 0.5);
|
this.decayRate = plugin.getConfigManager().getDouble("violation.decay_rate", 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDecayRate(double rate) {
|
||||||
|
this.decayRate = rate;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get or create player data for a player
|
* Get or create player data for a player
|
||||||
*/
|
*/
|
||||||
@@ -89,8 +93,6 @@ public class ViolationManager {
|
|||||||
* Decay all violation levels for all players
|
* Decay all violation levels for all players
|
||||||
*/
|
*/
|
||||||
public void decayAll() {
|
public void decayAll() {
|
||||||
decayRate = plugin.getConfigManager().getDouble("violation.decay_rate", 0.5);
|
|
||||||
|
|
||||||
for (PlayerData data : playerDataCache.values()) {
|
for (PlayerData data : playerDataCache.values()) {
|
||||||
for (String checkName : data.getViolationLevels().keySet()) {
|
for (String checkName : data.getViolationLevels().keySet()) {
|
||||||
data.decayViolation(checkName, decayRate);
|
data.decayViolation(checkName, decayRate);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name: XeroAntiCheat
|
name: XeroAntiCheat
|
||||||
version: 1.0.7
|
version: 1.0.8
|
||||||
main: com.xeroth.xeroanticheat.XeroAntiCheat
|
main: com.xeroth.xeroanticheat.XeroAntiCheat
|
||||||
author: Xeroth
|
author: Xeroth
|
||||||
description: Lightweight, accurate anti-cheat for Paper 1.21.x
|
description: Lightweight, accurate anti-cheat for Paper 1.21.x
|
||||||
|
|||||||
339
target/classes/config.yml
Normal file
339
target/classes/config.yml
Normal file
@@ -0,0 +1,339 @@
|
|||||||
|
# XeroAntiCheat Configuration File
|
||||||
|
# Version: 1.0.0
|
||||||
|
# Target: Paper 1.21.x (compatible with 1.20-1.22)
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# GENERAL SETTINGS
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Enable or disable the anti-cheat
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# Enable debug mode (logs additional information)
|
||||||
|
debug: false
|
||||||
|
|
||||||
|
# Number of async threads for background tasks
|
||||||
|
async_task_threads: 2
|
||||||
|
|
||||||
|
# Database settings
|
||||||
|
database:
|
||||||
|
# Set to false to disable SQLite logging (flat-file log always active)
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# VIOLATION SYSTEM
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
violation:
|
||||||
|
# Time in seconds between violation level decay
|
||||||
|
decay_interval: 30
|
||||||
|
|
||||||
|
# Amount to reduce VL by each decay interval
|
||||||
|
decay_rate: 0.5
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# CHECK CONFIGURATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
# Movement Checks
|
||||||
|
checks:
|
||||||
|
# ----------------------------------------
|
||||||
|
# SPEED CHECK
|
||||||
|
# Detects horizontal movement faster than possible
|
||||||
|
# ----------------------------------------
|
||||||
|
speed:
|
||||||
|
enabled: true
|
||||||
|
# Base maximum speed (blocks per tick)
|
||||||
|
max_speed: 0.56
|
||||||
|
# Ping compensation factor (scales latency leniency)
|
||||||
|
ping_factor: 1.0
|
||||||
|
# Number of ticks to buffer for rolling average
|
||||||
|
buffer_ticks: 5
|
||||||
|
# VL thresholds
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# FLY CHECK
|
||||||
|
# Detects flying without elytra/creative/spectator
|
||||||
|
# ----------------------------------------
|
||||||
|
fly:
|
||||||
|
enabled: true
|
||||||
|
# Number of ticks to allow for stepping/slabs
|
||||||
|
fall_buffer: 10
|
||||||
|
# Maximum ground desync ticks before flagging
|
||||||
|
ground_desync_threshold: 3
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# JESUS CHECK (NoWaterWalk)
|
||||||
|
# Detects walking on water without Frost Walker
|
||||||
|
# ----------------------------------------
|
||||||
|
jesus:
|
||||||
|
enabled: true
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# NOFALL CHECK
|
||||||
|
# Detects no fall damage after falling >3 blocks
|
||||||
|
# ----------------------------------------
|
||||||
|
nofall:
|
||||||
|
enabled: true
|
||||||
|
# Minimum fall distance to track
|
||||||
|
min_fall_distance: 3
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# TIMER CHECK (Blink/Packet Timer)
|
||||||
|
# Detects packet timing anomalies
|
||||||
|
# ----------------------------------------
|
||||||
|
timer:
|
||||||
|
enabled: true
|
||||||
|
# Maximum packets per second allowed
|
||||||
|
max_packets_per_second: 22
|
||||||
|
# Milliseconds of no packets before flagging blink
|
||||||
|
blink_threshold_ms: 500
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# SPIDER CHECK
|
||||||
|
# Detects climbing non-climbable blocks
|
||||||
|
# ----------------------------------------
|
||||||
|
spider:
|
||||||
|
enabled: true
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# GLIDE CHECK (ElytraHack)
|
||||||
|
# Detects glide-like movement without elytra
|
||||||
|
# ----------------------------------------
|
||||||
|
glide:
|
||||||
|
enabled: true
|
||||||
|
# Minimum horizontal speed for glide detection
|
||||||
|
min_horizontal_speed: 0.5
|
||||||
|
# Maximum Y decrease per tick for glide curve
|
||||||
|
max_y_decrease: 0.1
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# KILLAURA CHECK
|
||||||
|
# Detects impossible combat angles/rotations
|
||||||
|
# ----------------------------------------
|
||||||
|
killaura:
|
||||||
|
enabled: true
|
||||||
|
# Maximum angle in degrees from look direction
|
||||||
|
max_angle: 100
|
||||||
|
# Maximum rotation change between attacks
|
||||||
|
max_rotation_change: 45
|
||||||
|
# Window for multi-target detection (ms)
|
||||||
|
multitarget_window_ms: 100
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# REACH CHECK
|
||||||
|
# Detects attacking beyond reach
|
||||||
|
# ----------------------------------------
|
||||||
|
reach:
|
||||||
|
enabled: true
|
||||||
|
# Maximum reach in blocks (survival)
|
||||||
|
max_reach: 3.2
|
||||||
|
# Maximum reach in blocks (creative)
|
||||||
|
creative_max_reach: 5.0
|
||||||
|
# Ping compensation factor
|
||||||
|
ping_factor: 1.0
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# CRITICAL CHECK
|
||||||
|
# Detects critical hits without being airborne
|
||||||
|
# ----------------------------------------
|
||||||
|
critical:
|
||||||
|
enabled: true
|
||||||
|
# Allow legitimate jump-crits
|
||||||
|
allow_jump_crits: true
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# AUTOCLICKER CHECK
|
||||||
|
# Detects excessive CPS or perfect patterns
|
||||||
|
# ----------------------------------------
|
||||||
|
autoclicker:
|
||||||
|
enabled: true
|
||||||
|
# Maximum clicks per second
|
||||||
|
max_cps: 20
|
||||||
|
# Minimum variance (lower = more suspicious)
|
||||||
|
min_variance: 2.0
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# FASTPLACE CHECK
|
||||||
|
# Detects block placement too fast
|
||||||
|
# ----------------------------------------
|
||||||
|
fastplace:
|
||||||
|
enabled: true
|
||||||
|
# Maximum blocks per second
|
||||||
|
max_blocks_per_second: 20
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# PHASE CHECK
|
||||||
|
# Detects players clipping through solid blocks
|
||||||
|
# ----------------------------------------
|
||||||
|
phase:
|
||||||
|
enabled: true
|
||||||
|
# Minimum movement distance before ray-cast runs (blocks)
|
||||||
|
min_distance: 0.5
|
||||||
|
# Maximum movement delta — larger values are treated as teleports
|
||||||
|
max_distance: 5.0
|
||||||
|
warn_vl: 5
|
||||||
|
kick_vl: 15
|
||||||
|
tempban_vl: 30
|
||||||
|
permban_vl: 60
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# VELOCITY CHECK
|
||||||
|
# Detects players ignoring server-sent knockback (requires ProtocolLib)
|
||||||
|
# ----------------------------------------
|
||||||
|
velocity:
|
||||||
|
enabled: true
|
||||||
|
# Minimum server-sent velocity magnitude to check
|
||||||
|
min_expected_velocity: 0.15
|
||||||
|
# Player must move at least 20% of expected knockback
|
||||||
|
min_displacement_ratio: 0.2
|
||||||
|
warn_vl: 8
|
||||||
|
kick_vl: 20
|
||||||
|
tempban_vl: 40
|
||||||
|
permban_vl: 80
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# SCAFFOLD CHECK
|
||||||
|
# Detects automated scaffolding
|
||||||
|
# ----------------------------------------
|
||||||
|
scaffold:
|
||||||
|
enabled: true
|
||||||
|
# Minimum pitch angle for suspicious placement
|
||||||
|
min_pitch: 75
|
||||||
|
# Number of signals required to flag
|
||||||
|
signals_required: 2
|
||||||
|
# Signal 4: Max yaw change (degrees) between placements
|
||||||
|
rotation_lock_threshold: 2.0
|
||||||
|
# Signal 4: Min horizontal speed (blocks/tick) required
|
||||||
|
min_move_speed: 0.15
|
||||||
|
# Signal 5: StdDev below this triggers signal (too-perfect timing)
|
||||||
|
min_placement_variance_ms: 30.0
|
||||||
|
# Signal 5: Min blocks/sec before signal 5 is evaluated
|
||||||
|
min_bps_for_variance_check: 5
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# FASTEAT CHECK
|
||||||
|
# Detects eating faster than possible
|
||||||
|
# ----------------------------------------
|
||||||
|
fasteat:
|
||||||
|
enabled: true
|
||||||
|
# Maximum eating duration in ticks (32 = 1.6s)
|
||||||
|
max_eat_ticks: 32
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# INVENTORYMOVE CHECK
|
||||||
|
# Detects movement while inventory open
|
||||||
|
# ----------------------------------------
|
||||||
|
inventorymove:
|
||||||
|
enabled: true
|
||||||
|
warn_vl: 10
|
||||||
|
kick_vl: 25
|
||||||
|
tempban_vl: 50
|
||||||
|
permban_vl: 100
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# PUNISHMENT SETTINGS
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
punishments:
|
||||||
|
# Commands to execute for each punishment level
|
||||||
|
# Use %player% for player name, %reason% for reason
|
||||||
|
kick_command: "kick %player% &c[XAC] Illegal activity detected"
|
||||||
|
tempban_command: "tempban %player% 30d %reason%"
|
||||||
|
permban_command: "ban %player% %reason%"
|
||||||
|
|
||||||
|
# Default reason for bans
|
||||||
|
default_reason: "[XeroAntiCheat] Suspicious activity"
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# ALERT SYSTEM
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
alerts:
|
||||||
|
# Enable or disable alert broadcasts
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# Alert format (MiniMessage)
|
||||||
|
# Available placeholders: %player%, %check%, %vl%
|
||||||
|
format: "<dark_red>[<red>XAC<dark_red>] <white>%player% <red>failed <white>%check% <red>(VL: <white>%vl%<red>)"
|
||||||
|
|
||||||
|
# Staff-only alert format
|
||||||
|
staff_format: "<gray>[%time%] %message%"
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# COMMANDS
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
commands:
|
||||||
|
# Permission required for admin commands
|
||||||
|
reload_permission: "xac.admin"
|
||||||
|
# Permission to bypass all checks
|
||||||
|
bypass_permission: "xac.bypass"
|
||||||
|
# Permission to receive alerts
|
||||||
|
alerts_permission: "xac.alerts"
|
||||||
|
|
||||||
|
# ==========================================
|
||||||
|
# TPS COMPENSATION
|
||||||
|
# ==========================================
|
||||||
|
|
||||||
|
tps:
|
||||||
|
# Enable TPS-based threshold scaling
|
||||||
|
enabled: true
|
||||||
|
# Minimum TPS to apply compensation
|
||||||
|
min_tps_threshold: 18.0
|
||||||
185
target/classes/plugin.yml
Normal file
185
target/classes/plugin.yml
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
name: XeroAntiCheat
|
||||||
|
version: 1.0.8
|
||||||
|
main: com.xeroth.xeroanticheat.XeroAntiCheat
|
||||||
|
author: Xeroth
|
||||||
|
description: Lightweight, accurate anti-cheat for Paper 1.21.x
|
||||||
|
api-version: 1.21
|
||||||
|
softdepend:
|
||||||
|
- ProtocolLib
|
||||||
|
|
||||||
|
commands:
|
||||||
|
xac:
|
||||||
|
description: XeroAntiCheat main command
|
||||||
|
usage: /xac <reload|status|punish|clearviolations|verbose|alerts|version>
|
||||||
|
permission: xac.command.version
|
||||||
|
aliases: [xeroanticheat, anticheat]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
|
||||||
|
# ── Wildcards ────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
xac.*:
|
||||||
|
description: Grants all XeroAntiCheat permissions including bypass
|
||||||
|
default: false
|
||||||
|
children:
|
||||||
|
xac.admin: true
|
||||||
|
xac.bypass: true
|
||||||
|
|
||||||
|
xac.admin:
|
||||||
|
description: Grants all staff commands and alert access (does NOT grant bypass)
|
||||||
|
default: op
|
||||||
|
children:
|
||||||
|
xac.command.reload: true
|
||||||
|
xac.command.status: true
|
||||||
|
xac.command.punish: true
|
||||||
|
xac.command.clearviolations: true
|
||||||
|
xac.command.verbose: true
|
||||||
|
xac.command.alerts: true
|
||||||
|
xac.command.version: true
|
||||||
|
xac.alerts: true
|
||||||
|
|
||||||
|
# ── Commands ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
xac.command.reload:
|
||||||
|
description: Reload XAC configuration
|
||||||
|
default: op
|
||||||
|
|
||||||
|
xac.command.status:
|
||||||
|
description: View a player's violation levels and ping
|
||||||
|
default: op
|
||||||
|
|
||||||
|
xac.command.punish:
|
||||||
|
description: Manually trigger a punishment for a player
|
||||||
|
default: op
|
||||||
|
|
||||||
|
xac.command.clearviolations:
|
||||||
|
description: Clear all violation levels for a player
|
||||||
|
default: op
|
||||||
|
|
||||||
|
xac.command.verbose:
|
||||||
|
description: Toggle verbose per-flag output for a specific player
|
||||||
|
default: op
|
||||||
|
|
||||||
|
xac.command.alerts:
|
||||||
|
description: Toggle receiving anti-cheat alerts in chat
|
||||||
|
default: op
|
||||||
|
|
||||||
|
xac.command.version:
|
||||||
|
description: Show the plugin version
|
||||||
|
default: true
|
||||||
|
|
||||||
|
# ── Alerts ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
xac.alerts:
|
||||||
|
description: Receive alerts for all checks
|
||||||
|
default: op
|
||||||
|
children:
|
||||||
|
xac.alerts.movement: true
|
||||||
|
xac.alerts.combat: true
|
||||||
|
xac.alerts.misc: true
|
||||||
|
|
||||||
|
xac.alerts.movement:
|
||||||
|
description: Receive alerts for movement checks only
|
||||||
|
default: false
|
||||||
|
|
||||||
|
xac.alerts.combat:
|
||||||
|
description: Receive alerts for combat checks only
|
||||||
|
default: false
|
||||||
|
|
||||||
|
xac.alerts.misc:
|
||||||
|
description: Receive alerts for misc checks only
|
||||||
|
default: false
|
||||||
|
|
||||||
|
# ── Bypass ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
xac.bypass:
|
||||||
|
description: Bypass all anti-cheat checks
|
||||||
|
default: false
|
||||||
|
children:
|
||||||
|
xac.bypass.movement: true
|
||||||
|
xac.bypass.combat: true
|
||||||
|
xac.bypass.misc: true
|
||||||
|
|
||||||
|
xac.bypass.movement:
|
||||||
|
description: Bypass all movement checks
|
||||||
|
default: false
|
||||||
|
children:
|
||||||
|
xac.bypass.speed: true
|
||||||
|
xac.bypass.fly: true
|
||||||
|
xac.bypass.jesus: true
|
||||||
|
xac.bypass.nofall: true
|
||||||
|
xac.bypass.timer: true
|
||||||
|
xac.bypass.spider: true
|
||||||
|
xac.bypass.glide: true
|
||||||
|
xac.bypass.phase: true
|
||||||
|
|
||||||
|
xac.bypass.combat:
|
||||||
|
description: Bypass all combat checks
|
||||||
|
default: false
|
||||||
|
children:
|
||||||
|
xac.bypass.killaura: true
|
||||||
|
xac.bypass.reach: true
|
||||||
|
xac.bypass.critical: true
|
||||||
|
xac.bypass.autoclicker: true
|
||||||
|
xac.bypass.velocity: true
|
||||||
|
|
||||||
|
xac.bypass.misc:
|
||||||
|
description: Bypass all miscellaneous checks
|
||||||
|
default: false
|
||||||
|
children:
|
||||||
|
xac.bypass.fastplace: true
|
||||||
|
xac.bypass.scaffold: true
|
||||||
|
xac.bypass.fasteat: true
|
||||||
|
xac.bypass.inventorymove: true
|
||||||
|
|
||||||
|
xac.bypass.speed:
|
||||||
|
description: Bypass SpeedCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.fly:
|
||||||
|
description: Bypass FlyCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.jesus:
|
||||||
|
description: Bypass JesusCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.nofall:
|
||||||
|
description: Bypass NoFallCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.timer:
|
||||||
|
description: Bypass TimerCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.spider:
|
||||||
|
description: Bypass SpiderCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.glide:
|
||||||
|
description: Bypass GlideCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.phase:
|
||||||
|
description: Bypass PhaseCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.killaura:
|
||||||
|
description: Bypass KillAuraCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.reach:
|
||||||
|
description: Bypass ReachCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.critical:
|
||||||
|
description: Bypass CriticalCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.autoclicker:
|
||||||
|
description: Bypass AutoClickerCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.velocity:
|
||||||
|
description: Bypass VelocityCheck (requires ProtocolLib)
|
||||||
|
default: false
|
||||||
|
xac.bypass.fastplace:
|
||||||
|
description: Bypass FastPlaceCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.scaffold:
|
||||||
|
description: Bypass ScaffoldCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.fasteat:
|
||||||
|
description: Bypass FastEatCheck
|
||||||
|
default: false
|
||||||
|
xac.bypass.inventorymove:
|
||||||
|
description: Bypass InventoryMoveCheck
|
||||||
|
default: false
|
||||||
3
target/maven-archiver/pom.properties
Normal file
3
target/maven-archiver/pom.properties
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
artifactId=xeroanticheat
|
||||||
|
groupId=com.xeroth
|
||||||
|
version=1.0.8
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
com/xeroth/xeroanticheat/command/XACCommand$1Cmd.class
|
||||||
|
com/xeroth/xeroanticheat/data/PlayerData$PositionSnapshot.class
|
||||||
|
com/xeroth/xeroanticheat/check/Check.class
|
||||||
|
com/xeroth/xeroanticheat/listener/CombatListener.class
|
||||||
|
com/xeroth/xeroanticheat/XeroAntiCheat.class
|
||||||
|
com/xeroth/xeroanticheat/data/PlayerData$RotationSnapshot.class
|
||||||
|
com/xeroth/xeroanticheat/manager/DatabaseManager.class
|
||||||
|
com/xeroth/xeroanticheat/checks/misc/ScaffoldCheck.class
|
||||||
|
com/xeroth/xeroanticheat/protocol/PacketListener$2.class
|
||||||
|
com/xeroth/xeroanticheat/command/XACCommand.class
|
||||||
|
com/xeroth/xeroanticheat/manager/PunishmentManager.class
|
||||||
|
com/xeroth/xeroanticheat/checks/combat/VelocityCheck.class
|
||||||
|
com/xeroth/xeroanticheat/listener/MovementListener.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/SpiderCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/combat/AutoClickerCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/PhaseCheck.class
|
||||||
|
com/xeroth/xeroanticheat/protocol/PacketListener$1.class
|
||||||
|
com/xeroth/xeroanticheat/manager/ViolationManager.class
|
||||||
|
com/xeroth/xeroanticheat/checks/misc/FastEatCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/misc/InventoryMoveCheck.class
|
||||||
|
com/xeroth/xeroanticheat/protocol/PacketListener.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/JesusCheck.class
|
||||||
|
com/xeroth/xeroanticheat/manager/ConfigManager.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/SpeedCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/GlideCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/FlyCheck.class
|
||||||
|
com/xeroth/xeroanticheat/data/PlayerData$VelocitySnapshot.class
|
||||||
|
com/xeroth/xeroanticheat/manager/CheckManager.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/NoFallCheck.class
|
||||||
|
com/xeroth/xeroanticheat/protocol/PacketListener$3.class
|
||||||
|
com/xeroth/xeroanticheat/listener/MiscListener.class
|
||||||
|
com/xeroth/xeroanticheat/data/PlayerData.class
|
||||||
|
com/xeroth/xeroanticheat/checks/combat/ReachCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/misc/FastPlaceCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/movement/TimerCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/combat/CriticalCheck.class
|
||||||
|
com/xeroth/xeroanticheat/checks/combat/KillAuraCheck.class
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/XeroAntiCheat.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/check/Check.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/combat/AutoClickerCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/combat/CriticalCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/combat/KillAuraCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/combat/ReachCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/combat/VelocityCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/misc/FastEatCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/misc/FastPlaceCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/misc/InventoryMoveCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/misc/ScaffoldCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/FlyCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/GlideCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/JesusCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/NoFallCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/PhaseCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/SpeedCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/SpiderCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/checks/movement/TimerCheck.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/command/XACCommand.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/data/PlayerData.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/listener/CombatListener.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/listener/MiscListener.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/listener/MovementListener.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/manager/CheckManager.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/manager/ConfigManager.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/manager/DatabaseManager.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/manager/PunishmentManager.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/manager/ViolationManager.java
|
||||||
|
/home/axel/Músicas/Java/src/main/java/com/xeroth/xeroanticheat/protocol/PacketListener.java
|
||||||
Reference in New Issue
Block a user