CraftChatMessage.fromComponent fails to take into account the style of TranslatableComponent args, causing any styling on args to be completely ignored. Fixing this is relatively simple, however would cause behavior to deviate from upstream. This commit will fix the coloring in messages logged through MinecraftServer.LOGGER by simply using Adventure's legacy text serializer, which properly serializes TranslatableComponents and their arguments. Note that this doesn't do anything about the underlying issue of CraftChatMessage.fromComponent improperly serializing TranslatableComponents.
88 lines
4.2 KiB
Diff
88 lines
4.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Shane Freeder <theboyetronic@gmail.com>
|
|
Date: Thu, 18 Feb 2021 20:23:28 +0000
|
|
Subject: [PATCH] misc debugging dumps
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/util/TraceUtil.java b/src/main/java/io/papermc/paper/util/TraceUtil.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..2d5494d2813b773e60ddba6790b750a9a08f21f8
|
|
--- /dev/null
|
|
+++ b/src/main/java/io/papermc/paper/util/TraceUtil.java
|
|
@@ -0,0 +1,18 @@
|
|
+package io.papermc.paper.util;
|
|
+
|
|
+import org.bukkit.Bukkit;
|
|
+
|
|
+public final class TraceUtil {
|
|
+
|
|
+ public static void dumpTraceForThread(Thread thread, String reason) {
|
|
+ Bukkit.getLogger().warning(thread.getName() + ": " + reason);
|
|
+ StackTraceElement[] trace = thread.getStackTrace();
|
|
+ for (StackTraceElement traceElement : trace) {
|
|
+ Bukkit.getLogger().warning("\tat " + traceElement);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public static void dumpTraceForThread(String reason) {
|
|
+ new Throwable(reason).printStackTrace();
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 952d5c7c3324377e0036b9d7e524484cb581e5b2..a116156236caa22d3ee13b5a56f4ed3c8d013f37 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -14,6 +14,7 @@ import io.netty.buffer.ByteBufOutputStream;
|
|
import io.netty.buffer.Unpooled;
|
|
import io.papermc.paper.adventure.PaperAdventure; // Paper
|
|
import io.papermc.paper.event.entity.EntityMoveEvent;
|
|
+import io.papermc.paper.util.TraceUtil;
|
|
import it.unimi.dsi.fastutil.longs.LongIterator;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.BufferedWriter;
|
|
@@ -856,6 +857,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
// CraftBukkit start
|
|
private boolean hasStopped = false;
|
|
public volatile boolean hasFullyShutdown = false; // Paper
|
|
+ private boolean hasLoggedStop = false; // Paper
|
|
private final Object stopLock = new Object();
|
|
public final boolean hasStopped() {
|
|
synchronized (stopLock) {
|
|
@@ -870,6 +872,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
if (hasStopped) return;
|
|
hasStopped = true;
|
|
}
|
|
+ if (!hasLoggedStop && isDebugging()) TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
|
// Paper start - kill main thread, and kill it hard
|
|
shutdownThread = Thread.currentThread();
|
|
org.spigotmc.WatchdogThread.doStop(); // Paper
|
|
@@ -986,6 +989,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
|
public void safeShutdown(boolean flag, boolean isRestarting) {
|
|
this.isRunning = false;
|
|
this.isRestarting = isRestarting;
|
|
+ this.hasLoggedStop = true; // Paper
|
|
+ if (isDebugging()) TraceUtil.dumpTraceForThread("Server stopped"); // Paper
|
|
if (flag) {
|
|
try {
|
|
this.serverThread.join();
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index bc8cb33d2d41deeeecc7b8740ef49d7f79076fcc..41d9f45908d8ef9b7d956aba14973c08832d4f1f 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -18,6 +18,7 @@ import com.mojang.serialization.Lifecycle;
|
|
import io.netty.buffer.ByteBuf;
|
|
import io.netty.buffer.ByteBufOutputStream;
|
|
import io.netty.buffer.Unpooled;
|
|
+import io.papermc.paper.util.TraceUtil;
|
|
import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.File;
|
|
@@ -941,6 +942,7 @@ public final class CraftServer implements Server {
|
|
plugin.getDescription().getName(),
|
|
"This plugin is not properly shutting down its async tasks when it is being reloaded. This may cause conflicts with the newly loaded version of the plugin"
|
|
));
|
|
+ if (console.isDebugging()) TraceUtil.dumpTraceForThread(worker.getThread(), "still running"); // Paper
|
|
}
|
|
loadPlugins();
|
|
enablePlugins(PluginLoadOrder.STARTUP);
|