Tags
Creators
Details
0.16
Compatibility
Changes
DakotaAC Structured Changelog
This document summarizes the main changes and optimizations made to each module of the DakotaAC plugin, categorized by Added, Fixed, and Removed.
Movement Modules
-
Sneak- Added:
- Delay mechanism before speed check, using
PlayerToggleSneakEvent. HashMapto manage player sneak start times.PlayerQuitEventhandler to clear player data.- English comments and explanations (Follow-up).
- Delay mechanism before speed check, using
- Fixed:
- Optimized speed calculation using
lengthSquared()instead oflength().
- Optimized speed calculation using
- Added:
-
Fly- Added:
PlayerFlyDataclass for detailed flight state storage.- Grace period after teleports.
- Detection for unjustified rapid ascent and prolonged slow ascent/hovering.
- Improved helper methods for ground, solid block, liquid, and climbable checks.
- "Pull down" action on detection.
- Requirement for main plugin instance injection for task scheduling.
- Fixed:
- Refined logic to ignore players with legitimate flight permissions (Creative, Spectator,
/fly, elytra, Levitation).
- Refined logic to ignore players with legitimate flight permissions (Creative, Spectator,
- Added:
-
HighJump- Added:
- Tracking of height from last ground position (
lastOnGroundY) and jump start block. - Dynamic calculation of max allowed jump height, adjusted for
PotionEffectType.JUMP_BOOSTandSLIME_BLOCK. - General tolerance for jump calculations.
- Exclusions for game modes, flying, gliding, and a grace period after teleportation.
- Tracking of height from last ground position (
- Fixed:
- On detection, player is teleported to previous XZ at the Y height where the jump started (more precise rollback).
- Added:
-
InventoryMove- Added:
PlayerInventoryDataclass (open time, last check location, last click time).- Grace period after opening an inventory.
- Teleportation management for state reset.
- Extended detection to any type of open GUI, including the player's own inventory (Follow-up).
- Fixed:
- Refined monitoring logic on
InventoryOpenEventandPlayerMoveEventfor all GUI types. - Multiple exclusions (Creative, Spectator, vehicle, flying, gliding, Levitation, falling).
- Detection logic based on significant movement + recent inventory click.
- Refined monitoring logic on
- Added:
-
Jesus- Added:
PlayerWaterDataclass (last check location, ticks on water surface, last teleport time).- Grace period after teleportation.
- Refined
isPlayerExploitingWaterSurfacemethod (checks feet at water level, head above water). - Detection based on maintaining a constant vertical level on water + exceeding horizontal speed threshold.
- Fixed:
- Exclusions for legitimate water movement/states (Creative, Spectator, flying, vehicle, Levitation, Dolphin's Grace, Lily Pad).
- Logic to ignore players who are legitimately swimming.
- Added:
-
NoSlowDown- Added:
- Unified speed threshold for slowdown actions (
SLOWDOWN_ACTION_SPEED_THRESHOLD_SQUARED). - Detection for item consumption/use slowdowns via
player.isBlocking()and item type check. - Immediate alert if sprinting during a slowdown action.
- Unified speed threshold for slowdown actions (
- Fixed:
- Exclusions for Creative, Spectator, flying, vehicle, and
PotionEffectType.SPEED. - Teleport action on detection (previous XZ, current Y).
- Optimized speed calculation (using squared values).
- Exclusions for Creative, Spectator, flying, vehicle, and
- Added:
-
NoWeb- Added:
- Robust cobweb presence detection (
isInCobwebchecks feet, center, head). - Immediate alert on sprint in cobweb.
- Robust cobweb presence detection (
- Fixed:
- Realistic speed threshold (
COBWEB_SPEED_THRESHOLD_SQUARED) and optimized calculation (usingdistanceSquared). - Exclusions for Creative, Spectator, flying, vehicle, and
PotionEffectType.SPEED. - Teleport action on detection (previous XZ, current Y).
- Realistic speed threshold (
- Added:
-
Speed- Added:
PlayerSpeedDataclass (detailed state tracking).- Detailed speed constants for various states (walk/sprint, ground/air, jump bonus).
- Multipliers for blocks affecting speed (ice, soul sand, honey block) (Follow-up).
- Handler for
PlayerTeleportEventto reset data (Follow-up).
- Fixed:
- Dynamic calculation of max allowed speed per tick, including
SPEEDandSLOWNESSpotion multipliers. - Averaging logic over a time window preserved.
- Adjusted base speed calculation for "head-hitter" scenarios (Follow-up).
- Slightly increased speed constants and tolerance for fewer false positives (Follow-up).
- Dynamic calculation of max allowed speed per tick, including
- Added:
-
Sprint(OmniSprint/Directional Sprint)- Added:
- Exclusions for Creative, Spectator, flying, gliding, vehicle, and not being on ground.
- Fixed:
- Preserved and validated angle calculation logic.
- Used
distanceSquaredfor the minimum movement threshold. MAX_ALLOWED_SPRINT_DIRECTION_ANGLE_RAD(80 degrees) defines the legitimate sprint cone.
- Added:
-
Step- Added:
PlayerStepDataclass.- Grace period after teleportation.
- Fixed:
- Logic based on
wasOnGroundLastTick,yChangeThisTick > MAX_STEP_THRESHOLD, andvelocityY < MIN_JUMP_VELOCITY_EXPECTED. - Ignoring
SLIME_BLOCKandHONEY_BLOCKas launch sources. - Threshold adjustments (
MAX_LEGIT_VERTICAL_STEP_THRESHOLDto0.60) to correctly allow stepping on slabs/stairs while still detecting full block steps without a proper jump (Follow-ups). - Improved alert message.
- Logic based on
- Added:
Exploit Modules
-
GhostHand- Removed:
- Angle check (
isLookingTowards).
- Angle check (
- Fixed:
- Detection now exclusively based on
player.getTargetBlockExact(). - Simplified logic and code cleanup.
- Detection now exclusively based on
- Removed:
-
Blink- Added:
- Grace period after legitimate teleports (using
PlayerTeleportEventandHashSet). - Requirement for main plugin instance injection.
- Grace period after legitimate teleports (using
- Fixed:
- Robustness checks for
fromandtolocations. - Use of
distanceSquaredfor distance threshold comparison.
- Robustness checks for
- Added:
-
Phase- Added:
- Expanded
PASSABLE_MATERIALSlist. - Exclusion for
GameMode.CREATIVE(Follow-up).
- Expanded
- Fixed:
- Improved
isEffectivelySolidmethod to correctly handleOpenableblock states (doors, gates). - Detection logic changed to flag only if entire body (head and feet) is in solid blocks (Follow-up).
- Updated alert message to be more specific (Follow-up).
- Initial implementation checked three points (feet, center, head); refined to feet and head for "full body" (Follow-up).
- Improved
- Added:
Combat Modules
-
Killaura- Added:
- Detection applied to attacks on any living entity, not just players (Follow-up).
- Fixed:
- Optimized attack angle calculation (dot product, pre-calculated cosine).
- Use of
world.rayTraceBlocks()for precise Line of Sight (LOS) detection. - Structured checks: angle first, then LOS.
victimvariable type changed toLivingEntityand helper methods adapted (Follow-up).
- Added:
-
AutoClicker- Added:
enum ClickType { LEFT_CLICK_SWING, RIGHT_CLICK_ITEM_USE }.- Separate data storage for each click type.
- Monitoring
Action.LEFT_CLICK_AIRfor attacks. - Monitoring
Action.RIGHT_CLICK_AIR/BLOCKonly for specific "spammable" items.
- Fixed:
- Adjusted CPS threshold to 25 for both click types (Follow-up).
- Added:
-
Criticals- Removed:
- Inefficient per-player state (
lastLocation,lastAttackTime).
- Inefficient per-player state (
- Fixed:
- Direct check of
event.isCritical(). - Detection of illegitimate criticals based on conditions: on ground, negligible fall distance, climbing, in liquid, in vehicle.
- Direct check of
- Removed:
-
HitBox- Removed:
- Less precise angle-based check.
- Fixed:
- Detection based on
victim.getBoundingBox().rayTrace(...)for server-side hitbox intersection. - Dynamic calculation of
rayTraceMaxDistanceto ensure ray is long enough, focusing check on aim precision rather than imposing its own reach limit (Follow-up). - Alert message focused on "Aim" (Follow-up).
- Reconfirmed existing logic correctly handles client-side enlarged hitboxes (Follow-up).
- Detection based on
- Removed:
-
Velocity(Anti-Knockback)- Removed:
- Event cancellation from within the
BukkitRunnable(as it's too late).
- Event cancellation from within the
- Fixed:
- Comparison of player location 1 tick after damage using a squared distance threshold.
- Player validity check (online, alive) in the delayed task.
- Filtering of very small damage events.
- Removed:
-
Scaffold- Added:
PlayerScaffoldDataclass (last placement time, last placement yaw).- Multiple checks: placement speed, look direction (different angle for sprint/walk), rapid head movement ("snap aiming").
- Requirement for main plugin instance injection.
- Fixed:
- Standard exclusions (Creative, Spectator, flying, etc.).
- Identification of scaffold-like placement (block below feet, free space above).
- Removed flawed "blocks per tick" logic; focused on interval between placements.
- Added:
Miscellaneous Modules (Misc)
-
AntiBot- Added:
- Interaction monitoring (
AsyncPlayerChatEvent,PlayerInteractEvent) viahasPerformedActionflag. - Injection of the main plugin instance.
- Specific alert message.
- Interaction monitoring (
- Fixed:
- Wait time reduced to 1 second.
- Strict position and rotation check if no other actions were performed by the new player.
- Added:
-
Chat(Swear Filter)- Added:
- Pre-compilation of regular expressions for banned words.
- Flexible regex (
buildFlexiblePatternForSwear) allowing separators and common "leet speak" (getLeetRegexForChar).
- Fixed:
- Improved filtering process applying patterns successively.
- Replacement with
*matching the length of the detected text.
- Added:
-
Spammer- Added:
enum ActionType { CHAT, COMMAND }.- Separate timestamp storage for each action type.
- Generalized
handlePlayerActionmethod. - Specific alert messages for spam type.
- Fixed:
- Use of
LinkedListfor timestamps (better queue performance). - Set
EventPriority.MONITOR.
- Use of
- Added:
World Modules
-
FastBreak- Added:
- Explicit exclusions for players with
PotionEffectType.HASTEor tools withEnchantment.EFFICIENCY(Follow-up). - Exclusion for
event.isInstaBreak()(Follow-up).
- Explicit exclusions for players with
- Fixed:
- Extended
BASE_BREAK_TIMES_MSmap (base times without buffs). PlayerBreakStatefor sequences of the same block type.- Tolerance factor for break times.
- Core logic of comparing interval between same-type block breaks against a reference time (without buffs) maintained and clarified (Follow-up).
- Extended
- Added:
-
FastPlace- Added:
- Exclusions (Creative, Spectator).
- Handler for
PlayerQuitEventto clear data.
- Fixed:
- Set
EventPriority.HIGH. - Core logic (checking
MIN_PLACE_INTERVAL_MS) preserved.
- Set
- Added:
-
Fucker(NoLOSBreak)- Removed:
WATCHED_BLOCKSlist; detection generalized to any block type.
- Fixed:
- Use of
player.getTargetBlockExact()for server-side targeted block. - Alert if server-targeted block is
nullor different from the block actually broken. - Exclusions (Creative, Spectator).
- Set
EventPriority.HIGH. - Reconfirmed existing optimized version meets requirements (Follow-up).
- Use of
- Removed:
-
Nuker- Added:
MAX_NUKER_RADIUS_SQUAREDconstant to define detection radius.- Verification of broken block's distance from the player.
- Handler for
PlayerQuitEvent.
- Fixed:
- Adjusted thresholds:
TIME_WINDOW_MSto 1 second,MAX_NEARBY_BLOCKS_IN_WINDOWto 5. - Standard exclusions (Creative, Spectator).
- Set
EventPriority.HIGH.
- Adjusted thresholds:
- Added:
Player Modules
-
AntiVoid- Added:
PlayerVoidDataclass (initial Y on void contact,BukkitTask,isBeingMonitoredflag).- Logic to schedule a task on void damage to check player's Y after a delay.
- State management on
PlayerQuitEvent,PlayerDeathEvent,PlayerTeleportEvent. - Requirement for main plugin instance injection.
- Removed:
- Event cancellation from the delayed task (as it's too late).
- Fixed:
- Exclusions (Creative, Spectator).
- Alert condition based on player being significantly above initial void contact Y after delay.
- Added:
-
ChestStealer- Added:
ClickActionLogclass (timestamp +itemsTakenThisClick).calculateItemsTakenmethod based onInventoryAction.- Two-stage detection: high click speed + total items taken above a threshold.
- Handlers for
InventoryCloseEventandPlayerQuitEventto clear data.
- Fixed:
- Applicable for
CHEST,ENDER_CHEST,SHULKER_BOX,BARREL.
- Applicable for
- Added:
-
FastUse- Added:
- Handler for
PlayerQuitEvent.
- Handler for
- Fixed:
- Renamed
MIN_CONSUMPTION_TIME_MStoMAX_VALID_INTERVAL_BETWEEN_CONSUMPTIONS_MSfor clarity. - Set
EventPriority.HIGH,ignoreCancelled = true. - Core logic for checking intervals between consumption finishes preserved.
- Renamed
- Added:
-
InventoryCleaner- Added:
- Strict "no GUI open" condition:
player.getOpenInventory().getType() == InventoryType.CRAFTING. - Use of
Deque<Long>for a sliding window of drop timestamps. - Handler for
PlayerQuitEvent.
- Strict "no GUI open" condition:
- Fixed:
- Adjusted thresholds (
MAX_DROPS_IN_WINDOW,TIME_WINDOW_MS). - Exclusions (Creative, Spectator).
- On detection, event is cancelled and timestamp queue is cleared.
- Adjusted thresholds (
- Added:
Main Class and Utilities
-
DakotaAC(Main Class)- Fixed:
- More flexible listener registration mechanism (tries no-arg constructor, then plugin instance constructor).
- Improved error messages on listener loading.
- Use of constants for package paths.
- Fixed:
-
Alert- Fixed:
- Replaced
HashMapwithjava.util.concurrent.ConcurrentHashMapfor thread-safety. - Use of map's
merge()method for atomic updating of violence levels. - Removed a redundant
suspicionTypes.put(...)line. - Clarified operator notification condition (notifies on every alert).
- Replaced
- Fixed:
-
Commands- Added:
- Static constants for permissions and sub-command names.
- Fixed:
- Optimized
onTabCompletemethod with a static base list for commands.
- Optimized
- Added:
-
Punishment- Added:
- Constants for configuration keys and default values.
- Public
reloadPunishmentConfig()method. - Storage of
banThresholdandbanDurationMillisin memory, updated on config (re)load.
- Fixed:
- Improved configuration file management with more detailed log messages.
- Player kick performed on the main thread if necessary.
- Added:
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:vWmRJ2Cp:KXb7x26P"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:vWmRJ2Cp:KXb7x26P"
}

