package tc.oc.minecraft.analytics;
import javax.inject.Inject;
import tc.oc.analytics.Count;
import tc.oc.analytics.Gauge;
import tc.oc.analytics.MetricFactory;
import tc.oc.api.minecraft.users.OnlinePlayers;
import tc.oc.commons.core.scheduler.Scheduler;
public class PlayerReporter extends AnalyticsFacet {
@Inject private OnlinePlayers onlinePlayers;
@Inject private Scheduler scheduler;
private Gauge players;
private Count joins;
private Count leaves;
@Inject void init(MetricFactory metrics) {
players = metrics.gauge("players.players");
joins = metrics.count("players.joins");
leaves = metrics.count("players.leaves");
}
@Override
public void enable() {
update();
}
private void update() {
scheduler.debounceTask(
() -> players.measure(onlinePlayers.count())
);
}
protected void join() {
joins.increment();
update();
}
protected void leave() {
leaves.increment();
update();
}
}