Skip to content

Commit 87f8bd3

Browse files
committed
Implement Bukkit#getTps
Note that this requires the caller to be on a ticking region or the global region, otherwise it will throw UnsupportedOperationException. Now the function returns the TPS for the current region.
1 parent 1f0b85d commit 87f8bd3

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

folia-server/paper-patches/features/0006-Add-TPS-From-Region.patch

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Add TPS From Region
55

66

77
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
8-
index 20bcfeef39746d547ef17ccf2b66d44ce1e6e354..755527ed59b50c95aeca71d0fc5fea224731ff51 100644
8+
index b254cab566110c590ba22b0bd48cc165bfd7ae27..bcd17eba9798747010ed96903992939a284199df 100644
99
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
1010
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
11-
@@ -3333,4 +3333,68 @@ public final class CraftServer implements Server {
11+
@@ -3349,4 +3349,68 @@ public final class CraftServer implements Server {
1212
this.console.addPluginAllowingSleep(plugin.getName(), value);
1313
}
1414
// Paper end - API to check if the server is sleeping

folia-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch

+31
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,37 @@
9191
//Preconditions.checkState(!this.console.isIteratingOverLevels, "Cannot unload a world while worlds are being ticked"); // Paper - Cat - Temp disable. We'll see how this goes.
9292
if (world == null) {
9393
return false;
94+
@@ -3083,11 +_,27 @@
95+
96+
@Override
97+
public double[] getTPS() {
98+
+ // Folia start - region threading
99+
+ ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool.SchedulableTick task = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentTickingTask();
100+
+ if (task == null) {
101+
+ // might be on the shutdown thread, try retrieving the current region
102+
+ if (io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion() != null) {
103+
+ // we are on the shutdown thread
104+
+ task = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion().getData().getRegionSchedulingHandle();
105+
+ }
106+
+ }
107+
+ if (!(task instanceof io.papermc.paper.threadedregions.TickRegionScheduler.RegionScheduleHandle tickHandle)) {
108+
+ throw new UnsupportedOperationException("Not on any region");
109+
+ }
110+
+
111+
+ // 1m, 5m, 15m
112+
+ long currTime = System.nanoTime();
113+
return new double[] {
114+
- net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(),
115+
- net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(),
116+
- net.minecraft.server.MinecraftServer.getServer().tps15.getAverage()
117+
+ tickHandle.getTickReport1m(currTime).tpsData().segmentAll().average(),
118+
+ tickHandle.getTickReport5m(currTime).tpsData().segmentAll().average(),
119+
+ tickHandle.getTickReport15m(currTime).tpsData().segmentAll().average(),
120+
};
121+
+ // Folia end - region threading
122+
}
123+
124+
// Paper start - adventure sounds
94125
@@ -3258,7 +_,7 @@
95126

96127
@Override

0 commit comments

Comments
 (0)