117 lines
4.9 KiB
Diff
117 lines
4.9 KiB
Diff
|
From da24e9809c9ee2254da026445735ee3dbe74aaf7 Mon Sep 17 00:00:00 2001
|
||
|
From: virtualWinter <winter@catmc.club>
|
||
|
Date: Fri, 21 Jul 2023 07:10:18 +0300
|
||
|
Subject: [PATCH] tps command
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||
|
index b400ce04..66334c12 100644
|
||
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||
|
@@ -117,6 +117,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs
|
||
|
public int autosavePeriod;
|
||
|
// CraftBukkit end
|
||
|
|
||
|
+
|
||
|
public MinecraftServer(OptionSet options, Proxy proxy, File file1) {
|
||
|
io.netty.util.ResourceLeakDetector.setEnabled( false ); // Spigot - disable
|
||
|
this.e = proxy;
|
||
|
diff --git a/src/main/java/org/spigotmc/TicksPerSecondCommand.java b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
|
||
|
index 21fd7efc..eef3e0aa 100644
|
||
|
--- a/src/main/java/org/spigotmc/TicksPerSecondCommand.java
|
||
|
+++ b/src/main/java/org/spigotmc/TicksPerSecondCommand.java
|
||
|
@@ -1,14 +1,15 @@
|
||
|
package org.spigotmc;
|
||
|
|
||
|
+import net.minecraft.server.MinecraftServer;
|
||
|
+import org.apache.commons.lang.StringUtils;
|
||
|
+import org.bukkit.Bukkit;
|
||
|
import org.bukkit.ChatColor;
|
||
|
import org.bukkit.command.Command;
|
||
|
import org.bukkit.command.CommandSender;
|
||
|
|
||
|
-public class TicksPerSecondCommand extends Command
|
||
|
-{
|
||
|
+public class TicksPerSecondCommand extends Command {
|
||
|
|
||
|
- public TicksPerSecondCommand(String name)
|
||
|
- {
|
||
|
+ public TicksPerSecondCommand(String name) {
|
||
|
super( name );
|
||
|
this.description = "Gets the current ticks per second for the server";
|
||
|
this.usageMessage = "/tps";
|
||
|
@@ -16,28 +17,55 @@ public class TicksPerSecondCommand extends Command
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
- public boolean execute(CommandSender sender, String currentAlias, String[] args)
|
||
|
- {
|
||
|
- if ( !testPermission( sender ) )
|
||
|
- {
|
||
|
+ public boolean execute(CommandSender sender, String currentAlias, String[] args) {
|
||
|
+ if ( !testPermission( sender ) ) {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
- // PaperSpigot start - Further improve tick handling
|
||
|
- double[] tps = org.bukkit.Bukkit.spigot().getTPS();
|
||
|
- String[] tpsAvg = new String[tps.length];
|
||
|
+ if (sender.hasPermission("bukkit.command.tps.advanced")) {
|
||
|
+ double[] tps = org.bukkit.Bukkit.spigot().getTPS();
|
||
|
+ String[] tpsAvg = new String[tps.length];
|
||
|
|
||
|
- for ( int i = 0; i < tps.length; i++) {
|
||
|
- tpsAvg[i] = format( tps[i] );
|
||
|
- }
|
||
|
- sender.sendMessage( ChatColor.GOLD + "TPS from last 1m, 5m, 15m: " + org.apache.commons.lang.StringUtils.join(tpsAvg, ", "));
|
||
|
+ for (int i = 0; i < tps.length; i++) {
|
||
|
+ tpsAvg[i] = formatAdvancedTps(tps[i]);
|
||
|
+ }
|
||
|
+
|
||
|
+ sender.sendMessage(ChatColor.GOLD + "TPS from last 1m, 5m, 15m: " + StringUtils.join(tpsAvg, ", "));
|
||
|
+ //sender.sendMessage(ChatColor.GOLD + "Full tick: " + formatTickTime(MinecraftServer.getServer().lastTickTime) + " ms");
|
||
|
+ sender.sendMessage(ChatColor.GOLD + "Online players: " + ChatColor.GREEN + Bukkit.getOnlinePlayers().size() + "/" + Bukkit.getMaxPlayers());
|
||
|
+ } else {
|
||
|
+ double tps = Bukkit.spigot().getTPS()[1];
|
||
|
+
|
||
|
+ StringBuilder tpsBuilder = new StringBuilder();
|
||
|
+
|
||
|
+ tpsBuilder.append(ChatColor.GOLD).append("Server performance: ");
|
||
|
+ tpsBuilder.append(formatBasicTps(tps)).append(ChatColor.GOLD).append("/20.0");
|
||
|
+ tpsBuilder.append(" [").append(tps > 18.0 ? ChatColor.GREEN : tps > 16.0 ? ChatColor.YELLOW : ChatColor.RED);
|
||
|
+
|
||
|
+ int i = 0;
|
||
|
+
|
||
|
+ for (; i < Math.round(tps); i++) {
|
||
|
+ tpsBuilder.append("|");
|
||
|
+ }
|
||
|
|
||
|
+ tpsBuilder.append(ChatColor.DARK_GRAY);
|
||
|
+
|
||
|
+ for (; i < 20; i++) {
|
||
|
+ tpsBuilder.append("|");
|
||
|
+ }
|
||
|
+ }
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
- private static String format(double tps) // PaperSpigot - made static
|
||
|
- {
|
||
|
- return ( ( tps > 18.0 ) ? ChatColor.GREEN : ( tps > 16.0 ) ? ChatColor.YELLOW : ChatColor.RED ).toString()
|
||
|
- + ( ( tps > 20.0 ) ? "*" : "" ) + Math.min( Math.round( tps * 100.0 ) / 100.0, 20.0 );
|
||
|
+ private static String formatTickTime(double time) {
|
||
|
+ return (time < 40.0D ? ChatColor.GREEN : time < 60.0D ? ChatColor.YELLOW : ChatColor.RED).toString() + Math.round(time * 10.0D) / 10.0D;
|
||
|
+ }
|
||
|
+
|
||
|
+ private static String formatAdvancedTps(double tps) {
|
||
|
+ return (tps > 18.0 ? ChatColor.GREEN : tps > 16.0 ? ChatColor.YELLOW : ChatColor.RED).toString() + Math.min(Math.round(tps * 100.0D) / 100.0, 20.0);
|
||
|
+ }
|
||
|
+
|
||
|
+ private String formatBasicTps(double tps) {
|
||
|
+ return (tps > 18.0 ? ChatColor.GREEN : tps > 16.0 ? ChatColor.YELLOW : ChatColor.RED).toString() + Math.min(Math.round(tps * 10.0D) / 10.0D, 20.0D);
|
||
|
}
|
||
|
}
|
||
|
--
|
||
|
2.41.0.windows.1
|
||
|
|