diff --git a/README.md b/README.md
index f0e9f8a..311f882 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,13 @@
Lightweight, accurate anti-cheat for Paper 1.21.x
+## Latest Updates (v1.1.3)
+
+- **SpeedCheck**: `tps.min_tps_threshold` and `tps.enabled` config keys now actually work — previously hardcoded as `18.0` and always-on.
+- **config.yml**: Removed orphaned `async_task_threads` key and entire `commands:` section — these were never read by the plugin.
+- **PunishmentManager**: `database.enabled: false` now correctly disables SQLite punishment logging as documented.
+- **PacketListener**: Removed three unreachable fallback methods (`updatePacketTiming`, `recordClick`, `recordAttack`) — dead code since v1.0.4.
+
## Latest Updates (v1.1.2)
- **reload**: `violation.decay_interval` changes now take effect immediately — the decay task is cancelled and recreated on every `/xac reload`.
diff --git a/pom.xml b/pom.xml
index 6f75965..c8804c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.xeroth
xeroanticheat
- 1.1.2
+ 1.1.3
jar
XeroAntiCheat
diff --git a/src/main/java/com/xeroth/xeroanticheat/checks/movement/SpeedCheck.java b/src/main/java/com/xeroth/xeroanticheat/checks/movement/SpeedCheck.java
index b4c2974..58ef5e3 100644
--- a/src/main/java/com/xeroth/xeroanticheat/checks/movement/SpeedCheck.java
+++ b/src/main/java/com/xeroth/xeroanticheat/checks/movement/SpeedCheck.java
@@ -53,8 +53,12 @@ public class SpeedCheck extends Check {
double speed = horizontalDistance / (timeDelta / 50.0);
// Get server TPS
- double tps = org.bukkit.Bukkit.getTPS()[0];
- double tpsMultiplier = 20.0 / Math.max(tps, 18.0);
+ double tpsMultiplier = 1.0;
+ if (plugin.getConfigManager().getBoolean("tps.enabled", true)) {
+ double tps = org.bukkit.Bukkit.getTPS()[0];
+ double minTps = plugin.getConfigManager().getDouble("tps.min_tps_threshold", 18.0);
+ tpsMultiplier = 20.0 / Math.max(tps, minTps);
+ }
// Calculate max speed based on player state
double maxSpeed = calculateMaxSpeed(player, data);
diff --git a/src/main/java/com/xeroth/xeroanticheat/manager/ConfigManager.java b/src/main/java/com/xeroth/xeroanticheat/manager/ConfigManager.java
index 6321705..b584c97 100644
--- a/src/main/java/com/xeroth/xeroanticheat/manager/ConfigManager.java
+++ b/src/main/java/com/xeroth/xeroanticheat/manager/ConfigManager.java
@@ -27,7 +27,6 @@ public class ConfigManager {
// General
DEFAULTS.put("enabled", true);
DEFAULTS.put("debug", false);
- DEFAULTS.put("async_task_threads", 2);
// Violation
DEFAULTS.put("violation.decay_interval", 30);
@@ -172,11 +171,6 @@ public class ConfigManager {
DEFAULTS.put("alerts.staff_format", "[%time%] %message%");
DEFAULTS.put("alerts.cooldown_ms", 5000);
- // Commands
- DEFAULTS.put("commands.reload_permission", "xac.admin");
- DEFAULTS.put("commands.bypass_permission", "xac.bypass");
- DEFAULTS.put("commands.alerts_permission", "xac.alerts");
-
// TPS
DEFAULTS.put("tps.enabled", true);
DEFAULTS.put("tps.min_tps_threshold", 18.0);
diff --git a/src/main/java/com/xeroth/xeroanticheat/manager/PunishmentManager.java b/src/main/java/com/xeroth/xeroanticheat/manager/PunishmentManager.java
index 3b12675..dab874f 100644
--- a/src/main/java/com/xeroth/xeroanticheat/manager/PunishmentManager.java
+++ b/src/main/java/com/xeroth/xeroanticheat/manager/PunishmentManager.java
@@ -207,7 +207,8 @@ public class PunishmentManager {
}
DatabaseManager db = plugin.getDatabaseManager();
- if (db != null && db.isAvailable()) {
+ boolean dbEnabled = plugin.getConfigManager().getBoolean("database.enabled", true);
+ if (db != null && db.isAvailable() && dbEnabled) {
db.insertPunishment(timestamp, type, playerUuid, playerName, checkName, vl);
}
});
diff --git a/src/main/java/com/xeroth/xeroanticheat/protocol/PacketListener.java b/src/main/java/com/xeroth/xeroanticheat/protocol/PacketListener.java
index 947cd81..3769ef0 100644
--- a/src/main/java/com/xeroth/xeroanticheat/protocol/PacketListener.java
+++ b/src/main/java/com/xeroth/xeroanticheat/protocol/PacketListener.java
@@ -152,56 +152,6 @@ public class PacketListener {
return protocolLibAvailable;
}
- /**
- * Update packet timing (called from event listeners when ProtocolLib unavailable)
- */
- public void updatePacketTiming(Player player) {
- if (protocolLibAvailable) {
- return;
- }
-
- PlayerData data = plugin.getViolationManager().getPlayerData(player);
- if (data == null) return;
-
- long now = System.currentTimeMillis();
- data.setLastMovePacketTime(now);
-
- if (now - data.getLastPacketCountReset() > 1000) {
- data.setPacketsThisSecond(0);
- data.setLastPacketCountReset(now);
- }
- data.incrementPacketsThisSecond();
- }
-
- /**
- * Record click (called from event listeners when ProtocolLib unavailable)
- */
- public void recordClick(Player player) {
- if (protocolLibAvailable) {
- return;
- }
-
- PlayerData data = plugin.getViolationManager().getPlayerData(player);
- if (data != null) {
- data.addClick();
- }
- }
-
- /**
- * Record attack (called from event listeners when ProtocolLib unavailable)
- */
- public void recordAttack(Player player, java.util.UUID entityUuid) {
- if (protocolLibAvailable) {
- return;
- }
-
- PlayerData data = plugin.getViolationManager().getPlayerData(player);
- if (data != null) {
- data.addAttack(entityUuid);
- data.setLastAttackYaw(player.getLocation().getYaw());
- }
- }
-
/**
* Unregister all packet listeners
*/
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index d9b15e0..ec80946 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -12,9 +12,6 @@ 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)
@@ -319,18 +316,6 @@ alerts:
# Default: 5000ms (5 seconds). Set to 0 to disable throttling.
cooldown_ms: 5000
-# ==========================================
-# 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
# ==========================================
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 9b5b9cc..b363e8d 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: XeroAntiCheat
-version: 1.1.2
+version: 1.1.3
main: com.xeroth.xeroanticheat.XeroAntiCheat
author: Xeroth
description: Lightweight, accurate anti-cheat for Paper 1.21.x