Phase 504 - Check Upgrades & The Big Return of Asynchronous Detections
When a check runs, multiple detections execute per player, which can sometimes have consequences in performance. From this update and on, Spartan will allocate a single reusable thread to run detections asynchronously. This thread will run only when it’s not busy with another detection and when the circumstances allow for it, otherwise the detection will revert to run synchronously. For example, when we run a detection asynchronously and the check has preventions enabled, we risk moving the prevention to the next server tick, which will allow the hack module to work for a bit and cause potential damages to one’s server, so Spartan will first make sure there’s enough time in the current server tick to ensure the prevention also runs before the server updates itself. Additionally, Spartan will respect the time left in the server tick by running asynchronously only what’s necessary such as mathematical calculations instead of trivial code such as checking the configuration or cache to see if a detection is enabled or buffered enough, of which code has already run previously as this algorithm has been placed methodically in the code for the possible maximum potential. Lastly, this algorithm will only target heavy and frequent detections such as the ones implemented in movement checks.
Optimized the Spartan Player object in regards to its calculations related to the world border.
Optimized the ImpossibleInventory & NoSlowdown checks and rebalanced their detections and performance.
Improved the Spartan inventory menu with a more accurate statistics description.
Detections will now be toggleable in certain versions of Spartan.
The Velocity check will now support checking damage from entities but also more situations with players.
Did some maintenance in the Player utilities as it caused some checks to misperform.
The NoFall ratio detection will now start checking from the 3 fallen blocks instead of 4 but still be more lenient.
Slightly improved the speed of the punishment algorithm by using regex instead of ordinary strings.
Compatibilities will now refresh in memory when any plugin is loaded or unloaded, thus not having a problem when a plugin loads later.
The IrregularMovements step detection will now apply more lenient downwards limits when a player was not recently falling.
Completely rewritten the Speed sprint detection with the same but improved design.
The KillAura raytrace detection will now start raytracing from the entity’s width and after.
The punishment algorithm will no longer blame the first-party plugins when canceled as that’s not a plausible scenario.
The punishment algorithm will now offer possible dependent plugins when canceled as a way to ease search.
The Spartan’s inventory menu AntiCheat Updates item will no longer be considered clickable as it isn’t.
The KillAura sensitivity abstract detection is far too sensitive and will only occur with suspected players and identified hackers.
The KillAura sensitivity minimum detection has had its buffer separated but also increased in hopes of providing better stability.
The ban system will now insert the actual name of the punisher and not its object name, causing varchar issues to the database as a result.
The ban system will now distribute its keys using a list so less inconsistencies are created over time when modifying the code.
Restored the functionality of the unban command as it seemed to not perform as expected for some users.
The XRay detection has been rebalanced with faster and better calculations, and earlier signs in the inventory menus in the form of items.
The KillAura pattern detection will now require more observations to make correlation assumptions, and the required correlation has increased for all its sub-detections.
The KillAura pattern detection will now require the entity to be a player or monster and to not be blocked by a blocked behind.
The Cloud feature Customer Support will now send less logs when used as a way to help prevent time waste when studying such information.
The IrregularMovements climb detection will now apply different limits when climbing scaffolding blocks.
Decreased the amount of threads the plugin uses by bringing processes to the main thread in an optimized manner.
Suspicion Notifications will now run regardless of the Spartan inventory menu’s refresh rate.
The Spartan inventory menu will now refresh only when it needs to instead periodically.
The Explosion handler will now combine multiple events to calculate the players surrounding the location, which will dramatically decrease the amount of iterations and calculations needed.
The KillAura and HitReach checks will no longer check wide entities as they seem to be problematic.
Implemented a Ground utilities patch for miscalculations in the player’s remaining height position.
Warnings, reports & kicks will no longer have any chance of being identified as violations.
Did some maintenance to the Floor handler to make it more universal and accurate.
Corrected a rare command-tab null pointer console error.
The Item Attributes compatibility will now be enabled by default.
The verification connection will now be processed asynchronously.
The NoSlowdown bow shots detection will now be more lenient.