Yatopia/patches/server/0005-Add-last-tick-time-API.patch

75 lines
4.6 KiB
Diff
Raw Normal View History

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ivan Pekov <ivan@mrivanplays.com>
Date: Sun, 27 Sep 2020 18:30:10 +0300
Subject: [PATCH] Add last tick time API
Original patch by:
Co-authored-by: tr7zw <tr7zw@live.de>
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
2021-06-03 04:37:38 +02:00
index 4ed2808434d059ad21c01449fb1ca37165061b0a..24b721a8378d57c51cb68376d76f52aea3fe2c67 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
2021-06-03 04:37:38 +02:00
@@ -1065,6 +1065,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
// Paper End
// Spigot End
+ public static java.time.Duration lastTickTime = java.time.Duration.ZERO; // Yatopia
+
protected void w() {
try {
long serverStartTime = SystemUtils.getMonotonicNanos(); // Paper
2021-06-03 04:37:38 +02:00
@@ -1131,7 +1133,9 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
this.a(gameprofilertick);
Updated Upstream and Sidestream(s) (Tuinity/Akarin/Purpur) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: ff785fc Updated Upstream (Paper) Akarin Changes: 2dab0a4 Removed gradle 72e3c4a Update README.md bbad638 Update README.md bbdea8e Update Jenkinsfile bb9db8b Updated tuinity to spottedleaf repo 6961481 Updated Tuinity branch de97830 Updated Tuinity 62d4b43 Update SUPPORT.md 21fffd0 Update README.md 4bd120b Merge pull request #186 from adsa562/patch-1 1f8eccf add demo server 630ea72 Updated Tuinity 59fae5a Made 1.15.2 build again bd703ba Allowed building for dirs that have spaces a339866 Update SUPPORT.md db61690 stated that it is not a bedrock server software df7efd2 Added Jenkinsfile 75b7f13 removed broken patch 19387b2 Updated Artifacts URL c5a7778 fixed build 3abf7a7 Fixed Initialize step 2d3ea37 Updated Tuinity and Paper 220d1b8 Removed patch 0019 - breaks upstream 1ccf615 Added tuinity branch to gitmodules c5e73c7 Updated Upstream (Tuinity) 3cd947f Updated Upstream (Tuinity) 14df550 cleanup scripts/importSources.sh 49d9af7 revert a broken patch 630492a revert a broken patch cb5ea51 Fixed build failure 826c0f0 Updated 1.15.2 jenkinsfile to 1.16.1 574b206 Update SUPPORT.md 90e3f89 Update SUPPORT.md c2a5f66 fix b30241b fix 4e06aea fix 284809b 1.16.1 Purpur Changes: 096971d Rename kelp/vines options to make more sense 8ea89f9 Fix broken methods in purpur config c505cf7 Updated Upstream (Paper) 695f3ac Add configurable snowball damage 2d04fb5 Updated Upstream (Paper) badfd60 Rebuild patches f3aff1b Merge branch 'ver/1.16.4' of github.com:pl3xgaming/Purpur into ver/1.16.4 cfcf7d7 Add critical hit check to EntityDamagedByEntityEvent 0b48c6c Add config for allowing Endermen to despawn even while holding a block 1349e72 Updated Upstream (Tuinity) 651105e Kelp weeping and twisting vines configurable max length 058399c Updated Upstream (Tuinity) 3e0a758 Add twisting and weeping vines growth rates
2020-11-26 10:52:33 +01:00
this.methodProfiler.a();
this.methodProfiler.enter("tick");
+ long tickStart = System.nanoTime(); // Yatopia
this.a(this::canSleepForTick);
+ lastTickTime = java.time.Duration.ofNanos(System.nanoTime() - tickStart); // Yatopia
Updated Upstream and Sidestream(s) (Tuinity/Akarin/Purpur) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: ff785fc Updated Upstream (Paper) Akarin Changes: 2dab0a4 Removed gradle 72e3c4a Update README.md bbad638 Update README.md bbdea8e Update Jenkinsfile bb9db8b Updated tuinity to spottedleaf repo 6961481 Updated Tuinity branch de97830 Updated Tuinity 62d4b43 Update SUPPORT.md 21fffd0 Update README.md 4bd120b Merge pull request #186 from adsa562/patch-1 1f8eccf add demo server 630ea72 Updated Tuinity 59fae5a Made 1.15.2 build again bd703ba Allowed building for dirs that have spaces a339866 Update SUPPORT.md db61690 stated that it is not a bedrock server software df7efd2 Added Jenkinsfile 75b7f13 removed broken patch 19387b2 Updated Artifacts URL c5a7778 fixed build 3abf7a7 Fixed Initialize step 2d3ea37 Updated Tuinity and Paper 220d1b8 Removed patch 0019 - breaks upstream 1ccf615 Added tuinity branch to gitmodules c5e73c7 Updated Upstream (Tuinity) 3cd947f Updated Upstream (Tuinity) 14df550 cleanup scripts/importSources.sh 49d9af7 revert a broken patch 630492a revert a broken patch cb5ea51 Fixed build failure 826c0f0 Updated 1.15.2 jenkinsfile to 1.16.1 574b206 Update SUPPORT.md 90e3f89 Update SUPPORT.md c2a5f66 fix b30241b fix 4e06aea fix 284809b 1.16.1 Purpur Changes: 096971d Rename kelp/vines options to make more sense 8ea89f9 Fix broken methods in purpur config c505cf7 Updated Upstream (Paper) 695f3ac Add configurable snowball damage 2d04fb5 Updated Upstream (Paper) badfd60 Rebuild patches f3aff1b Merge branch 'ver/1.16.4' of github.com:pl3xgaming/Purpur into ver/1.16.4 cfcf7d7 Add critical hit check to EntityDamagedByEntityEvent 0b48c6c Add config for allowing Endermen to despawn even while holding a block 1349e72 Updated Upstream (Tuinity) 651105e Kelp weeping and twisting vines configurable max length 058399c Updated Upstream (Tuinity) 3e0a758 Add twisting and weeping vines growth rates
2020-11-26 10:52:33 +01:00
this.methodProfiler.exitEnter("nextTickWait");
this.X = true;
2021-06-03 04:37:38 +02:00
this.W = Math.max(SystemUtils.getMonotonicMillis() + 50L, this.nextTick);
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2021-06-03 04:37:38 +02:00
index e6439b95959af5e8761ea818a66344eee6048e90..5022827a4fb08279fd0be346804fc36babea0cb8 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2021-06-03 04:37:38 +02:00
@@ -2545,4 +2545,6 @@ public final class CraftServer implements Server {
}
2021-06-03 04:37:38 +02:00
// Paper end
+
+ @Override public java.time.Duration getLastTickTime() { return net.minecraft.server.MinecraftServer.lastTickTime; } // Yatopia
}
diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
2021-06-03 04:37:38 +02:00
index e62890433ffbe0b4e48942fe6c38b599a19e58fd..cb877a350bb6ca008e377d2bb339f83a239fca3f 100644
--- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java
+++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
Updated Upstream and Sidestream(s) (Paper/Tuinity/Purpur/Airplane/Empirecraft) (#392) * Updated Upstream and Sidestream(s) (Paper/Tuinity/Purpur/Airplane/Empirecraft) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 13a476e15 Deprecate PlayerLeaveBedEvent#setBedSpawn 3a1d95c71 [Auto] Updated Upstream (CraftBukkit) d4dcc1a2e Updated Upstream (CraftBukkit) e886d8118 Updated Upstream () 8bc0c6c31 Updated Upstream (CraftBukkit/Spigot) (#5169) 002f65b8b living entity allow attribute registration (#4723) 69a5c67b1 fix calling setSize on dead slimes causing invincibility (fixes #5137) (#5168) Tuinity Changes: 502d57b Updated Upstream (Paper) 87e0cd9 Print exceptions for light scheduling Purpur Changes: 7fc2d31 Updated Upstream (Paper & Tuinity) Airplane Changes: d7d1626 Remove multithreaded entity tracker 677ec73 Ensure armor change event is on main thread c07d254 Fix crash ec7605c Updated Upstream (Tuinity) 2768f39 Update DEAR commit message e975972 Multithreaded entity tracking 98244f9 Updated Upstream (Tuinity) 44b2499 Larger headings 2c4a7fb Merge pull request #6 from Encode42/master cc19631 More changes beba27a Badges and variables 0aeaf12 Improve readability, grammar, etc. Empirecraft Changes: bbc8d297 Updated Paper * Updated Upstream and Sidestream(s) (Paper/Origami) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 3dadd97bb [CI-SKIP] [Meta] Exempt more labels from being marked as stale (#5142) 36a72cad3 [Auto] Updated Upstream (Bukkit/CraftBukkit/Spigot) Origami Changes: 168394a Access config after loading it... fixes velocity auto offline-mode c47b182 Add velocity to automatic offline mode
2021-02-08 16:31:51 +01:00
@@ -32,6 +32,10 @@ public class TicksPerSecondCommand extends Command
tpsAvg[i] = format( tps[i] );
}
2021-06-03 04:37:38 +02:00
sender.sendMessage(ChatColor.GOLD + "TPS from last 1m, 5m, 15m: " + org.apache.commons.lang.StringUtils.join(tpsAvg, ", "));
+ // Yatopia start
+ java.time.Duration lastTickTime = org.bukkit.Bukkit.getLastTickTime();
+ sender.sendMessage(ChatColor.GOLD + "Last tick: " + formatTo( lastTickTime, java.util.concurrent.TimeUnit.MILLISECONDS ) + " (" + formatTo( lastTickTime, java.util.concurrent.TimeUnit.NANOSECONDS ) + ")");
+ // Yatopia end
if (args.length > 0 && args[0].equals("mem") && sender.hasPermission("bukkit.command.tpsmemory")) {
sender.sendMessage(ChatColor.GOLD + "Current Memory Usage: " + ChatColor.GREEN + ((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (1024 * 1024)) + "/" + (Runtime.getRuntime().totalMemory() / (1024 * 1024)) + " mb (Max: " + (Runtime.getRuntime().maxMemory() / (1024 * 1024)) + " mb)");
if (!hasShownMemoryWarning) {
Updated Upstream and Sidestream(s) (Paper/Tuinity/Purpur/Airplane/Empirecraft) (#392) * Updated Upstream and Sidestream(s) (Paper/Tuinity/Purpur/Airplane/Empirecraft) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 13a476e15 Deprecate PlayerLeaveBedEvent#setBedSpawn 3a1d95c71 [Auto] Updated Upstream (CraftBukkit) d4dcc1a2e Updated Upstream (CraftBukkit) e886d8118 Updated Upstream () 8bc0c6c31 Updated Upstream (CraftBukkit/Spigot) (#5169) 002f65b8b living entity allow attribute registration (#4723) 69a5c67b1 fix calling setSize on dead slimes causing invincibility (fixes #5137) (#5168) Tuinity Changes: 502d57b Updated Upstream (Paper) 87e0cd9 Print exceptions for light scheduling Purpur Changes: 7fc2d31 Updated Upstream (Paper & Tuinity) Airplane Changes: d7d1626 Remove multithreaded entity tracker 677ec73 Ensure armor change event is on main thread c07d254 Fix crash ec7605c Updated Upstream (Tuinity) 2768f39 Update DEAR commit message e975972 Multithreaded entity tracking 98244f9 Updated Upstream (Tuinity) 44b2499 Larger headings 2c4a7fb Merge pull request #6 from Encode42/master cc19631 More changes beba27a Badges and variables 0aeaf12 Improve readability, grammar, etc. Empirecraft Changes: bbc8d297 Updated Paper * Updated Upstream and Sidestream(s) (Paper/Origami) Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Paper Changes: 3dadd97bb [CI-SKIP] [Meta] Exempt more labels from being marked as stale (#5142) 36a72cad3 [Auto] Updated Upstream (Bukkit/CraftBukkit/Spigot) Origami Changes: 168394a Access config after loading it... fixes velocity auto offline-mode c47b182 Add velocity to automatic offline mode
2021-02-08 16:31:51 +01:00
@@ -50,4 +54,16 @@ public class TicksPerSecondCommand extends Command
return ( ( tps > 18.0 ) ? ChatColor.GREEN : ( tps > 16.0 ) ? ChatColor.YELLOW : ChatColor.RED ).toString()
+ ( ( tps > 21.0 ) ? "*" : "" ) + Math.min( Math.round( tps * 100.0 ) / 100.0, 20.0 ); // Paper - only print * at 21, we commonly peak to 20.02 as the tick sleep is not accurate enough, stop the noise
}
+
+ // Yatopia start
+ public static String formatTo(java.time.Duration duration, java.util.concurrent.TimeUnit unit)
+ {
+ java.util.concurrent.TimeUnit nanosUnit = java.util.concurrent.TimeUnit.NANOSECONDS;
+ long nanos = duration.toNanos();
+ long toAskedUnit = unit.convert( nanos, nanosUnit );
+ long ms = nanosUnit.toMillis( nanos );
+ ChatColor startingColor = ms < 40 ? ChatColor.GREEN : ( ms < 50 ) ? ChatColor.YELLOW : ChatColor.RED;
+ return startingColor.toString() + toAskedUnit + ChatColor.GOLD + org.yatopiamc.yatopia.server.util.TimeUtils.getFriendlyName( unit );
+ }
+ // Yatopia end
}