43 lines
1.3 KiB
Java
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);
|
|
});
|
|
});
|
|
}
|
|
}
|