Skip to content

Commit dd9d9eb

Browse files
committed
Refactor FabricTPSRetriever to use ServerTickEvents
1 parent 1145783 commit dd9d9eb

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

fabric/src/main/java/it/renvins/serverpulse/fabric/ServerPulseFabric.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public ServerPulseFabric() {
6060
this.databaseService = new DatabaseService(logger, platform, dbConfig, scheduler);
6161
this.metricsService = new MetricsService(logger, platform, metricsConfig, scheduler);
6262

63-
this.tpsRetriever = new FabricTPSRetriever(scheduler);
63+
this.tpsRetriever = new FabricTPSRetriever();
6464
this.diskRetriever = new DiskRetriever(FabricLoader.getInstance().getGameDir().toFile());
6565
this.pingRetriever = new FabricPingRetriever(this);
6666
}

fabric/src/main/java/it/renvins/serverpulse/fabric/metrics/FabricTPSRetriever.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package it.renvins.serverpulse.fabric.metrics;
22

33
import it.renvins.serverpulse.api.metrics.ITPSRetriever;
4-
import it.renvins.serverpulse.common.scheduler.TaskScheduler;
54
import lombok.RequiredArgsConstructor;
5+
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
66

77
@RequiredArgsConstructor
88
public class FabricTPSRetriever implements ITPSRetriever {
@@ -17,8 +17,6 @@ public class FabricTPSRetriever implements ITPSRetriever {
1717
// Maximum history to keep (15 minutes worth of ticks)
1818
private static final int MAX_SAMPLES = FIFTEEN_MINUTES * TICKS_PER_SECOND;
1919

20-
private final TaskScheduler scheduler;
21-
2220
// Ring buffer for storing tick times
2321
private final long[] tickTimes = new long[MAX_SAMPLES];
2422
private int tickIndex = 0;
@@ -40,8 +38,8 @@ public double[] getTPS() {
4038
public void startTickMonitor() {
4139
lastTickTime = System.nanoTime();
4240

43-
// Schedule a task to run every server tick
44-
scheduler.runTaskTimer(() -> {
41+
// Use ServerTickEvents instead of a scheduled task
42+
ServerTickEvents.END_SERVER_TICK.register(server -> {
4543
long now = System.nanoTime();
4644

4745
// Only record after first tick
@@ -62,7 +60,7 @@ public void startTickMonitor() {
6260
}
6361

6462
lastTickTime = now;
65-
}, 1, 1);
63+
});
6664
}
6765

6866
private void updateTPS() {

fabric/src/main/java/it/renvins/serverpulse/fabric/task/FabricScheduler.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import it.renvins.serverpulse.common.scheduler.Task;
99
import it.renvins.serverpulse.common.scheduler.TaskScheduler;
10+
import it.renvins.serverpulse.fabric.ServerPulseFabric;
1011
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
1112
import net.minecraft.server.MinecraftServer;
1213

@@ -26,19 +27,27 @@ public void runSync(Runnable task) {
2627

2728
@Override
2829
public void runTaskTimer(Runnable task, long delayTicks, long periodTicks) {
29-
FabricTask fabricTask = new FabricTask(task, false, delayTicks, periodTicks);
30+
FabricTask fabricTask = new FabricTask(task, true, delayTicks, periodTicks);
3031
tasks.add(fabricTask);
3132
}
3233

3334
@Override
3435
public void runAsync(Runnable task) {
35-
CompletableFuture.runAsync(task);
36+
CompletableFuture.runAsync(task).exceptionally(
37+
throwable -> {
38+
ServerPulseFabric.LOGGER.log(java.util.logging.Level.SEVERE, "An error occurred while executing task!", throwable);
39+
return null;
40+
}
41+
);
3642
}
3743

3844
@Override
3945
public Task runTaskTimerAsync(Runnable task, long delayTicks, long periodTicks) {
40-
FabricTask fabricTask = new FabricTask(() -> CompletableFuture.runAsync(task),
41-
true, delayTicks, periodTicks);
46+
FabricTask fabricTask = new FabricTask(() -> CompletableFuture.runAsync(task).exceptionally(
47+
throwable -> {
48+
ServerPulseFabric.LOGGER.log(java.util.logging.Level.SEVERE, "An error occurred while executing task!", throwable);
49+
return null;
50+
}), true, delayTicks, periodTicks);
4251
tasks.add(fabricTask);
4352
return fabricTask;
4453
}

0 commit comments

Comments
 (0)