Every project gets a checkAffected task that decides whether it has to
be rebuilt. A project is affected when one of these changed:
- its own files, or paths it adds with an affected { } block
- the versions of its resolved dependencies
- a project it depends on
- the root project, which owns the shared build and CI files
Projects list what they ship in a deploy { } block, and can add
afterDeploy commands there. Jars are now byte-reproducible. Only files
whose hash differs from the deployed one are uploaded, and only their
afterDeploy commands are run.
The deploy workflow diffs against the last deployed commit, which is
stored on the server with the dependency versions. PR builds diff
against the merge base. Shared setup steps moved into composite actions
under .gitea/actions.
The repeating timers that linked classes and the plugin main classes started
once for the whole runtime now use @LinkedTimer, on Spigot (BauSystem,
SpigotCore, LobbySystem, MissileWars, TowerRun, Teamserver) and Velocity.
The FightInfoPacketSenders of MissileWars and TowerRun are linked themselves
instead of being started by the main class.
Chat is now handled entirely by VelocityCore through channels with
separate readers and writers (Global, Local/Fight, Blue/Red fight team,
Team, ServerTeam, Alert and 1:1 direct messages). Each player has a
saved default channel; messages from other channels are tagged with
the channel name, and every default change is announced.
- /global, /local, /tc, /stc, /msg and /r switch the default channel
when called without a message
- /chat <channel> switches, /chat <channel> join|leave toggles reading
(saved); moderators can join arenas by name and write with
/chat <channel> msg <text>
- '+' sends from global to local and from local/fight to the fight team
- Referees write yellow in the fight chat
- Subservers no longer receive chat; arenas get a record-only
ChatRecordPacket so replays keep their chat
- Remove the chat listeners of SpigotCore, FightSystem, MissileWars,
TowerRun and TNTLeague
Closes#460, #129