From fb456b6e4d20cfe7f567d1210efcb816e8b90611 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Thu, 5 Mar 2020 23:08:01 +0100 Subject: [PATCH] YAPFA - Disable mojang profiler --- .../net/minecraft/server/CommandDebug.java | 5 ++ .../net/minecraft/server/MinecraftServer.java | 5 +- .../net/pl3x/purpur/GameProfilerNoop.java | 68 +++++++++++++++++++ .../java/org/bukkit/craftbukkit/Main.java | 2 + src/main/resources/purpur.lang | 1 + 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/pl3x/purpur/GameProfilerNoop.java diff --git a/src/main/java/net/minecraft/server/CommandDebug.java b/src/main/java/net/minecraft/server/CommandDebug.java index f0d72ea39d..e38a684060 100644 --- a/src/main/java/net/minecraft/server/CommandDebug.java +++ b/src/main/java/net/minecraft/server/CommandDebug.java @@ -22,6 +22,7 @@ public class CommandDebug { private static final Logger LOGGER = LogManager.getLogger(); private static final SimpleCommandExceptionType b = new SimpleCommandExceptionType(new ChatMessage("commands.debug.notRunning", new Object[0])); private static final SimpleCommandExceptionType c = new SimpleCommandExceptionType(new ChatMessage("commands.debug.alreadyRunning", new Object[0])); + private static final SimpleCommandExceptionType disabled = new SimpleCommandExceptionType(new ChatMessage("commands.purpur.debug.disabled")); // Purpur @Nullable private static final FileSystemProvider d = (FileSystemProvider) FileSystemProvider.installedProviders().stream().filter((filesystemprovider) -> { return filesystemprovider.getScheme().equalsIgnoreCase("jar"); @@ -43,6 +44,8 @@ public class CommandDebug { MinecraftServer minecraftserver = commandlistenerwrapper.getServer(); GameProfiler gameprofiler = minecraftserver.getMethodProfiler(); + if (gameprofiler instanceof net.pl3x.purpur.GameProfilerNoop) throw CommandDebug.disabled.create(); // Purpur + if (gameprofiler.d().a()) { throw CommandDebug.c.create(); } else { @@ -56,6 +59,8 @@ public class CommandDebug { MinecraftServer minecraftserver = commandlistenerwrapper.getServer(); GameProfiler gameprofiler = minecraftserver.getMethodProfiler(); + if (gameprofiler instanceof net.pl3x.purpur.GameProfilerNoop) throw CommandDebug.disabled.create(); // Purpur + if (!gameprofiler.d().a()) { throw CommandDebug.b.create(); } else { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 914eb19b6e..c69fbf2548 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -80,7 +80,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant tickables = Lists.newArrayList(); - private final GameProfiler methodProfiler = new GameProfiler(this::ak); + protected GameProfiler methodProfiler = new net.pl3x.purpur.GameProfilerNoop(this::getTickCount); // Purpur private ServerConnection serverConnection; public final WorldLoadListenerFactory worldLoadListenerFactory; private final ServerPing serverPing = new ServerPing(); @@ -1397,6 +1397,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant supplier) { + } + + @Override + public void exit() { + } + + @Override + public void exitEnter(String s) { + } + + @Override + public void c(String s) { + } + + @Override + public void c(Supplier supplier) { + } + + static class EmptyProfiler implements GameProfiler.a { + @Override + public boolean a() { // isEnabled + return false; + } + + @Override + public MethodProfilerResults b() { // disable + return MethodProfilerResultsEmpty.a; // empty + } + + @Override + public void d() { // enable + } + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java index 7b7e1475b3..1136a0a26d 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -144,6 +144,8 @@ public class Main { .ofType(File.class) .defaultsTo(new File("purpur.yml")) .describedAs("Yml file"); + + acceptsAll(asList("enableProfiler"), "Enables the vanilla profiler"); // Purpur end // Paper start diff --git a/src/main/resources/purpur.lang b/src/main/resources/purpur.lang index 63a5ad0037..120b10b9a7 100644 --- a/src/main/resources/purpur.lang +++ b/src/main/resources/purpur.lang @@ -1,4 +1,5 @@ { + "commands.purpur.debug.disabled": "The debug profiler is disabled", "commands.purpur.mspt": "§6Server tick times §e(§7avg§e/§7min§e/§7max§e)§6 from last 5s§7,§6 10s§7,§6 1m§e:", "commands.purpur.mspt.times": "§6◴ %s§7/%s§7/%s§e, %s§7/%s§7/%s§e, %s§7/%s§7/%s", "commands.purpur.ping": "§a%s's ping is %sms", -- 2.24.0