mirror of
https://github.com/SparklyPower/SparklyPaper.git
synced 2025-12-19 15:09:27 +00:00
96 lines
5.6 KiB
Diff
96 lines
5.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MrPowerGamerBR <git@mrpowergamerbr.com>
|
|
Date: Mon, 6 Nov 2023 21:54:33 -0300
|
|
Subject: [PATCH] Track how much MSPT each world used
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/command/MSPTCommand.java b/src/main/java/io/papermc/paper/command/MSPTCommand.java
|
|
index 8b5293b0c696ef21d0101493ffa41b60bf0bc86b..601198a33adb29316b0617d5390d1620b7c1095c 100644
|
|
--- a/src/main/java/io/papermc/paper/command/MSPTCommand.java
|
|
+++ b/src/main/java/io/papermc/paper/command/MSPTCommand.java
|
|
@@ -78,6 +78,46 @@ public final class MSPTCommand extends Command {
|
|
)
|
|
)
|
|
);
|
|
+
|
|
+ // SparklyPaper start - track world's MSPT
|
|
+ sender.sendMessage(text());
|
|
+ sender.sendMessage(text().content("World tick times ").color(GOLD)
|
|
+ .append(text().color(YELLOW)
|
|
+ .append(
|
|
+ text("("),
|
|
+ text("avg", GRAY),
|
|
+ text("/"),
|
|
+ text("min", GRAY),
|
|
+ text("/"),
|
|
+ text("max", GRAY),
|
|
+ text(")")
|
|
+ )
|
|
+ ).append(
|
|
+ text(" from last 5s"),
|
|
+ text(",", GRAY),
|
|
+ text(" 10s"),
|
|
+ text(",", GRAY),
|
|
+ text(" 1m"),
|
|
+ text(":", YELLOW)
|
|
+ )
|
|
+ );
|
|
+ for (net.minecraft.server.level.ServerLevel serverLevel : server.getAllLevels()) {
|
|
+ List<Component> worldTimes = new ArrayList<>();
|
|
+ worldTimes.addAll(eval(serverLevel.tickTimes5s.getTimes()));
|
|
+ worldTimes.addAll(eval(serverLevel.tickTimes10s.getTimes()));
|
|
+ worldTimes.addAll(eval(serverLevel.tickTimes60s.getTimes()));
|
|
+
|
|
+ sender.sendMessage(text().content("◴ " + serverLevel.getWorld().getName() + ": ").color(GOLD)
|
|
+ .append(text().color(GRAY)
|
|
+ .append(
|
|
+ worldTimes.get(0), SLASH, worldTimes.get(1), SLASH, worldTimes.get(2), text(", ", YELLOW),
|
|
+ worldTimes.get(3), SLASH, worldTimes.get(4), SLASH, worldTimes.get(5), text(", ", YELLOW),
|
|
+ worldTimes.get(6), SLASH, worldTimes.get(7), SLASH, worldTimes.get(8)
|
|
+ )
|
|
+ )
|
|
+ );
|
|
+ }
|
|
+ // SparklyPaper end
|
|
return true;
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 9fd2bb0441b614d0a1abf8a8000eece14dcd6bbe..e168e5f433da40f3bdd5821451c3f3572b69a48c 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -1889,7 +1889,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
gameprofilerfiller.push("tick");
|
|
|
|
try {
|
|
+ long i = Util.getNanos(); // SparklyPaper - track world's MSPT
|
|
worldserver.tick(shouldKeepTicking);
|
|
+ // SparklyPaper start - track world's MSPT
|
|
+ long j = Util.getNanos() - i;
|
|
+
|
|
+ // These are from the "tickServer" function
|
|
+ worldserver.tickTimes5s.add(this.tickCount, j);
|
|
+ worldserver.tickTimes10s.add(this.tickCount, j);
|
|
+ worldserver.tickTimes60s.add(this.tickCount, j);
|
|
+ // SparklyPaper end
|
|
} catch (Throwable throwable) {
|
|
CrashReport crashreport = CrashReport.forThrowable(throwable, "Exception ticking world");
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
index 585e2b43a0326f0b81597fa1234d3c67c76af550..ba899bcf05b967db784b7435895d6ff7b72b40f2 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -595,6 +595,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
|
}
|
|
// Paper end - lag compensation
|
|
|
|
+ // SparklyPaper start - track world's MSPT
|
|
+ public final MinecraftServer.TickTimes tickTimes5s = new MinecraftServer.TickTimes(100);
|
|
+ public final MinecraftServer.TickTimes tickTimes10s = new MinecraftServer.TickTimes(200);
|
|
+ public final MinecraftServer.TickTimes tickTimes60s = new MinecraftServer.TickTimes(1200);
|
|
+ // SparklyPaper end
|
|
+
|
|
// Add env and gen to constructor, IWorldDataServer -> WorldDataServer
|
|
public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, @Nullable RandomSequences randomsequences, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) {
|
|
super(iworlddataserver, resourcekey, minecraftserver.registryAccess(), worlddimension.type(), false, flag, i, minecraftserver.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> minecraftserver.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(convertable_conversionsession.levelDirectory.path(), iworlddataserver.getLevelName(), resourcekey.location(), spigotConfig, minecraftserver.registryAccess(), iworlddataserver.getGameRules())), executor); // Paper - create paper world configs; Async-Anti-Xray: Pass executor
|