mirror of
https://github.com/unmojang/authlib-injector.git
synced 2025-10-03 16:21:28 -04:00
fixes
This commit is contained in:
parent
dff095e2cd
commit
1731f0b0cb
@ -22,15 +22,23 @@ public final class AuthlibInjector {
|
|||||||
private static final String[] nonTransformablePackages = new String[] { "java.", "javax.", "com.sun.",
|
private static final String[] nonTransformablePackages = new String[] { "java.", "javax.", "com.sun.",
|
||||||
"com.oracle.", "jdk.", "sun.", "org.apache.", "com.google.", "oracle.", "com.oracle.", "com.paulscode.",
|
"com.oracle.", "jdk.", "sun.", "org.apache.", "com.google.", "oracle.", "com.oracle.", "com.paulscode.",
|
||||||
"io.netty.", "org.lwjgl.", "net.java.", "org.w3c.", "javassist.", "org.xml.", "org.jcp.", "paulscode.",
|
"io.netty.", "org.lwjgl.", "net.java.", "org.w3c.", "javassist.", "org.xml.", "org.jcp.", "paulscode.",
|
||||||
"com.ibm.", "joptsimple." };
|
"com.ibm.", "joptsimple.", "org.to2mbn.authlibinjector." };
|
||||||
|
|
||||||
private AuthlibInjector() {}
|
private AuthlibInjector() {}
|
||||||
|
|
||||||
|
private static boolean booted = false;
|
||||||
|
|
||||||
public static void log(String message, Object... args) {
|
public static void log(String message, Object... args) {
|
||||||
System.err.println("[authlib-injector] " + MessageFormat.format(message, args));
|
System.err.println("[authlib-injector] " + MessageFormat.format(message, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void bootstrap(Consumer<ClassFileTransformer> transformerRegistry) {
|
public static void bootstrap(Consumer<ClassFileTransformer> transformerRegistry) {
|
||||||
|
if (booted) {
|
||||||
|
log("already booted, skipping");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
booted = true;
|
||||||
|
|
||||||
Optional<InjectorConfig> optionalConfig = configure();
|
Optional<InjectorConfig> optionalConfig = configure();
|
||||||
if (!optionalConfig.isPresent()) {
|
if (!optionalConfig.isPresent()) {
|
||||||
log("no config is found, exiting");
|
log("no config is found, exiting");
|
||||||
|
@ -3,16 +3,12 @@ package org.to2mbn.authlibinjector.tweaker;
|
|||||||
import static org.to2mbn.authlibinjector.AuthlibInjector.bootstrap;
|
import static org.to2mbn.authlibinjector.AuthlibInjector.bootstrap;
|
||||||
import static org.to2mbn.authlibinjector.AuthlibInjector.log;
|
import static org.to2mbn.authlibinjector.AuthlibInjector.log;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.instrument.ClassFileTransformer;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.minecraft.launchwrapper.ITweaker;
|
import net.minecraft.launchwrapper.ITweaker;
|
||||||
import net.minecraft.launchwrapper.LaunchClassLoader;
|
import net.minecraft.launchwrapper.LaunchClassLoader;
|
||||||
|
|
||||||
public class AuthlibInjectorTweaker implements ITweaker {
|
public class AuthlibInjectorTweaker implements ITweaker {
|
||||||
|
|
||||||
static List<ClassFileTransformer> transformers = new ArrayList<>();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile) {}
|
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile) {}
|
||||||
|
|
||||||
@ -22,7 +18,7 @@ public class AuthlibInjectorTweaker implements ITweaker {
|
|||||||
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
|
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
|
||||||
try {
|
try {
|
||||||
log("launched from tweaker");
|
log("launched from tweaker");
|
||||||
bootstrap(transformers::add);
|
bootstrap(TweakerTransformerAdapter.transformers::add);
|
||||||
launchClassLoader.registerTransformer(TweakerTransformerAdapter.class.getName());
|
launchClassLoader.registerTransformer(TweakerTransformerAdapter.class.getName());
|
||||||
} finally {
|
} finally {
|
||||||
Thread.currentThread().setContextClassLoader(originalCtxCl);
|
Thread.currentThread().setContextClassLoader(originalCtxCl);
|
||||||
|
@ -3,15 +3,19 @@ package org.to2mbn.authlibinjector.tweaker;
|
|||||||
import static org.to2mbn.authlibinjector.AuthlibInjector.log;
|
import static org.to2mbn.authlibinjector.AuthlibInjector.log;
|
||||||
import java.lang.instrument.ClassFileTransformer;
|
import java.lang.instrument.ClassFileTransformer;
|
||||||
import java.lang.instrument.IllegalClassFormatException;
|
import java.lang.instrument.IllegalClassFormatException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import net.minecraft.launchwrapper.IClassTransformer;
|
import net.minecraft.launchwrapper.IClassTransformer;
|
||||||
import net.minecraft.launchwrapper.Launch;
|
import net.minecraft.launchwrapper.Launch;
|
||||||
|
|
||||||
public class TweakerTransformerAdapter implements IClassTransformer {
|
public class TweakerTransformerAdapter implements IClassTransformer {
|
||||||
|
|
||||||
|
public static List<ClassFileTransformer> transformers = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] transform(String name, String transformedName, byte[] classBuffer) {
|
public byte[] transform(String name, String transformedName, byte[] classBuffer) {
|
||||||
String internalClassName = name.replace('.', '/');
|
String internalClassName = name.replace('.', '/');
|
||||||
for (ClassFileTransformer transformer : AuthlibInjectorTweaker.transformers) {
|
for (ClassFileTransformer transformer : transformers) {
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
try {
|
try {
|
||||||
result = transformer.transform(Launch.classLoader, internalClassName, null, null, classBuffer);
|
result = transformer.transform(Launch.classLoader, internalClassName, null, null, classBuffer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user