package com.xeroth.xeroanticheat.manager; import java.util.concurrent.atomic.AtomicLong; public class MetricsManager { private final AtomicLong totalChecksRun = new AtomicLong(); private final AtomicLong totalFlagsIssued = new AtomicLong(); private final AtomicLong totalPunishments = new AtomicLong(); private long startTimeMs = System.currentTimeMillis(); public void recordCheck() { totalChecksRun.incrementAndGet(); } public void recordFlag() { totalFlagsIssued.incrementAndGet(); } public void recordPunishment() { totalPunishments.incrementAndGet(); } public long getTotalChecks() { return totalChecksRun.get(); } public long getTotalFlags() { return totalFlagsIssued.get(); } public long getTotalPunishments() { return totalPunishments.get(); } public long getUptimeSeconds() { return (System.currentTimeMillis() - startTimeMs) / 1000; } public double getChecksPerSecond() { long uptime = getUptimeSeconds(); return uptime > 0 ? (double) totalChecksRun.get() / uptime : 0; } public void reset() { totalChecksRun.set(0); totalFlagsIssued.set(0); totalPunishments.set(0); startTimeMs = System.currentTimeMillis(); } }