From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrHua269 Date: Sat, 30 Nov 2024 12:33:31 +0800 Subject: [PATCH] FoliaPR Add TPS From Region diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index aecd4c5767a5c91ca60db395b6f412950aa77b26..e8a9351f40fdcd8ea47632677be52308f9f72b5d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -3109,6 +3109,42 @@ public final class CraftServer implements Server { }; } + // Folia start + @Override + public double[] getTPS(org.bukkit.Location location) { + final int x = location.blockX() >> 4; + final int z = location.blockZ() >> 4; + final ServerLevel world = ((CraftWorld) location.getWorld()).getHandle(); + return getTPSFromRegion(world, x, z); + } + + @Override + public double[] getTPS(org.bukkit.Chunk chunk) { + final int x = chunk.getX(); + final int z = chunk.getZ(); + final ServerLevel world = ((CraftWorld) chunk.getWorld()).getHandle(); + return getTPSFromRegion(world, x, z); + } + + private double[] getTPSFromRegion(ServerLevel world, int x, int z) { + io.papermc.paper.threadedregions.ThreadedRegionizer.ThreadedRegion + region = world.regioniser.getRegionAtSynchronised(x, z); + if (region == null) { + return null; + } else { + io.papermc.paper.threadedregions.TickRegions.TickRegionData regionData = region.getData(); + final long currTime = System.nanoTime(); + return new double[] { + regionData.getRegionSchedulingHandle().getTickReport5s(currTime).tpsData().segmentAll().average(), + regionData.getRegionSchedulingHandle().getTickReport15s(currTime).tpsData().segmentAll().average(), + regionData.getRegionSchedulingHandle().getTickReport1m(currTime).tpsData().segmentAll().average(), + regionData.getRegionSchedulingHandle().getTickReport5m(currTime).tpsData().segmentAll().average(), + regionData.getRegionSchedulingHandle().getTickReport15m(currTime).tpsData().segmentAll().average(), + }; + } + } + // Folia end + // Paper start - adventure sounds @Override public void playSound(final net.kyori.adventure.sound.Sound sound) {