secreterproject/src/main/java/net/pivipi/Stats.java
2024-07-14 13:32:25 +02:00

43 lines
1.3 KiB
Java

package net.pivipi;
import net.kyori.adventure.text.Component;
import net.minestom.server.instance.InstanceManager;
import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.SchedulerManager;
import net.minestom.server.timer.TaskSchedule;
public class Stats implements Runnable {
private int tickDelay = 10;
private Runtime runtime = Runtime.getRuntime();
private InstanceManager instanceManager;
//private BenchmarkManager benchmarkManager;
private long lastRun;
public Stats(InstanceManager instanceManager) {
this.instanceManager = instanceManager;
}
public void start(SchedulerManager schedulerManager) {
//this.benchmarkManager = MinecraftServer.getBenchmarkManager();
schedulerManager.scheduleTask(this, TaskSchedule.immediate(), TaskSchedule.tick(tickDelay), ExecutionType.TICK_END);
}
@Override
public void run() {
long now = System.currentTimeMillis();
long delay = now - lastRun;
lastRun = now;
double mspt = (double)delay / tickDelay;
long memUsed = (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024;
Component footer = Component.text("%.3f MSPT | %dMB".formatted(mspt, memUsed));
instanceManager.getInstances().forEach(instance -> { // TODO make this async
instance.getPlayers().forEach(player -> {
player.sendPlayerListFooter(footer);
});
});
}
}