This commit introduces a Component system focused around Games, which is completely
backwards compatible, as well as designed to be flexible enough for later improvements
such as dependency injection. Each GameState is associated with a phase of the
PhasedLifetime that each Game has. Components can be registered with a specific phased
or the entirety of the Lifetime. Refer to the javadocs for Lifetime and PhasedLifetime
for more details. Currently the main two Component types are ICommand and
ListenerComponent.
This commit includes the first refactoring into using this system, which is replacing
the Wizards minigame's usage of Miniplugin with a Lifetimed Component, allowing for
the shop to be appropriately registered and unregistered. This change allows for
Wizards to be run more than once on the same server instance. Previously, attempting
to register the Miniplugin twice would result in the minigame failing to start after
the initial registration.
This commit additionally includes slight refactoring within GameCreationManager as
required for the Lifetime system to function correctly. These changes ensure that
Games are only disabled once, whereas before they could be repeatedly disabled.
The previous implementation of disable(), along with the classes that override it,
functioned correctly despite being called several times.
Finally, this commit adds in changes to the pom to allow for unit testing.
Remove MAC
Add AntiHack Logging
Change thresholds, add notifs, move stuff around
Add warning if check does not exist
Handle multiple bans when ranked TWITCH+
Prevent punishment abuse
* Implement Anticheat 1.2 hooks
* Add default check thresholds for unknown check types
* Add violation level support for new checks
* Add ban waves for KillAura type D
* Amend DELETE_PENDING now that it's not hardcoded
* Add instant bans for high VL Glide/Speed
* Don't specify hack type in banwave ban message
This commit completely rewrites DisguiseManager, DisguisePlayer, and
PlayerDisguiseManager.
Changes to disguising means that much of the core was also changed,
primarily having to do with mapping by UUID versus player names.
Several new API classes were added, such as EntitySelector, Managers,
UtilTasks, and a brand new scoreboard API which is much more optimized and
allows for much longer lines
The new anticheat is hooked as well, with implementation for guardians
which follow the players around. Release two code is also included, but is
currently disabled via a boolean.