Files
Purpur/patches/server/0124-YAPFA-Disable-mojang-profiler.patch
William Blake Galbreath 6db6aae624 Updated Upstream (Paper & Tuinity)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
f65f95ce3 Do not let the server load chunks from newer versions
1799ef140 Apply 1.16's light optimizations to 1.15.2 too
5a28de666 Further optimize chunk light prioritization
4e364423e Fix deadlock issue with watchdog stopping
82e048ebc Remove ability to disable async chunks unless single core cpu
b317f0dc4 [1.15] Fix off by one error for scheduling block ticks (#4013)
51741a180 [1.15] Tighten logic for handling target tick times in tick scheduler (#4011)
5657364b4 Fix Light Prioritization Issues
013374629 Fix AdvancementDataPlayer leak due from quitting early in login
74231d422 [1.15] Move range check for block placing up (#3918)
48ea17fa1 Optimize the advancement data player iteration to be O(N) rather than O(N^2)
be4d74d93 Fix Explosion location - Fixes #3574
31e5f6688 [1.15] Optimize NetworkManager exception handling (#3820)
2248fffcd Clean up duplicated GameProfile Properties
49491f32d Fix Player Profile textures being duplicated - Fixes #3667
3fc989992 [1.15] Fix MobGoals#getAllGoals not actually returning all goals (#3671)
1d1c0561f Manually inline PooledBlockPosition#d(int, int, int)
5fc45f4db Revert recent changes around player skulls using user cache

Tuinity Changes:
5794d12 Fix up lock handling for UserCache
2020-08-16 10:19:54 -05:00

176 lines
7.3 KiB
Diff

From 4389a089cff8d154ad33e185b1e3537558bd03da Mon Sep 17 00:00:00 2001
From: tr7zw <tr7zw@live.de>
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 e457909961..00ef619260 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();
@@ -1530,6 +1530,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));
@@ -1957,6 +1959,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 b007840a56..1916bfb5d2 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -152,6 +152,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 e81beea7fa..5c3536b26b 100644
--- a/src/main/resources/purpur.lang
+++ b/src/main/resources/purpur.lang
@@ -1,5 +1,6 @@
{
"cannot.ride.mob": "You cannot mount that mob",
+ "commands.purpur.debug.disabled": "The debug profiler is disabled",
"commands.purpur.ping": "§a%s's ping is %sms",
"idle.timeout.broadcast.away": "§e§o%s is now AFK",
"idle.timeout.broadcast.back": "§e§o%s is no longer AFK"
--
2.26.2