Yatopia/patches/server/0006-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
index c929c3ecb2a8c9056cad0418b2266b47bd0bbcaf..a342a13f387b4079bfc983d500a0fde534891196 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -931,6 +931,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
@@ -1002,7 +1004,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;
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
Updated Upstream and Sidestream(s) (Tuinity/EMC/Purpur/AirplaneLite) 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: de6c239 Merge branch 'master' of https://github.com/Spottedleaf/Tuinity into ver/1.16.4 cc34294 Copy passenger list in enderTeleportTo 8c5d945 Improve abnormal server shutdown process 0ae7e67 Do not load chunks during a crash report 0fbcf78 Fix small issue with handling of step height in colliding 4722d59 Updated Upstream (Paper) EMC Changes: 1d0cc885 Updated Paper Purpur Changes: 3776636 Implement TPSBar 258ae07 Updated Upstream (Paper) c51e391 Add back --zero-commit ef0b93d Rebuild patches 0ae637c Option for chests to open even with a solid block on top ce4ab83 Phantom flames on swoop 5e2d697 Don't apply potion effects on load either bbe5a58 Don't apply potion effect to wolves during worldgen 06c4f83 Get max health attribute even closer to vanilla 41f23a7 Updated Upstream (Tuinity) 787e35c Get max health equations for horse types closer to vanilla aed0867 Fix CraftSound backwards compatibility dfabf51 Start of the configurable base attributes a1fa221 Updated Upstream (Paper) 0174fcd Configurable default wolf collar color (#116) da48e0a [ci-skip] fix comment in last patch 65fde28 Add option for using milk to cure wolves 38efb4d Use a ThreadLocal SimpleDateFormat for CriterionProgress deserialization 4e6e1ff Revert "Fix concurrency issue with CriterionProgress deserialization" 55bde37 Fix concurrency issue with CriterionProgress deserialization b4be9ab Small fixes to rabid wolves patch 5943978 Updated Upstream (Paper) ac34692 Chance to spawn wolves as "rabid" (#114) 1b40f87 Updated Upstream (Paper) 69790ff Alphabetize in-game /plugins list AirplaneLite Changes: 76810f1 Updated Upstream (Tuinity)
2020-12-13 16:18:57 +01:00
index ea882b3ff0608e23852e48e7aa10f364fc8a2353..248605cc533e4cad4b75b92b1d88ef6aa03f4c5c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
Updated Upstream and Sidestream(s) (Tuinity/EMC/Purpur/AirplaneLite) 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: de6c239 Merge branch 'master' of https://github.com/Spottedleaf/Tuinity into ver/1.16.4 cc34294 Copy passenger list in enderTeleportTo 8c5d945 Improve abnormal server shutdown process 0ae7e67 Do not load chunks during a crash report 0fbcf78 Fix small issue with handling of step height in colliding 4722d59 Updated Upstream (Paper) EMC Changes: 1d0cc885 Updated Paper Purpur Changes: 3776636 Implement TPSBar 258ae07 Updated Upstream (Paper) c51e391 Add back --zero-commit ef0b93d Rebuild patches 0ae637c Option for chests to open even with a solid block on top ce4ab83 Phantom flames on swoop 5e2d697 Don't apply potion effects on load either bbe5a58 Don't apply potion effect to wolves during worldgen 06c4f83 Get max health attribute even closer to vanilla 41f23a7 Updated Upstream (Tuinity) 787e35c Get max health equations for horse types closer to vanilla aed0867 Fix CraftSound backwards compatibility dfabf51 Start of the configurable base attributes a1fa221 Updated Upstream (Paper) 0174fcd Configurable default wolf collar color (#116) da48e0a [ci-skip] fix comment in last patch 65fde28 Add option for using milk to cure wolves 38efb4d Use a ThreadLocal SimpleDateFormat for CriterionProgress deserialization 4e6e1ff Revert "Fix concurrency issue with CriterionProgress deserialization" 55bde37 Fix concurrency issue with CriterionProgress deserialization b4be9ab Small fixes to rabid wolves patch 5943978 Updated Upstream (Paper) ac34692 Chance to spawn wolves as "rabid" (#114) 1b40f87 Updated Upstream (Paper) 69790ff Alphabetize in-game /plugins list AirplaneLite Changes: 76810f1 Updated Upstream (Tuinity)
2020-12-13 16:18:57 +01:00
@@ -2462,4 +2462,6 @@ public final class CraftServer implements Server {
return getServer().lagging;
}
// Purpur 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
index 3c7b9a6d24e064f9c1ec5fb6d52f42627944d7fa..dd44c1f3721fb9c7233417150a073b79465c0480 100644
--- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java
+++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
@@ -34,6 +34,10 @@ public class TicksPerSecondCommand extends Command
tpsAvg[i] = format( tps[i] );
}
sender.sendMessage(ChatColor.GOLD + "TPS from last 5s, 1m, 5m, 15m: " + org.apache.commons.lang.StringUtils.join(tpsAvg, ", ")); // Purpur
+ // 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) {
@@ -52,4 +56,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
}