From b68049208a63b974f2cea34d8c8ab3770a9e110c Mon Sep 17 00:00:00 2001 From: Haowei Wen Date: Mon, 12 Jun 2023 01:49:53 +0800 Subject: [PATCH] Fix logging is broken in Minecraft 1.20 --- .../transform/support/AuthlibLogInterceptor.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/moe/yushi/authlibinjector/transform/support/AuthlibLogInterceptor.java b/src/main/java/moe/yushi/authlibinjector/transform/support/AuthlibLogInterceptor.java index a09836f..c5a1042 100644 --- a/src/main/java/moe/yushi/authlibinjector/transform/support/AuthlibLogInterceptor.java +++ b/src/main/java/moe/yushi/authlibinjector/transform/support/AuthlibLogInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Haowei Wen and contributors + * Copyright (C) 2023 Haowei Wen and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -128,7 +128,18 @@ public class AuthlibLogInterceptor implements TransformUnit { Array.set(appenderRefs, 0, appenderRef); Object loggerConfig; - { + try { + Object builder = classLoggerConfig.getDeclaredMethod("newBuilder").invoke(null); + Class classBuilder = cl.loadClass("org.apache.logging.log4j.core.config.LoggerConfig$Builder"); + classBuilder.getMethod("withConfig", classConfiguration).invoke(builder, configuration); + classBuilder.getMethod("withAdditivity", boolean.class).invoke(builder, false); + classBuilder.getMethod("withLevel", classLevel).invoke(builder, classLevel.getDeclaredField("ALL").get(null)); + classBuilder.getMethod("withLoggerName", String.class).invoke(builder, loggerName); + classBuilder.getMethod("withIncludeLocation", String.class).invoke(builder, authlibPackageName); + classBuilder.getMethod("withRefs", appenderRefs.getClass()).invoke(builder, appenderRefs); + loggerConfig = classBuilder.getMethod("build").invoke(builder); + } catch (NoSuchMethodException ex) { + ex.printStackTrace(); Map values = new HashMap<>(); values.put("additivity", false); values.put("level", classLevel.getDeclaredField("ALL").get(null));