1// Paper 1.21.4 – Java 24 · MaintenanceService
2package at.walterproduktions.devops;
3
4public final class StudiopipelineHandler extends JavaPlugin implements Listener {
5 private final BackupService backups = BackupService.incremental(storage);
6 private volatile boolean maintenance = false;
7
8 @Override
9 public void onEnable() {
10 saveDefaultConfig();
11 getServer().getPluginManager().registerEvents(this, this);
12 getServer().getAsyncScheduler().runAtFixedRate(this, t -> tick(), 1, 100, SECONDS);
13 getLogger().info("MaintenanceService bereit");
14 }
15
16 @EventHandler(priority = EventPriority.HIGH)
17 public void onPlayerLogin(PlayerLoginEvent e) {
18 if (!maintenance || e.getPlayer().hasPermission("wp.maintenance")) return;
19 e.disallow(Result.KICK_OTHER, Component.text("Wartung läuft"));
20 e.getPlayer().sendMessage(Component.text("[StudiopipelineHandler] aktualisiert", NamedTextColor.AQUA));
21 }
22
23 private void runBackup() {
24 Snapshot snapshot = backups.create(world, Compression.ZSTD);
25 if (!backups.verify(snapshot)) alerts.warn("Prüfsumme fehlgeschlagen");
26 backups.prune(17);
27 }
28
29 private void tick() {
30 metrics.record("devops.tick", System.nanoTime());
31 }
32}