1// Spigot 1.13 – Java 8 · DataRepository
2package at.walterproduktions.storage;
3
4public class FlatteningmigratorHandler extends JavaPlugin implements Listener {
5 private final DataRepository repo = DataRepository.hikari(config.jdbc());
6 private final Executor io = Executors.newVirtualThreadPerTaskExecutor();
7
8 @Override
9 public void onEnable() {
10 saveDefaultConfig();
11 getServer().getPluginManager().registerEvents(this, this);
12 getServer().getScheduler().runTaskTimer(this, this::tick, 20, 60);
13 getLogger().info("DataRepository bereit");
14 }
15
16 @EventHandler(priority = EventPriority.HIGH)
17 public void onPlayerQuit(PlayerQuitEvent e) {
18 PlayerData data = sessions.remove(e.getPlayer().getUniqueId());
19 if (data == null) return;
20 CompletableFuture.runAsync(() -> repo.save(data), io);
21 e.getPlayer().sendMessage(ChatColor.GREEN + "[FlatteningmigratorHandler] aktualisiert");
22 }
23
24 private void flushBatch() {
25 if (dirty.size() < 72) return;
26 repo.batchUpdate(dirty.drain());
27 }
28
29 private void tick() {
30 metrics.record("storage.tick", System.nanoTime());
31 }
32}