Files
Purpur/patches/server/0111-Disable-mojang-profiler.patch
2020-03-29 15:13:05 -05:00

175 lines
7.4 KiB
Diff

From ef7345e31dc84acd1782a91f574308569c5a3469 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 26 Mar 2020 12:48:02 -0500
Subject: [PATCH] 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 487a9149d8..5f6852e4ba 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<TickTas
private final MojangStatisticsGenerator snooper = new MojangStatisticsGenerator("server", this, SystemUtils.getMonotonicMillis());
public File universe;
private final List<Runnable> 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();
@@ -1390,6 +1390,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
String s1 = (String) Optional.ofNullable(optionset.valueOf("world")).orElse(dedicatedserversettings.getProperties().levelName);
final DedicatedServer dedicatedserver = new DedicatedServer(optionset, dedicatedserversettings, DataConverterRegistry.a(), yggdrasilauthenticationservice, minecraftsessionservice, gameprofilerepository, usercache, WorldLoadListenerLogger::new, s1);
+ if (optionset.has("enableProfiler") || optionset.nonOptionArguments().contains("enableProfiler")) dedicatedserver.methodProfiler = new GameProfiler(dedicatedserver::getTickCount); // Purpur
+
/*
dedicatedserver.i((String) optionset.valueOf(optionspec7));
dedicatedserver.setPort((Integer) optionset.valueOf(optionspec10));
@@ -1815,6 +1817,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
public abstract boolean a(EnumGamemode enumgamemode, boolean flag, int i);
+ public int getTickCount() { return ak(); } // Purpur - OBFHELPER
public int ak() {
return this.ticks;
}
diff --git a/src/main/java/net/pl3x/purpur/GameProfilerNoop.java b/src/main/java/net/pl3x/purpur/GameProfilerNoop.java
new file mode 100644
index 0000000000..b32a5418f2
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/GameProfilerNoop.java
@@ -0,0 +1,68 @@
+package net.pl3x.purpur;
+
+import net.minecraft.server.GameProfiler;
+import net.minecraft.server.MethodProfilerResults;
+import net.minecraft.server.MethodProfilerResultsEmpty;
+
+import java.util.function.IntSupplier;
+import java.util.function.Supplier;
+
+public class GameProfilerNoop extends GameProfiler {
+ private final EmptyProfiler profiler = new EmptyProfiler();
+
+ public GameProfilerNoop(IntSupplier tickCount) {
+ super(tickCount);
+ }
+
+ public GameProfiler.a d() {
+ return this.profiler;
+ }
+
+ @Override
+ public void a() {
+ }
+
+ @Override
+ public void b() {
+ }
+
+ @Override
+ public void enter(String s) {
+ }
+
+ @Override
+ public void a(Supplier<String> supplier) {
+ }
+
+ @Override
+ public void exit() {
+ }
+
+ @Override
+ public void exitEnter(String s) {
+ }
+
+ @Override
+ public void c(String s) {
+ }
+
+ @Override
+ public void c(Supplier<String> 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