GameTeam can't handle spawnpoints which are also solid blocks, and
SurvivalGames has a chance of spawning a chest on a spawn platform. When
this happens, the next closest spawn is always the same spawn because the
two players will be exactly 1 block apart, causing everyone to spawn at
the same podium. This commit prevents SurvivalGames from generating random
chests on spawn podiums
In Block Hunt, hitting an entity will cause an "Cancelled Infection" event
to propagate upwards the stack. This commit checks whether the game is
live before beginning the cancellation
For whatever reason, Minestrike nametags don't hide properly on
hotjoining. This is a simple fix which just resets all nametag
visibilities on game reset. Should work, right?
In one of my previous commits, while migrating CompassAddon ->
CompassModule I accidentally removed two logical components. The first
prevented compasses from being given out in the pregame lobby, and the
second allowed players who were dead to receive compasses. Both have been
re-added.
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.