From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Biquaternions Date: Tue, 2 Sep 2025 13:54:37 -0500 Subject: [PATCH] Fish: Parallel World Ticking API Original license: MIT Original project: https://github.com/Biquaternions/Fish This patch provides an API for performance monitoring plugins like PurpurBars. A better approach would be to include an event when the world is done ticking, which will allow to re-use the RollingAverage logic from Spark and Minecraft internals. However, since every fork developer will want to have said event into their own namespace, it will be virtually impossible to provide a universal API. With this approach only new methods are added into already existing Bukkit API, and the same naming conventions as Bukkit were used, which means there's a bigger chance of this API to get standarized. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 2a62cbd05fd41658b19a46ea2b5df483cdd33497..b78f6e56a993240fd2b329b64265c728631ca907 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -3134,4 +3134,11 @@ public final class CraftServer implements Server { return MinecraftServer.lastTickOversleepTime; } // Gale end - YAPFA - last tick time - API + + // Fish start - Parallel World Ticking API + @Override + public boolean isParallelWorldTickingEnabled() { + return org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled; + } + // Fish end - Parallel World Ticking API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 01b8cf8474f4d80eca65bdb9f44f204110b10a1b..9df1110696fdd235b5664f8ddbf4a0ca74bd78e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -2134,4 +2134,15 @@ public class CraftWorld extends CraftRegionAccessor implements World { return POINTERS_SUPPLIER.view(this); } // Paper end + + // Fish start - Parallel World Ticking API + @Override + public long @NotNull [] getTickTimes() { + return this.world.tickTimes5s.getTimes(); + } + @Override + public double getAverageTickTime() { + return this.world.tickTimes5s.getAverage(); + } + // Fish end - Parallel World Ticking API }