Use @LinkedTimer for the timers of linked classes

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.
This commit is contained in:
2026-10-31 16:26:34 +01:00
parent 9598b1c961
commit 9fd2bd17d4
23 changed files with 241 additions and 217 deletions
@@ -19,6 +19,8 @@
package de.steamwar.misslewars;
import de.steamwar.linkage.Linked;
import de.steamwar.linkage.LinkedTimer;
import de.steamwar.network.NetworkSender;
import de.steamwar.network.packets.common.FightInfoPacket;
import de.steamwar.sql.SteamwarUser;
@@ -28,6 +30,7 @@ import org.bukkit.World;
import java.util.List;
import java.util.stream.Collectors;
@Linked
public class FightInfoPacketSender implements Runnable {
private final World world = Bukkit.getWorlds().get(0);
@@ -41,6 +44,7 @@ public class FightInfoPacketSender implements Runnable {
private final int redLeader = Config.RedLeader != null ? SteamwarUser.get(Config.RedLeader).getId() : 0;
@Override
@LinkedTimer(delay = 1, period = 1, unit = LinkedTimer.Unit.SECONDS)
public void run() {
if (Config.test()) {
return;
@@ -75,8 +75,6 @@ public class MissileWars extends JavaPlugin {
StateDependent.setupState(fightState);
Bukkit.getScheduler().runTaskTimer(this, new FightInfoPacketSender(), 20, 20);
Bukkit.getWorlds().forEach(world -> {
world.setGameRule(GameRule.KEEP_INVENTORY, true);
world.setGameRule(GameRule.MOB_GRIEFING, true);