diff --git a/src/main/java/moe/yushi/authlibinjector/AuthlibInjector.java b/src/main/java/moe/yushi/authlibinjector/AuthlibInjector.java index 97bd342..07c9d1d 100644 --- a/src/main/java/moe/yushi/authlibinjector/AuthlibInjector.java +++ b/src/main/java/moe/yushi/authlibinjector/AuthlibInjector.java @@ -261,7 +261,7 @@ public final class AuthlibInjector { URLProcessor urlProcessor = new URLProcessor(createFilters(config), new DefaultURLRedirector(config)); ClassTransformer transformer = new ClassTransformer(); - transformer.ignores.addAll(Config.ignoredPackages); + transformer.setIgnores(Config.ignoredPackages); if (Config.dumpClass) { transformer.listeners.add(new DumpClassListener(Paths.get("").toAbsolutePath())); diff --git a/src/main/java/moe/yushi/authlibinjector/Config.java b/src/main/java/moe/yushi/authlibinjector/Config.java index bace476..a5293fe 100644 --- a/src/main/java/moe/yushi/authlibinjector/Config.java +++ b/src/main/java/moe/yushi/authlibinjector/Config.java @@ -107,39 +107,6 @@ public final class Config { "com.sun.", "sun.", "net.java.", - - "com.google.", - "com.ibm.", - "com.jcraft.jogg.", - "com.jcraft.jorbis.", - "com.oracle.", - "com.paulscode.", - - "org.GNOME.", - "org.apache.", - "org.graalvm.", - "org.jcp.", - "org.json.", - "org.lwjgl.", - "com.mojang.blaze3d.", - "com.mojang.brigadier.", - "com.mojang.datafixers.", - "com.mojang.serialization.", - "org.objectweb.asm.", - "org.slf4j.", - "org.w3c.", - "org.xml.", - "org.yaml.snakeyaml.", - - "gnu.trove.", - "io.netty.", - "it.unimi.dsi.fastutil.", - "javassist.", - "jline.", - "joptsimple.", - "oracle.", - "oshi.", - "paulscode.", }; private static void initIgnoredPackages() { diff --git a/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java b/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java index a1a57e6..7e484aa 100644 --- a/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java +++ b/src/main/java/moe/yushi/authlibinjector/transform/ClassTransformer.java @@ -27,11 +27,10 @@ import java.lang.instrument.ClassFileTransformer; import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; @@ -43,8 +42,8 @@ public class ClassTransformer implements ClassFileTransformer { public final List units = new CopyOnWriteArrayList<>(); public final List listeners = new CopyOnWriteArrayList<>(); - public final Set ignores = Collections.newSetFromMap(new ConcurrentHashMap<>()); public final PerformanceMetrics performanceMetrics = new PerformanceMetrics(); + private String[] ignores = new String[0]; private class TransformHandle { @@ -224,8 +223,8 @@ public class ClassTransformer implements ClassFileTransformer { long t0 = System.nanoTime(); String className = internalClassName.replace('/', '.'); - for (String prefix : ignores) { - if (className.startsWith(prefix)) { + for (String ignore : ignores) { + if (className.startsWith(ignore)) { listeners.forEach(it -> it.onClassLoading(loader, className, classfileBuffer, Collections.emptyList())); long t1 = System.nanoTime(); @@ -281,4 +280,8 @@ public class ClassTransformer implements ClassFileTransformer { } return constants; } + + public void setIgnores(Collection newIgnores) { + ignores = newIgnores.toArray(ignores); + } }